如何使用 nginx、forever 和 crontab 在单个 VPS 上托管多个 Node.js 应用程序

遵循此教程的要求


您需要安装 nginx 和 Node.js,在 DigitalOcean 上已经有有关这些主题的书面教程:

如何安裝 nginx(https://www.digitalocean.com/community/articles/how-to-install-nginx-on-ubuntu-12-04-lts-precise-pangolin)和 如何安裝 Node.js

此外,您应该已经拥有一个域名,以便将运行的 Node.js 服务绘制到域名,而不是导航到 http://[your-vps-ip]:[port)。

运行您的 Node.js 应用程序与永久


Forever 是一个简单的命令行工具,可确保 Node.js 应用程序连续运行(即永远运行)。

簡單地安裝永遠全球和永遠可以在幾秒鐘內使用:

1npm install forever -g

要开始一个永恒的脚本,你需要遵循这些步骤:

导航到您的 Node.js 应用程序:

1cd /path/to/your/node/app/

并永久运行服务器/主 JavaScript 文件:

1forever start --spinSleepTime 10000 main.js

--spinSleepTime 10000中,它指的是崩溃脚本的发射之间最少的运行时间(在毫秒)。

现在指向您的浏览器 http://[your-vps-ip]:[port]并查看您的应用程序运行。

将域名绘制到您的 Node.js 应用程序


现在,您需要在您的 DigitalOcean 控制面板中添加 DNS 记录,以将您的域名绘制到您的滴滴(VPS)。

以下是以下步骤:

  1. Login at DigitalOcean.com
  2. Click on the 'DNS' section in the left sidebar
  3. Add a domain by clicking on the 'Add Domain' button, select your VPS of choice and enter the domain name you registered in the 'Name' field
  4. Copy the Nameservers provided by DigitalOcean (e.g. NS1.DIGITALOCEAN.COM.) and add each one to the DNS records in the control panel of your domain registrar.

注意:更改不会立即发生,因为DNS可能需要长达24小时才能传播。

将域名绘制到运行在您的VPS上的服务使用nginx


在本节中,您将学习如何用 nginx 设置 反向代理在几个简单的步骤。

首先,在 /etc/nginx/conf.d/ 创建您想要的域名的文件,使用您最喜欢的编辑器(我会使用 nano)。

1nano /etc/nginx/conf.d/example.com.conf

注意:您可以将文件称为任何您想要的文件,重要部分是 .conf 扩展。

在此文件中,您将要复制以下代码片段并粘贴到之前创建的文件中:

 1server {
 2    listen 80;
 3
 4    server_name your-domain.com;
 5
 6    location / {
 7        proxy_pass http://localhost:{YOUR_PORT};
 8        proxy_http_version 1.1;
 9        proxy_set_header Upgrade $http_upgrade;
10        proxy_set_header Connection 'upgrade';
11        proxy_set_header Host $host;
12        proxy_cache_bypass $http_upgrade;
13    }
14}

现在,简单地用您注册的域名替换your-domain.comYOUR_PORT以您的Node.js应用程序在VPS上收听的端口。

注意:要为一个 Node.js 应用程序(如 www.example.com 和 example.com)引用多个域,您需要在http部分中添加以下代码到文件 `/etc/nginx/nginx.conf:

1server_names_hash_bucket_size 64;

如果 DNS 更改被传播,您可以将您的 Web 浏览器指向您的域,您应该看到您的应用程序正在运行,可从互联网访问。

重新启动 Node.js 应用程序


永远是好的,当它涉及到保持你的应用程序运行时,当它崩溃等,但当VPS重新启动时会发生什么?

这是一个简单的 cronjob 可以防止您的应用程序和用户意外停机时间。

在应用程序的主文件夹中创建一个名为 `starter.sh’ 的文件,并复制以下代码:

1#!/bin/sh
2
3if [ $(ps -e -o uid,cmd | grep $UID | grep node | grep -v grep | wc -l | tr -s "\n") -eq 0 ]
4then
5        export PATH=/usr/local/bin:$PATH
6        forever start --sourceDir /path/to/your/node/app main.js >> /path/to/log.txt 2>&1
7fi

main.js应该被应用程序的主要脚本取代。

此有用的摘要已从 [ 这里 ]( [ 链接 ] )中获取。

要在每次重新启动时启动此脚本,您需要使用此命令编辑 crontab:

1crontab -e

并将以下代码附加到此文件中

1@reboot /path/to/starter.sh

现在设置到您的 starter.sh 文件的绝对路径。

提示:导航您的 starter.sh 文件所在位置,并用pwd打印当前目录。

重复上面的步骤为您的每个域 / 服务。

Submitted by: Christian Fei
Published At
Categories with 技术
comments powered by Disqus