
我们在构建和维护Node.js应用时,部署和管理服务是开发人员不可忽视的环节。PM2是一款功能强大的Node.js进程管理工具,能够轻松实现应用的启动、监控、日志管理、自动重启等功能。本文将详细介绍如何在香港服务器上使用PM2部署和管理Node.js应用,帮助您实现稳定、高效的服务。
一、准备环境
在开始之前,请确保您已具备以下条件:
✅ 一台已部署的香港服务器(如阿里云、腾讯云、AWS 等)
✅ 服务器已安装Node.js(推荐 LTS 版本)
✅ 具备基本的 Linux 命令行知识
✅ 已准备好一个Node.js项目
二、服务器环境配置
1. 连接香港服务器
使用 SSH 连接到您的香港服务器:
ssh username@your_server_ip
示例:
ssh root@43.153.12.34
> 提示:若 SSH 默认端口被修改,请使用 `ssh -p <端口号> username@your_server_ip`
2. 更新服务器软件包
为确保系统的安全和稳定,先更新服务器软件包:
sudo apt update && sudo apt upgrade -y # Debian/Ubuntu
sudo yum update -y # CentOS
3. 安装Node.js和 npm
如果尚未安装Node.js,可使用以下命令:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
验证安装是否成功:
node -v
npm -v
4. 安装PM2
使用 npm 全局安装PM2:
npm install -g PM2
验证PM2是否安装成功:
pm2 -v
三、项目部署
1. 上传Node.js项目到服务器
可以使用 SCP、FTP、rsync 等工具将项目上传到服务器。例如:
scp -r ./my-nodejs-app username@your_server_ip:/var/www/
2. 进入项目目录并安装依赖
cd /var/www/my-nodejs-app
npm install
3. 创建环境配置文件(.env)
在项目根目录下创建 `.env` 文件,配置环境变量:
PORT=3000
DB_HOST=localhost
DB_USER=root
DB_PASS=yourpassword
4. 启动Node.js应用
在项目根目录中使用PM2启动应用:
PM2 start app.js --name "my-nodejs-app"
- `app.js` 是你的项目入口文件(可能是 `server.js`、`index.js` 等)
- `–name` 指定项目的别名,方便后续管理
四、使用PM2管理应用
1. 查看应用状态
PM2 list
该命令将展示:
- 应用 ID
- 应用名
- 状态(`online` / `stopped`)
- CPU 和内存使用情况
- 重启次数等
2. 监控应用日志
PM2 logs
实时查看日志,帮助调试和问题排查。
> 可使用 `PM2logs <app_name>` 查看指定应用的日志
3. 查看应用详情
PM2 show my-nodejs-app
展示该应用的详细信息,包括路径、环境变量、内存使用情况等。
4. 停止应用
PM2 stop my-nodejs-app
5. 重启应用
PM2 restart my-nodejs-app
6. 删除应用
PM2 delete my-nodejs-app
7. 启用自动启动(开机自启动)
PM2提供 `startup` 命令以确保服务器重启时自动启动应用:
PM2 startup
系统将会输出一条带有 `sudo` 命令的指引,按提示执行该命令。
示例:
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u root --hp /root
接着保存当前的应用列表以便恢复:
PM2 save
8. 配置自动化部署(推荐)
借助PM2的 `ecosystem.config.js` 文件可以轻松实现自动化部署。
创建 `ecosystem.config.js`
pm2 init simple
文件示例:
module.exports = {
apps: [
{
name: "my-nodejs-app",
script: "./app.js",
instances: "max", // CPU 核数自动分配
exec_mode: "cluster", // 启动集群模式
env: {
NODE_ENV: "development",
PORT: 3000
},
env_production: {
NODE_ENV: "production",
PORT: 8080
}
}
]
}
使用 `PM2start` 启动应用时,指定配置文件:
pm2 start ecosystem.config.js --env production
五、优化与安全设置
1. 防火墙配置
香港服务器常默认开放所有端口,出于安全考虑,建议只开放必要端口(如 `3000` 或 `8080`):
ufw allow 3000
ufw enable
2. 使用 Nginx 作为反向代理
Nginx 可以作为强大的反向代理,进一步提升Node.js服务的稳定性和性能。
安装 Nginx
sudo apt install nginx
创建 Nginx 配置文件
在 `/etc/nginx/sites-available/` 目录下创建配置文件:
sudo nano /etc/nginx/sites-available/my-nodejs-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;
}
}
启用配置并重启 Nginx
ln -s /etc/nginx/sites-available/my-nodejs-app /etc/nginx/sites-enabled/
nginx -t # 测试配置是否正确
sudo systemctl restart nginx
3. 配置 SSL(HTTPS)
使用Let’s Encrypt快速配置 SSL:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
按提示完成配置,并测试自动续期:
sudo certbot renew --dry-run
六、故障排查
如果遇到问题,可以参考以下命令进行排查:
- 检查应用日志:`PM2 logs`
- 检查服务状态:`PM2 show <app_name>`
- 检查 Nginx 日志:`sudo journalctl -u nginx`
使用PM2部署和管理Node.js应用不仅高效而且稳定。结合Nginx作为反向代理,能够进一步提升应用的性能和安全性。特别是在部署于香港服务器时,需根据网络延迟和访问流量情况,合理优化配置以确保最佳体验。











