本文为大家分享如何在华纳云服务器上PM2 部署 Node.js 应用程序,完成创建PM2服务步骤。还分享了关于Nginx设置为PM2服务的反向代理服务器的完整步骤。
Process Manager 2 (PM2) 是一款应用程序,可以为应用程序创建持久服务。PM2集群模式允许同一应用程序的多个实例,更高效的利用资源。PM2还提供简单的CLI界面,更便于管理、扩展和监控正在运行的服务。
登录华纳云账户,在个人管理后台中选择云服务器,按照自己需求选择服务器地区、大小,选择合适系统等。完成云服务器购买后即可获得到一台部署完善的云主机。可以开始创建ode.js 应用程序。安装好最新的Node.js 和 Node Package Manager (npm) 二进制文件。使用Express 创建示例 Node.js 应用程序。创建一个文件夹来存储项目文件,并导航到该文件夹。
mkdir ~/express-demo
cd ~/express-demo
初始化一个Node.js 项目。
npm init
安装Express库。
npm install express
创建一个名为index.js的文件。
nano index.js
把以下内容粘贴至index.js文件。
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("<h1>Hello World, greetings from Vultr</h1>");
});
app.listen(3000, () => {
console.log("Server listening on port 3000");
});
以上定义了一个基于express的基本应用程序,最后保存文件推出编辑器即可。
允许端口3000监听传入连接。
sudo ufw allow 3000
启动应用程序。
node index.js
在web浏览器中,导航到如下所示的URL:
http://SERVER_IP:3000
确认访问后可以停止服务器。
全局安装PM2包,该-g标志指定应全局安装PM2包,便于所有系统都可以访问它。
sudo npm install pm2 -g
集群模式下,启动Node.js 应用程序,确保路径替换为应用程序的实际位置,该-i标志指定Node.js 应用程序应在集群模式下使用4个实例运行。
pm2 start ~/express-demo -i 4 --name express-demo
设置持久服务。
pm2 startup
保存配置以应用更改。
pm2 save
将 Nginx 配置为反向代理服务器,先安装将 Nginx :
sudo apt install nginx
express-demo.conf在目录中创建一个名为的文件sites-available。
sudo nano /etc/nginx/sites-available/express-demo.conf
把以下内容粘贴至express-demo.conf文件中,确保其替换为example.com为您的实际域名。
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
location / {
proxy_pass http://127.0.0.1:3000/;
}
}
server为您的域定义一组设置。listen指示服务器在端口上监听80传入的请求。server_name指定此服务器块将响应的域名。location定义服务器应该如何处理每个传入请求。proxy_pass指示服务器将请求转发到另一个位置,在本例中是http://127.0.0.1:3000/。保存文件并退出编辑器。
要激活虚拟主机配置,请在目录中创建软链接sites-enabled。
sudo ln -s /etc/nginx/sites-available/express-demo.conf /etc/nginx/sites-enabled/
测试配置以识别错误。
sudo nginx -t
配置正确会输出以下结果:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
重启Nginx 服务器:
sudo systemctl reload nginx
允许端口上的传入连接80。
sudo ufw allow 80/tcp
在 Web 浏览器中,导航到如下所示的 URL。
http://example.com
拒绝端口上的传入连接3000
sudo ufw deny 3000