CentOS上Node.js项目部署指南
CentOS上Node.js项目部署指南
1. 准备工作
确保服务器已安装CentOS 7及以上版本,并具备root
或sudo
权限。建议提前备份重要数据,避免操作失误导致数据丢失。
2. 安装Node.js与npm
2.1 使用NodeSource仓库安装(推荐)
NodeSource提供最新的稳定版Node.js二进制分发包,安装步骤如下:
# 更新系统包索引
sudo yum update -y
# 添加NodeSource仓库(以Node.js 18.x为例,可根据需求替换版本号)
curl -sL https://rpm.nodesource.com/setup_18.x | sudo bash -
# 安装Node.js及npm(NodeSource仓库会自动包含npm)
sudo yum install -y nodejs
# 验证安装结果
node -v # 输出Node.js版本(如v18.x.x)
npm -v # 输出npm版本(如10.x.x)
2.2 可选:使用NVM安装多版本Node.js
若需要管理多个Node.js版本,可使用NVM(Node Version Manager):
# 安装NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# 加载NVM环境
source ~/.bash_profile
# 安装最新稳定版Node.js
nvm install node
# 切换版本(可选)
nvm use node
3. 配置项目环境
3.1 上传项目文件
将本地项目文件上传至服务器,常用方式包括:
- scp命令(本地到服务器):
scp -r /本地项目路径 user@服务器IP:/var/www/项目目录
- FTP工具(如FileZilla):通过图形界面拖拽上传。
3.2 安装项目依赖
进入项目目录,安装package.json
中定义的依赖:
cd /var/www/项目目录
npm install # 安装生产环境依赖
# 若需安装开发依赖(如测试框架),可添加--save-dev选项:
# npm install eslint --save-dev
3.3 设置环境变量
通过.env
文件管理敏感信息(如数据库密码、API密钥),并使用dotenv
包加载:
# 安装dotenv
npm install dotenv
# 在项目根目录创建.env文件
echo "PORT=3000\nDB_HOST=localhost\nDB_USER=root\nDB_PASSWORD=yourpassword" >
.env
# 在入口文件(如app.js)顶部加载环境变量
require('dotenv').config();
注意:.env
文件需添加至.gitignore
,避免提交至代码仓库。
4. 使用PM2管理进程
PM2是Node.js进程管理工具,可实现后台运行、自动重启、负载均衡等功能。
# 全局安装PM2
sudo npm install pm2 -g
# 启动应用(假设入口文件为app.js,应用名称为my-app)
pm2 start app.js --name my-app
# 常用命令:
pm2 list # 查看进程列表
pm2 logs my-app # 查看应用日志
pm2 restart my-app # 重启应用
pm2 stop my-app # 停止应用
pm2 delete my-app # 删除进程
4.1 设置PM2开机自启动
确保服务器重启后应用自动恢复运行:
# 生成开机启动脚本
pm2 startup
# 保存当前进程列表
pm2 save
5. 配置Nginx反向代理(可选但推荐)
Nginx可作为反向代理,提升应用性能(负载均衡、静态文件缓存)和安全性(隐藏Node.js端口、HTTPS支持)。
# 安装Nginx
sudo yum install nginx -y
# 启动并启用Nginx
sudo systemctl start nginx
sudo systemctl enable nginx
# 配置反向代理(编辑默认配置文件或新建自定义配置)
sudo vi /etc/nginx/conf.d/my-app.conf
在配置文件中添加以下内容(替换yourdomain.com
为域名,3000
为Node.js应用端口):
server {
listen 80;
server_name yourdomain.com;
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. 配置防火墙
允许HTTP(80端口)和HTTPS(443端口)流量通过防火墙:
# CentOS 7及以上版本使用firewalld
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
若使用iptables
,可添加以下规则:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo service iptables save
7. 可选:配置SSL证书(启用HTTPS)
使用Let’s Encrypt免费获取SSL证书,提升网站安全性:
# 安装Certbot及Nginx插件
sudo yum install -y certbot python3-certbot-nginx
# 获取证书(自动配置Nginx)
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
# 按照提示完成配置(如选择是否自动重定向HTTP至HTTPS)
证书有效期为90天,可通过以下命令自动续期:
sudo certbot renew --dry-run # 测试续期
sudo certbot renew # 实际续期
8. 测试部署
打开浏览器,访问http://yourdomain.com
(若配置了SSL则为https://yourdomain.com
),确认应用正常运行。若出现502 Bad Gateway错误,需检查:
- Node.js应用是否启动(
pm2 list
查看状态); - Nginx配置中的
proxy_pass
地址是否正确(需与Node.js应用端口一致); - 防火墙是否允许对应端口流量。
通过以上步骤,即可在CentOS上完成Node.js项目的部署,并实现稳定的后台运行与安全的网络访问。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS上Node.js项目部署指南
本文地址: https://pptw.com/jishu/725217.html