如何使用PM2在香港服务器上部署与管理Node.js应用

如何使用PM2在香港服务器上部署与管理Node.js应用

我们在构建和维护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作为反向代理,能够进一步提升应用的性能和安全性。特别是在部署于香港服务器时,需根据网络延迟和访问流量情况,合理优化配置以确保最佳体验。

未经允许不得转载:A5数据 » 如何使用PM2在香港服务器上部署与管理Node.js应用

相关文章

contact