Ubuntu 服务器 18.04 平台下搭建 Node.js 应用程序服务器

发布于: 23 February, 2020
分享:

https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-18-04

介绍

Node.js 是用于构建服务器端和网络应用程序的开源 JavaScript 运行环境。 Node.js 可在 Linux,macOS,FreeBSD 和 Windows 上运行。 尽管您可以在命令行上运行 Node.js 应用程序,但本教程将着重于如何使 Node.js 开发的应用程序作为服务来运行。 这意味着它们将在服务器重新启动或发生故障时重新启动,并且可以在生产环境中安全地使用。

在本教程中,您将在一个 Ubuntu 18.04 服务器上设置 Node.js 运行环境。 该服务器将通过 Nginx 反向代理为用户提供对该应用程序的安全访问。 Nginx 服务器将使用由阿里云提供的免费证书提供 HTTPS 支持。

先决条件

本教程假定您具有以下条件:

  1. Ubuntu 18.04 服务器设置
  2. 您应该具有具有 sudo 特权的非root用户和活动的防火墙。
  3. 指向服务器公共IP的域名,本教程将始终使用域名 example.com。
  4. 已安装Nginx,如如何在 Ubuntu 18.04 上安装Nginx所述。
  5. 使用“加密”证书为SSL配置的Nginx。如何在Ubuntu 18.04上使用阿里云证书保护 Nginx 的安全,将引导您完成整个过程。
  6. 完成前提条件后,您将在https://example.com/上拥有一台服务器来服务您域的默认页面。

 

第1步 - 安装Node.js

首先,使用 NodeSource 软件包归档文件安装最新的LTS版本的Node.js。安装 NodeSource PPA 以便访问其内容。确保您位于主目录中,并使用curl检索Node.js 8.x归档文件的安装脚本:

$ cd ~
$ curl -sL https://deb.nodesource.com/setup_8.x -o nodesource_setup.sh

如果您感兴趣,可通过 nano 文本编辑工具查看 nodesource_setup.sh 命令行,以便了解该 sh 文件究竟做了什么。

$ nano nodesource_setup.sh

再您了解了nodesource_setup.sh 文件,之后,您便可以放心地通过下面这条命令执行该文件:

$ sudo bash nodesource_setup.sh

命令执行完毕后,您的 Ubuntu 服务器即添加了最新的 PPA 源地址,用于检索安装最新的 Node.js 版本,下面我们开始安装 Node.js:

$ sudo apt install nodejs

为了检查 Node.js 是否安装成功,及了解当前安装的 Node.js 版本,可通过下面这个命令查看:

$ nodejs -v

成功后,输出:

$ v8.11.3

即表示 Node.js 安装成功。

 

第3步 - 将 Node.js 应用程序加入系统后台服务

如何使 Node.js 应用程序像其他网站一样,在服务器重启后自动启动,一般可通过安装第三方组件来实现,如 PM2, Forever 等,但我们这里采用的是不安装任何第三方组件的方式,即通过加入系统服务的方法。

首先我们回到当前用户所在目录:

$ cd ~

通过 nano 文本编辑器创建 myapp.service,注意这里的 myapp 即后台服务名称:

[Unit]
Description=TONYLABS Application

[Service] ExecStart=/var/www/myapp/app.js Restart=always User=nobody

注意 Debian/Ubuntu 使用 'nogroup', RHEL/Fedora 使用 'nobody'

Group=nobody Environment=PATH=/usr/bin:/usr/local/bin Environment=NODE_ENV=production WorkingDirectory=/var/www/myapp

[Install] WantedBy=multi-user.target

复制以上内容,将 /var/www/myapp/app.js 修改为您的目标应用程序路径,当然包括 WorkingDirectory 的路径一并修改。

将 app.js 修改为可执行文件:

$ sudo chmod +rx /var/www/myapp/app.js

启用服务

$ systemctl enable /full/path/to/myapp.service

执行成功后,系统会自动在 /etc/systemd/system 目录下创建软链。

重新加载系统守护进程:

$ systemctl daemon-reload

启动 myapp 服务:

$ systemctl start myapp

查看 myapp 服务系统日志:

$ journalctl -u myapp

 

第4步 - 配置 Nginx 反向代理服务

您的应用程序正在 localhost 上运行和侦听,但是您需要设置一种供其他用户访问它的方法。 为此,我们将 Nginx Web 服务器设置为反向代理。您可以在 /etc/nginx/sites-available/example.com 文件中设置 Nginx 配置。 打开此文件进行编辑:

$ sudo nano /etc/nginx/sites-available/example.com

您可以根据已经存在的服务器配置,选择性地将下面的配置加入:

server {
...
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 服务器配置:

$ sudo nginx -t

重新启动 Nginx 服务:

$ sudo systemctl restart nginx

0 留言

留言

您的留言将被人工审核,请勿发表色情、反动言论。