遵循此教程的要求
您需要安装 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)。
以下是以下步骤:
- Login at DigitalOcean.com
- Click on the 'DNS' section in the left sidebar
- 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
- 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.com
和YOUR_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
打印当前目录。
重复上面的步骤为您的每个域 / 服务。