内容 /指南/节点.js

部署节点Js应用程序 15分钟后

没有多克,没有帕斯,没有魔法。 节点(Node.js plus systemd)和Nginx(Nginx)是一叠活下来的回波,相撞和交通——你可以读出全部.

1. 安装节点.js

apt update && apt install -y curl
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
apt install -y nodejs
node --version

2. 创建应用程序用户

永远不要将网络应用程序作为根运行 。 一个单独的用户会限制如果应用程序曾经被损坏时的损坏.

adduser --system --group --home /opt/myapp app
mkdir -p /opt/myapp
chown app:app /opt/myapp

3. 上传应用程序

从您的笔记本电脑上, 有 SSH 的 rsync —— 不需要 Git 服务器 :

rsync -avz --exclude node_modules ./app/ root@YOUR_SERVER_IP:/opt/myapp/

在服务器上, 在前台安装依赖性和测试一次 :

cd /opt/myapp
sudo -u app npm ci --omit=dev
sudo -u app PORT=3000 node server.js

应用程序必须听 127.0.0.1:3000 ——不在公共界面上. Nginx将面对互联网。

4. 系统保持其活性

cat > /etc/systemd/system/myapp.service <<'EOF'
[Unit]
Description=My Node.js app
After=network-online.target
[Service]
User=app
WorkingDirectory=/opt/myapp
Environment=NODE_ENV=production
Environment=PORT=3000
ExecStart=/usr/bin/node server.js
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now myapp
systemctl status myapp

崩溃? 3秒后重新开始 重启? 它自动开始。 部署新版本? rsync,则 systemctl restart myapp.

5. 前面的Nginx语

apt install -y nginx
cat > /etc/nginx/sites-available/myapp <<'EOF'
server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
EOF
ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/myapp
nginx -t && systemctl reload nginx

然后将您的域名的 A 记录指向服务器并添加 HTTPS —— 全部行走在 Nginx 和 HTTPS 指南.

6. 检查记录

journalctl -u myapp -f --no-pager
tail -f /var/log/nginx/error.log

在日记中自动显示您的应用程序的控制台输出—— 没有日志文件可以配置 。

快速回答

我需要PM2吗?

没有 systemd为单一服务器所做的一切PM2——自动重启,启动,日志——没有额外的依赖性. PM2主要通过集群操作几个节点过程才有意义.

一个节点应用程序需要多少RAM?

一个典型的Express应用闲置在80–150 MB左右. 2GB服务器在Nginx和PostgreSQL相邻处运行舒适;构建步骤如webpack是内存-饥饿的部分,所以在CI或你的笔记本上构建.

没有故障时间我怎么部署新版本?

rsync 新的代码,然后重启——空隙在一秒以内,因为系统立即重启进程. 在零下架时,您会运行两个端口,然后在上游切换Nginx,但大多数项目从来不需要它.

这个堆放很舒适 Buran-1在€6.5/月.

相关