部署 Node.js 应用涉及多个步骤,包括准备服务器环境、上传代码、安装依赖、配置环境变量、启动应用以及设置反向代理和持久化。以下是一个基本的 Node.js 应用部署教程,以部署到 Linux 服务器为例:
步骤 1: 准备服务器环境
-
购买并设置服务器:
选择一个云服务提供商(如 AWS、DigitalOcean、Linode 等),购买一个虚拟私有服务器(VPS),并记录下你的服务器 IP 地址和 root 密码。 -
SSH 登录服务器:
使用 SSH 客户端连接到你的服务器。在终端中输入以下命令:
ssh root@YOUR_SERVER_IP
替换 YOUR_SERVER_IP 为你的服务器 IP 地址。
-
安装 Node.js:
使用包管理器安装 Node.js。例如,在 Ubuntu 上,你可以使用以下命令:
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 应用,并在崩溃时自动重启它。
npm install pm2 -g
步骤 2: 上传你的 Node.js 应用
-
使用 Git:
如果你的代码托管在 Git 仓库(如 GitHub 或 GitLab),你可以直接在服务器上克隆仓库:
git clone YOUR_GIT_REPOSITORY_URL
替换 YOUR_GIT_REPOSITORY_URL 为你的 Git 仓库 URL。
-
使用 FTP/SFTP:
如果你不使用 Git,可以使用 FTP 或 SFTP 工具(如 FileZilla)将你的代码上传到服务器。
步骤 3: 安装依赖
-
进入项目目录:
使用cd命令进入你的项目目录:
cd path/to/your/project
- 安装依赖:
运行npm install安装项目依赖:
npm install
步骤 4: 配置环境变量
-
创建
.env文件:
如果你的应用使用环境变量,你可以在项目根目录下创建一个.env文件,并设置必要的环境变量。
步骤 5: 启动你的 Node.js 应用
-
使用 PM2 启动应用:
使用 PM2 启动你的 Node.js 应用。假设你的入口文件是app.js:
pm2 start app.js --name "your-app-name"
替换 "your-app-name" 为你的应用名称。
步骤 6: 设置反向代理(可选)
- 安装 Nginx:
安装 Nginx 作为反向代理服务器:
sudo apt-get install nginx
-
配置 Nginx:
编辑 Nginx 配置文件以将流量从公共端口(如 80 或 443)代理到你的应用端口(如 3000):
sudo nano /etc/nginx/sites-available/default
添加以下配置:
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;
}
}
替换 yourdomain.com 为你的域名,3000 为你的 Node.js 应用端口。
- 重启 Nginx:
重启 Nginx 以应用配置更改:
sudo systemctl restart nginx
步骤 7: 设置域名(可选)
-
配置 DNS:
在你的域名注册商处配置 DNS 记录,将你的域名指向服务器的 IP 地址。
步骤 8: 配置 SSL(可选)
- 安装 Certbot:
使用 Certbot 自动获取和安装 Let's Encrypt SSL 证书:
sudo apt-get install certbot python3-certbot-nginx
- 获取 SSL 证书:
运行 Certbot 并按照提示操作:
sudo certbot --nginx
步骤 9: 持久化 PM2 进程
- 保存 PM2 列表:
保存当前 PM2 进程列表,以便在服务器重启时自动恢复:
pm2 save
- 设置 PM2 开机自启:
使 PM2 开机自启动:
pm2 startup
按照这些步骤,你应该能够成功部署你的 Node.js 应用到一个 Linux 服务器上。记得在每个步骤中检查是否有错误,并根据需要调整配置。