当今的电商业务竞争异常激烈,为了满足用户体验需求,提高系统的可用性与性能,对于前端开发人员而言,必须具备一定的服务端配置技能,包括 PM2 与 Nginx 的使用。本文将详细介绍如何在电商应用中应用 PM2 与 Nginx 进行部署及优化,提高应用性能,并为读者提供示例代码和指导意义。
PM2
PM2 是一个流行的守护进程管理器,可用于帮助我们管理 Node.js 应用程序。此工具在编写和部署 Node.js 应用程序时非常有用。PM2 可以为您管理应用程序的进程,使其在应用程序停止或崩溃时自动重启。此外,PM2 还有许多其他有用的功能,例如内存管理、日志记录、热重载等。
安装
要使用 PM2,首先需要在系统中安装它。可以使用 npm 命令进行安装。
npm install pm2 -g
使用
在安装 PM2 后,使用以下命令启动您的 Node.js 应用程序。
pm2 start app.js
您还可以使用以下命令以集群模式启动应用程序。
pm2 start app.js -i max
PM2 将根据系统上的 CPU 核心数自动决定要启动的进程数。
监控
PM2 还提供了实时监控应用程序的功能。使用以下命令来监视应用程序的 CPU 和内存使用情况。
pm2 monit
此命令还提供交互式接口,可以使用上下箭头按键来切换进程,并使用左右箭头按键来显示不同的统计数据。
Nginx
Nginx 是一款免费开源的高性能 Web 服务器。Nginx 可以用于静态内容或代理 HTTP 请求到应用程序,以帮助提高应用程序性能。在本文中,我们将介绍如何在电商应用中将 Nginx 用作反向代理。
安装
安装 Nginx 在不同的操作系统上略有不同,但是通常可以使用包管理器进行安装。例如,在 Ubuntu 上,可以使用以下命令安装 Nginx。
sudo apt-get update sudo apt-get install nginx
使用
在安装 Nginx 并将其设置为运行时,它会将 HTTP 请求转发到我们配置的应用程序。为此,我们需要在 Nginx 的配置文件中添加反向代理配置。
首先打开 /etc/nginx/sites-available/default
文件。
sudo nano /etc/nginx/sites-available/default
在配置中添加以下内容。
location / { proxy_pass http://localhost:3000/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }
这个配置指定了将所有的 URL 请求转发到本地运行的端口 3000
,它是您的应用程序正在运行的端口。此外,根据应用程序要求加入合适的额外的请求头信息。修改完成后,保存配置文件并重新启动 Nginx。
sudo service nginx restart
监控
Nginx 提供了一些有用的工具,可以帮助我们监控应用程序的性能以及应用程序服务器的负载。其中一个工具是 nginx-status
模块。默认情况下,此模块是禁用的,在使用前需要打开。
要打开此模块,请打开 /etc/nginx/sites-available/default
文件。
sudo nano /etc/nginx/sites-available/default
找到以下行:
#location / {
将其替换为:
location / { stub_status on; access_log off; allow 127.0.0.1; deny all; }
这会将访问 /nginx_status
端点时提供 Nginx 的当前状态。此时,您可以使用以下命令来查看 Nginx 的当前状态。
curl http://localhost/nginx_status
此外,Nginx 还提供了 ngx_http_stub_status_module
模块,可以使用此模块来实时监控 Nginx 的性能。
nginx -t && service nginx restart
实战
下面我们将以一台 Ubuntu 18.04 服务器为例,在该服务器上部署一个电商应用程序,并使用 PM2 和 Nginx 进行优化。
系统设置
首先,我们需要通过以下命令更新应用程序和系统的软件库,以获取最新版本的软件。
sudo apt-get update sudo apt-get upgrade
安装 Node.js 和 MongoDB
在我们可以部署电子商务应用程序之前,需要安装 Node.js 和 MongoDB。使用以下命令来安装 Node.js。
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash - sudo apt-get install -y nodejs
安装完成后,可以通过以下命令验证 Node.js 是否已正确安装。
node -v
下一步是安装 MongoDB。可以使用以下命令进行安装。
sudo apt-get install -y mongodb
在 MongoDB 安装成功后,可以通过以下命令验证 MongoDB 是否已正确安装。
mongo --version
克隆并设置应用程序
在完成 Node.js 和 MongoDB 的安装后,需要克隆并设置我们的电商应用程序。使用以下命令从 GitHub 上将项目代码克隆到我们的服务器上。
git clone https://github.com/flipkart-incubator/miniki.git
克隆完成后,使用以下命令安装应用程序所需的所有模块。
cd miniki npm install
PM2 部署
我们已将应用程序克隆到预定的文件夹,并将应用程序所有的依赖项安装完毕,现在我们可以使用 PM2 来部署电商应用程序了。使用以下命令将应用程序部署到 PM2 中。
pm2 start index.js --name miniki
让我们使用以下命令来查看我们刚刚部署的应用程序运行情况。
pm2 list
Nginx 部署
PM2 部署完成后,我们可以使用 Nginx 的反向代理功能来直接将请求转发到运行的应用程序。使用以下命令打开 Nginx 配置文件夹。
sudo nano /etc/nginx/sites-available/default
在文件中添加以下内容:
-- -------------------- ---- ------- ------ - ------ --- ----------- ------------ -------- - - ---------- ----------------------- ---------------- ---- ------ ---------------- --------- ------------- - -------- ------------- - ----------- --- ---------- ---- ----- ---------- ---- ---- - -
将 example.com
替换为您的域名。保存改动并退出文件。现在,我们需要重启 Nginx 服务以使更改生效。
sudo service nginx restart
现在,您可以在任何 Web 浏览器中访问您的电子商务应用程序。
总结
通过本文的介绍,我们了解到了如何在电商应用中使用 PM2 和 Nginx 进行部署和优化,提高了应用程序的可用性和性能。同时,我们也了解了如何监控我们的应用程序以及服务器负载。最后,我们展示了如何使用其他常用的系统工具来优化我们的电子商务应用程序,并提供了示例代码和指导意义供读者学习参考。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6450b3c7980a9b385b9a60ee