遵循本教程的要求
您需要安装 nginx 和 Node.js,并且在 DigitalOcean 上已经有关于这些主题的教程:
如何安装 nginx 和 如何安装 Node.js。
此外,您应该已经拥有一个域名,以便将正在运行的 Node.js 服务映射到域名,而不是导航到 http://[your-vps-ip]:[port]。
使用 Forever 运行您的 Node.js 应用程序
Forever 是一个简单的命令行工具,用于确保 Node.js 应用程序持续运行(即永远)。这意味着如果您的应用程序遇到错误并崩溃,forever 将为您处理此问题并重新启动它。
只需全局安装 forever,然后可以在几秒钟内使用 forever:
npm install forever -g
要使用 forever 启动脚本,您需要按照以下步骤进行操作:
导航到您的 Node.js 应用程序:
cd /path/to/your/node/app/
并使用 forever 运行 server/main JavaScript 文件:
forever start --spinSleepTime 10000 main.js
其中 --spinSleepTime 10000 是指崩溃脚本之间的最小正常运行时间(以毫秒为单位)。此命令几乎适用于所有情况。
现在将您的浏览器指向 http://[your-vps-ip]:[port],然后查看您的应用程序正在运行。
将域名映射到您的 Node.js 应用程序
现在,您需要在 DigitalOcean 控制面板中添加 DNS 记录,将您的域名映射到您的 droplet(VPS)。
要遵循的步骤如下:
- 登录到 DigitalOcean.com
- 点击左侧边栏中的“DNS”部分
- 通过单击“添加域名”按钮,选择您选择的 VPS,并在“名称”字段中输入您注册的域名,添加一个域
- 复制 DigitalOcean 提供的域名服务器(例如 NS1.DIGITALOCEAN.COM.),并将每个域名服务器添加到您的域名注册商的控制面板中的 DNS 记录中。
- 注意:更改不会立即生效,因为 DNS 可以需要最多 24 小时才能传播。 - 将域名映射到在您的 VPS 上运行的服务的 nginx
 - 在本节中,您将学习如何通过几个简单的步骤在 nginx 中设置反向代理。 - 首先,在 /etc/nginx/conf.d/ 中为您想要的域名创建一个文件,使用您喜欢的编辑器(我将使用 nano)。该文件应该以域名命名,以保持一致性。 - nano /etc/nginx/conf.d/example.com.conf- 注意:您可以随意命名文件,重要的是 - .conf扩展名。- 在此文件中,您需要复制以下代码片段,并粘贴到之前创建的文件中: - server {listen 80;server_name your-domain.com;location / {proxy_pass http://localhost:{YOUR_PORT};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;} }- 现在只需将 - your-domain.com替换为您注册的域名,将- YOUR_PORT替换为您的 Node.js 应用程序在 VPS 上监听的端口。- 注意:要能够为一个 Node.js 应用程序引用多个域名(如 www.example.com 和 example.com),您需要将以下代码添加到文件 - /etc/nginx/nginx.conf中的- http部分:- server_names_hash_bucket_size 64;- 如果 DNS 更改已传播,您可以将您的 Web 浏览器指向您的域名,您应该看到您的应用程序正在运行,并可以从互联网访问。 - 在重新启动时重新启动您的 Node.js 应用程序
 - 当 VPS 重新启动时,Forever 在处理应用程序崩溃等方面表现良好,但是当 VPS 重新启动时会发生什么呢? - 这就是一个简单的 cronjob 可以防止您的应用程序和用户出现意外的停机的地方。 - 在您的应用程序的主目录中创建一个名为 - starter.sh的文件,并复制以下代码:- #!/bin/shif [ $(ps -e -o uid,cmd | grep $UID | grep node | grep -v grep | wc -l | tr -s "\n") -eq 0 ] thenexport PATH=/usr/local/bin:$PATHforever start --sourceDir /path/to/your/node/app main.js >> /path/to/log.txt 2>&1 fi- 其中 - main.js应替换为您的应用程序的主脚本。- 此有用的代码片段来自于此处 - 要在每次重新启动时启动此脚本,您需要使用以下命令编辑 crontab: - crontab -e- 并将以下代码附加到此文件 - @reboot /path/to/starter.sh- 现在设置您的 starter.sh 文件的绝对路径。 - 提示:导航到您的 starter.sh 文件所在的位置,并使用 - pwd打印当前目录。- 对于每个域/服务,重复上述步骤。