使用Nginx和Supervisor部署基本的Vapor应用程序
本文将指导您完成将简单的蒸气应用程序部署到VPS的过程。 我使用的是数字海洋,但是只要您的实例运行Ubuntu 16.04并且可以通过ssh访问该主机,托管服务提供商就没有关系。
先决条件:
- 具有ssh访问权限的Ubuntu 16.04实例。 我强烈建议您在继续之前阅读本文。
- 熟悉终端文本编辑器,例如nano,vi或emacs。
- 熟悉基本的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-available
的default
配置文件,使其看起来像以下片段。
服务器{
监听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等,则这里是推荐阅读材料的列表。
- Ubuntu 16.04的初始服务器设置指南
- 安装和设置Nginx
- Tmux:简单指南
您可以尝试其他有趣的事情:
- 在Digitalocean上设置域名
- 使用Vapor 2设置postgres
- 在单个实例上运行多个蒸气应用程序