在Ubuntu上部署Node.js应用可以通过以下步骤完成。以下是一个基本的指南,假设你已经有一个Node.js应用并且想要在生产环境中运行它。
首先,确保你的系统包是最新的:
sudo apt update
sudo apt upgrade -y
如果你还没有安装Node.js和npm,可以使用以下命令来安装:
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs
这里使用的是Node.js 14.x版本,你可以根据需要选择其他版本。
PM2是一个流行的Node.js进程管理器,可以帮助你管理和保持应用在线。安装PM2:
sudo npm install pm2 -g
你可以使用scp、rsync或者通过Git来上传你的应用到服务器。这里假设你已经有一个应用目录在本地。
如果你的应用需要特定的环境变量,可以在服务器上设置它们。例如,创建一个.env文件:
nano /path/to/your/app/.env
然后在文件中添加你的环境变量:
PORT=3000
NODE_ENV=production
在你的应用目录中运行以下命令来安装所有依赖:
npm install
使用PM2启动你的应用:
pm2 start app.js --name "my-app"
这里app.js是你的入口文件,my-app是应用的名称。
为了让你的应用在服务器重启后自动启动,可以使用PM2的startup脚本:
pm2 startup
按照提示完成配置。
你可以使用PM2的命令来监控和管理你的应用:
pm2 list
pm2 logs my-app
pm2 stop my-app
pm2 restart my-app
如果你希望通过HTTP/HTTPS访问你的应用,可以配置Nginx作为反向代理。首先安装Nginx:
sudo apt install nginx -y
然后配置Nginx:
sudo nano /etc/nginx/sites-available/my-app
添加以下内容:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
启用配置:
sudo ln -s /etc/nginx/sites-available/my-app /etc/nginx/sites-enabled
sudo nginx -t
sudo systemctl restart nginx
你可以使用Let’s Encrypt来配置SSL证书:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com
按照提示完成配置。
通过以上步骤,你应该能够在Ubuntu上成功部署你的Node.js应用。