Ubuntu 服务器 18.04 平台下搭建 Node.js 应用程序服务器
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-...

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

TONYLABS 23 Feb, 2020
Share:

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

Like what you're reading? Subscribe to our top stories.

We will continue to update Front; if you have any questions or suggestions, please contact us!

Follow us on Medium, Twitter, Facebook, YouTube, and Dribbble.

Image Description
Written by

Hanna Wolfe

I create advanced website builders made exclusively for web developers.

3 Comments

  • Image Description
    Dave Austin 1 day ago

    As a Special Education teacher this resonates so well with me. Fighting with gen ed teachers to flatten for the students with learning disabilities. It also confirms some things for me in my writing.

    Reply
    • Image Description
      Hanna Wolfe 1 day ago

      Love it Dave! We're all about keeping it up.

      Reply
  • Image Description
    Christina Kray 2 days ago

    Since our attention spans seem to be shrinking by the day — keeping it simple is more important than ever.

    Reply

Post a comment

Stay in the know

Get special offers on the latest developments from Front.