使用Nginx和Supervisor部署基本的Vapor应用程序

本文将指导您完成将简单的蒸气应用程序部署到VPS的过程。 我使用的是数字海洋,但是只要您的实例运行Ubuntu 16.04并且可以通过ssh访问该主机,托管服务提供商就没有关系。

先决条件:

  1. 具有ssh访问权限的Ubuntu 16.04实例。 我强烈建议您在继续之前阅读本文。
  2. 熟悉终端文本编辑器,例如nano,vi或emacs。
  3. 熟悉基本的bash命令。

安装和设置Nginx

通过运行以下命令来安装Nginx:

  sudo apt-get更新 
须藤apt-get install nginx

将规则添加到防火墙以允许端口80上的TCP连接。(仅在启用防火墙的情况下才需要执行)

  sudo ufw允许'Nginx HTTP' 
sudo ufw状态

检查Nginx是否正在运行systemctl status nginx

最后,您可以通过从浏览器向服务器的域或ip发送GET请求来检查nginx是否设置正确。 如果您在下面看到欢迎页面,则说明您已经成功设置了Nginx。

如果您没有看到此页面,请查看此详细教程。

安装和设置蒸气

使用以下命令安装Swift和Vapor。

 评估“ $(curl -sL https://apt.vapor.sh)” 
须藤apt-get install swift vapor
评估“ $(curl -sL check.vapor.sh)”

如果输出“与蒸气2兼容”,则可以继续进行。

创建一个基本的蒸气项目。

 蒸气新你好 

注意:如果您有现有的蒸气项目,则可以从github克隆该存储库。 但是请记住,在本教程的其余部分中,请用您的项目名称替换“ hello”。

配置Nginx以将请求转发到Vapor App

更改/etc/nignx/sites-availabledefault配置文件,使其看起来像以下片段。

 服务器{ 
监听80 default_server;
听[::]:80 default_server;
 根/ var / www / html; 
  index index.html index.htm index.nginx-debian.html; 
 服务器名称 _; 
try_files $ uri @proxy;
位置@proxy {
proxy_pass http://127.0.0.1:8080;
proxy_pass_header服务器;
proxy_set_header主机$ host;
proxy_set_header X-Real-IP $ remote_addr;
proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for;
proxy_pass_header服务器;
proxy_connect_timeout 3秒;
proxy_read_timeout 10秒;
#首先尝试将请求作为文件提供,然后
#作为目录,然后退回到显示404。
#try_files $ uri $ uri / = 404;
}
}

运行服务器并测试Nginx是否将请求转发到Vapor App。

  sudo systemctl重启nginx 
cd〜/你好
蒸气生成
蒸气运行

在浏览器中打开http://YourDomainOrIP/hello ,它应显示消息“ hello world”。

有用! 我们完成了,对不对? 没有。

按Ctrl-C或关闭正在运行服务器的终端窗口,它将停止工作。 您希望服务器即使在系统进入睡眠状态后也能运行,这就是为什么需要Supervisor的原因。 Supervisor在后台运行服务器进程,如果进程因任何错误而终止,则重新启动进程,并将所有错误记录在文件中。

安装和设置主管

  sudo apt-get更新 
sudo apt-get安装主管

使用以下代码片段创建一个新的配置文件/etc/supervisor/conf.d/hello.conf

不要忘了用您的用户名替换“ sammy”,并更新项目目录路径。

  [程序:您好] 
命令=蒸气运行--env =生产
directory = / home / sammy / hello /#在此处输入正确的路径
autorestart = true
user = sammy#在此处输入用户名
stdout_logfile = / var / log / supervisor /%(program_name)-stdout.log
stderr_logfile = / var / log / supervisor /%(program_name)-stderr.log

加载配置文件,并使用超级用户在后台运行“ hello”。

 须藤supervisorctl重读 
须藤supervisorctl添加你好
须藤supervisorctl开始你好

您可以使用sudo supervisorctl status检查状态并停止hello应用

现在,您可以关闭终端并拿起咖啡。

任何人都可以在他们的浏览器中打开http://YourDomainOrIP/hello ,它应该显示消息“ hello world”。

推荐读物:

我试图使本文简短而简单。 如果您还不熟悉Nginx,Tmux等,则这里是推荐阅读材料的列表。

  1. Ubuntu 16.04的初始服务器设置指南
  2. 安装和设置Nginx
  3. Tmux:简单指南

您可以尝试其他有趣的事情:

  1. 在Digitalocean上设置域名
  2. 使用Vapor 2设置postgres
  3. 在单个实例上运行多个蒸气应用程序

Interesting Posts