1. 准备工作
确保已拥有可正常登录的Linux服务器(如Ubuntu、CentOS),并具备root或sudo权限;准备待部署的Node.js应用代码(或本地已初始化的项目)。
2. 安装Node.js运行环境
根据需求选择以下一种方式安装:
sudo apt update && sudo apt install -y nodejs npm,安装完成后通过node -v、npm -v验证版本。sudo yum update && sudo yum install -y nodejs npm,同样通过版本命令验证。curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs # Debian/Ubuntu
# 或 sudo yum install -y nodejs # CentOS/RHEL
验证版本确认安装成功。curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash安装nvm,加载配置source ~/.bashrc,然后通过nvm install node安装最新LTS版本,用nvm use node切换版本。node-v20.11.1-linux-x64.tar.xz),上传至服务器,执行tar -xvf node-v20.11.1-linux-x64.tar.xz解压,将bin目录链接到系统路径:sudo ln -s /path/to/node-v20.11.1-linux-x64/bin/node /usr/local/bin/node
sudo ln -s /path/to/node-v20.11.1-linux-x64/bin/npm /usr/local/bin/npm
验证版本确认安装。3. 配置项目与应用
npm init -y,生成package.json文件(记录项目依赖与脚本)。package.json和package-lock.json上传至服务器项目目录,执行npm install安装所有依赖(或使用npm ci严格根据lock文件安装)。dotenv包(npm install dotenv),在项目根目录创建.env文件,添加敏感信息(如数据库连接串、API密钥):DB_HOST=localhost
DB_USER=root
DB_PASSWORD=yourpassword
在代码中通过require('dotenv').config()加载环境变量。4. 启动与管理应用
node app.js(假设入口文件为app.js),启动应用。此方式需保持终端开启,关闭后应用停止。npm install pm2 -g,启动应用:pm2 start app.js --name "myapp"(--name指定应用名称);常用命令:pm2 status(查看状态)、pm2 logs(查看日志)、pm2 restart myapp(重启)、pm2 save(保存当前进程列表)、pm2 startup(设置开机自启)。5. 配置Nginx反向代理(提升性能与安全性)
sudo apt install -y nginx,CentOS/RHEL执行sudo yum install -y nginx,启动服务:sudo systemctl start nginx,设置开机自启:sudo systemctl enable nginx。sudo vim /etc/nginx/sites-available/default),修改server块:server {
listen 80;
server_name yourdomain.com; # 替换为你的域名或IP
location / {
proxy_pass http://localhost:3000; # 转发到Node.js应用端口
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;
}
}
保存后重启Nginx:sudo systemctl restart nginx。6. 配置SSL证书(启用HTTPS,保障安全)
sudo apt install -y certbot python3-certbot-nginx(Ubuntu/Debian),CentOS/RHEL执行sudo yum install -y certbot python3-certbot-nginx;获取证书:sudo certbot --nginx -d yourdomain.com(替换为你的域名),按提示完成配置(自动修改Nginx配置,添加HTTPS监听)。sudo certbot renew --dry-run测试续期流程)。7. 监控与维护
pm2 monit命令实时监控应用CPU、内存占用,或通过pm2 list查看进程状态。pm2 logs myapp查看应用日志,pm2 flush清空日志;Nginx日志位于/var/log/nginx/access.log(访问日志)和/var/log/nginx/error.log(错误日志)。ufw、CentOS的firewalld),需放行HTTP(80)、HTTPS(443)端口:sudo ufw allow 80/tcp # Ubuntu
sudo ufw allow 443/tcp
sudo ufw enable
# 或CentOS
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload