如何使用 Systemd 和 Nginx 部署 Node.js 应用程序
# 安装 Nginx 和 Node.js
sudo apt-get update
sudo apt-get install -y nginx nodejs
# 创建 Node.js 应用目录
mkdir -p ~/myapp/{bin,proc,logs,etc}
# 创建 Node.js 应用的启动脚本
cat << 'EOF' > ~/myapp/bin/www
#!/usr/bin/env node
console.log('Node.js app is running...')
EOF
chmod +x ~/myapp/bin/www
# 创建 Systemd 服务文件
cat << 'EOF' > ~/myapp.service
[Unit]
Description=My Node.js App
After=network.target
[Service]
Type=simple
WorkingDirectory=/home/ubuntu/myapp
ExecStart=/usr/bin/node /home/ubuntu/myapp/bin/www
Restart=on-failure
User=ubuntu
Group=ubuntu
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
EOF
# 将服务文件复制到 Systemd 目录
sudo mv ~/myapp.service /etc/systemd/system/
# 重新加载 Systemd 配置
sudo systemctl daemon-reload
# 启动服务并设置开机自启
sudo systemctl start myapp.service
sudo systemctl enable myapp.service
# 配置 Nginx 反向代理到 Node.js 应用
echo "server {
listen 80;
server_name example.com;
location / {
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header Host \$http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:3000/;
proxy_redirect off;
}
}" | sudo tee /etc/nginx/sites-available/default
# 重新加载 Nginx 配置
sudo systemctl reload nginx
这段代码展示了如何在一个基于 Ubuntu 的系统上快速部署一个 Node.js 应用,并且使用 Systemd 管理应用进程,以及 Nginx 作为反向代理。这是一个简化的示例,实际部署时需要根据具体的 Node.js 应用和服务器配置进行调整。
评论已关闭