阅读量:61
1. 准备工作
确保已拥有可正常登录的Linux服务器(如Ubuntu、CentOS),并具备root或sudo权限;准备待部署的Node.js应用代码(或本地已初始化的项目)。
2. 安装Node.js运行环境
根据需求选择以下一种方式安装:
- 通过包管理器安装(快速便捷,适合常规需求):
- Ubuntu/Debian:执行
sudo apt update && sudo apt install -y nodejs npm,安装完成后通过node -v、npm -v验证版本。 - CentOS/RHEL:执行
sudo yum update && sudo yum install -y nodejs npm,同样通过版本命令验证。
- Ubuntu/Debian:执行
- 使用NodeSource库安装(支持特定版本,适合生产环境):
以安装Node.js 18.x为例,执行以下命令:验证版本确认安装成功。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 - 通过nvm安装(灵活管理多版本,适合开发调试):
执行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.js官网下载对应Linux架构的二进制包(如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=yourpasswordrequire('dotenv').config()加载环境变量。
4. 启动与管理应用
- 直接启动(适合测试):
在项目目录下执行node app.js(假设入口文件为app.js),启动应用。此方式需保持终端开启,关闭后应用停止。 - 使用PM2进程管理(生产必备):
全局安装PM2:npm install pm2 -g,启动应用:pm2 start app.js --name "myapp"(--name指定应用名称);常用命令:pm2 status(查看状态)、pm2 logs(查看日志)、pm2 restart myapp(重启)、pm2 save(保存当前进程列表)、pm2 startup(设置开机自启)。
5. 配置Nginx反向代理(提升性能与安全性)
- 安装Nginx:
Ubuntu/Debian执行sudo apt install -y nginx,CentOS/RHEL执行sudo yum install -y nginx,启动服务:sudo systemctl start nginx,设置开机自启:sudo systemctl enable nginx。 - 配置反向代理:
编辑Nginx默认配置文件(sudo vim /etc/nginx/sites-available/default),修改server块:保存后重启Nginx: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; } }sudo systemctl restart nginx。
6. 配置SSL证书(启用HTTPS,保障安全)
- 使用Let’s Encrypt免费获取证书:
安装Certbot: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监听)。 - 验证证书自动续期:
Let’s Encrypt证书有效期为90天,Certbot会自动添加续期任务(sudo certbot renew --dry-run测试续期流程)。
7. 监控与维护
- 应用监控:
使用PM2的pm2 monit命令实时监控应用CPU、内存占用,或通过pm2 list查看进程状态。 - 日志管理:
使用pm2 logs myapp查看应用日志,pm2 flush清空日志;Nginx日志位于/var/log/nginx/access.log(访问日志)和/var/log/nginx/error.log(错误日志)。 - 防火墙配置:
若服务器开启了防火墙(如Ubuntu的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