当前位置: 首页 > 科技观察

如何在Ubuntu上使用pm2和Nginx部署Node.js应用

时间:2023-03-19 11:51:41 科技观察

如何使用pm2和Nginx在Ubuntu上部署Node.js应用它非常简单且功能强大,您可以在零停机的情况下重新启动或重新加载您的节点应用程序,它还允许您为您的节点应用程序创建集群。在这篇博文中,我将向您展示如何为这个简单的“Express”应用程序安装和配置pm2,然后将Nginx配置为运行在pm2下的节点应用程序的反向代理。先决条件:Ubuntu16.04-64位Root权限第1步-安装Node.jsLTS在本指南中,我们将从头开始我们的实验。首先,我们需要在服务器上安装Node.js。我将使用可以从nodesource存储库安装的NodejsLTS6.x版本。从Ubuntu存储库安装python-software-properties包并添加“nodesource”Nodejs存储库。sudoapt-getinstall-ypython-software-propertiescurl-sLhttps://deb.nodesource.com/setup_6.x|sudo-Ebash-Install***版本的NodejsLTS:sudoapt-getinstall-ynodejs安装完成后查看node和npm版本。node-vnpm-v检查node.js版本第2步-生成Express示例应用程序我将使用express-generator包生成的简单Web应用程序框架进行示例安装。可以使用npm命令安装express-generator。使用npm安装express-generator:npminstallexpress-generator-g-g:在系统内安装包。我会以普通用户身份运行应用程序,而不是root用户或超级用户。我们首先需要创建一个新用户。创建一个名为yume的用户:useradd-m-s/bin/bashyumepasswdyume使用su命令登录新用户:su-yume接下来,使用express命令生成一个新的简单Web应用程序:expresshakase-app命令将创建一个新的项目目录hakase-app.使用express-generator生成应用框架,进入项目目录安装应用所需的所有依赖。cdhakase-appnpminstall然后使用以下命令测试并启动一个新的简单应用程序:DEBUG=myapp:*npmstart默认情况下,我们的express应用程序将在端口3000上运行。现在访问服务器的IP地址:192.168.33.10:3000:expressnodejsrunning在端口3000这个简单的Web应用程序框架现在作为“yume”用户在端口3000上运行。第3步-安装pm2pm2是一个可以使用npm命令安装的节点包。(有root权限,如果你仍然以yume用户登录,然后运行命令exit再次成为root):npminstallpm2-g现在我们可以为我们的web应用程序使用pm2。进入应用目录hakase-app:su-yumecd~/hakase-app/在这里可以看到一个名为package.json的文件,使用cat命令显示其内容。catpackage.json配置了expressnodejs服务,可以看到start行有一个nodejs命令来启动express应用。我们将把这个命令与pm2进程管理器一起使用。使用pm2命令运行express应用程序,如下所示:pm2start./bin/www现在您可以看到这样的结果:使用pm2运行nodejs应用程序我们的express应用程序在pm2中运行,名称为www,id为0。您可以使用显示选项shownodeid|name以获取有关在pm2下运行的应用程序的更多信息。pm2showwwwpm2服务状态如果您想查看我们应用程序的日志,您可以使用日志选项。它包括访问和错误日??志,您还可以查看应用程序的HTTP状态。pm2logswwwpm2服务日志可以看到我们的程序在运行。现在,让它在开机时自动启动。pm2startupsystemdsystemd:Ubuntu16使用systemd。您将看到一条消息,提示您以root身份运行该命令。使用exit命令返回到root用户并运行命令。sudoenvPATH=$PATH:/usr/bin/usr/lib/node_modules/pm2/bin/pm2startupsystemd-uyume--hp/home/yume会生成启动应用的systemd配置文件。当您重新启动服务器时,应用程序将自动运行。pm2添加服务以启动自动启动步骤4-安装和配置Nginx作为反向代理在本指南中,我们将使用Nginx作为节点应用程序的反向代理。Nginx在Ubuntu存储库中可用,使用apt命令安装它:sudoapt-getinstall-ynginx接下来,转到sites-available目录并创建一个新的虚拟主机配置文件。cd/etc/nginx/sites-available/vimhakase-app粘贴以下配置:upstreamhakase-app{#Nodejsappupstreamserver127.0.0.1:3000;keepalive64;}#Serveronport80server{listen80;server_namehakase-node.co;root/home/yume/hakase-app;location/{#Proxy_passconfigurationproxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;proxy_set_headerHost$http_host;proxy_set_headerX-NginX-Proxytrue;proxy_http_version1.1;proxy_set_headerUpgrade$http_upgrade;proxy_set_headerConnection“升级”;proxy_max_pass:///temp_file_size0;proxy_max_temp_filese;proxy_redirectoff;proxy_read_timeout240s;}}保存文件并退出vim。配置中:node应用程序以域名hakase-node.co运行。来自nginx的所有流量都将转发到在端口3000上运行的节点应用程序。测试Nginx配置以确保没有错误。nginx-t启用Nginx并使其在开机时自动启动。systemctlstartnginxsystemctlenablenginx第5步-测试打开您的网络浏览器并访问域名(我的是):http://hakase-app.co。您可以看到在NginxWeb服务器中运行的express应用程序。在pm2和Nginx中运行的Nodejs应用程序下一步,重新启动服务器,确保您的节点应用程序在启动时自启动:pm2savesudoreboot如果您再次登录到您的服务器,请检查节点应用程序进程。以yume用户运行以下命令。su-yumepm2statuswwwnodejspm2下自启动Node应用运行在pm2中,使用Nginx作为反向代理。链接UbuntuNode.jsNginx