vapor是一个开源的swift开发的服务器框架,由于swift语言现在在服务器框架中只在Ubuntu中,并没有在centerOS中提供,所以如果需要把vapor部署到阿里云服务器,创建实例的时候记得选择系统版本为Ubuntu。
这样就可以自己前端写点简单的服务器框架啦。
如果看官方详细文档,可以参考docs.vapor.codes,或者中文版vapor3.swiftmic.com,而后面的步骤是我操作部署成功的记录。
本文写于2020年02月15日,如果你看到转载时已经年代久远,不妨回头看看原文是否有更新《vapor部署到阿里云服务器》
以下教程视为你已经在本地使用xcode开发了相关功能测试没问题,现在是上传部署到服务器
1、安装swift和Vapor
1.1、在服务器执行下面命令增加APT Repo
wget -q https://repo.vapor.codes/apt/keyring.gpg -O- | sudo apt-key add -
echo "deb https://repo.vapor.codes/apt $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/vapor.list然后运行
sudo apt-get update1.2、执行安装Vapor
sudo apt-get install swift vapor1.3、安装成功验证
安装成功之后,可以执行下面的命令看是否安装成功
swift --version2、服务器新建项目
2.1、创建服务器项目
vapor new <name>记得把<name>修改成你的项目目录名字,比如MyProject
2.2、把本地创建的的项目文件上传覆盖
把本地项目的Package.swift、Sources文件夹和Public文件夹的内容上传到服务器项目进行覆盖,如果在本地项目中使用的数据库地址,用户名密码和服务器不一样,记得都修改成服务器的
2.3、服务器编译项目
上传好之后,运行下面命令进行编译,第一次编译会比较耗时
vapor build2.3、运行项目
编译好之后,运行下面命令运行即可
vapor run3、服务器配置
因为vapor用的是8080的端口,所以记得去阿里云的的实例中,修改服务器对应的安全组,把8080这个端口放行
如果你是用的宝塔管理面板,记得去宝塔的安全》防火墙里面也添加8080端口为放行端口。
这时候你可以测试下网址带8080端口是否可以访问,例如http://dongge.org:8080/test,如果可以用就成功了。如果不可以用或者不想带端口请求,可以参考下面把80端口的请求转发到Vapor监听的端口,这样请求就可以不用带8080端口,而是直接请求http://dongge.orgtest
3.1、通过Nginx方向代理Vapor监听的端口
这个可以参考Ubuntu下Vapor监听80端口,如果你是用的宝塔之类的管理面板,可以在网站的伪静态配置规则中添加
location / {
proxy_pass http://localhost:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}如果你没有安装面板,可以修改/etc/nginx/nginx.conf文件,把把http段最后的include /etc/nginx/sites-enabled/*; 注释掉,修改为#include /etc/nginx/sites-enabled/*; ,然后增加
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://localhost:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}这样就完成了整个部署功能,如果本地修改开发了功能,可以继续上传覆盖,然后重新执行以下编译、发布即可
四、保持服务器后台运行
按照上面部署之后,如果我们按Ctrl-C或关闭运行服务器的终端窗口,它将停止工作。再请求时会报错误,我们希望关闭当前会话服务也能正常运行,所以我们需要 Supervisor协助我们管理进程通过后台来运行。
4.1、安装Supervisor
运行下面命令安装Supervisor
sudo apt-get install supervisor4.2、配置Supervisor
supervisor配置需要放在/etc/supervisor/conf.d/目录下,以我们之前的项目 Lazypig 为例,在 /etc/supervisor/conf.d/ 目录下创建一个 Lazypig.conf 文件,输入以下配置信息。
例如项目存在服务器根目录下的/www/wwwroot/api_lazypig_net/Lazypig/目录
[program:lazypig]
command=/www/wwwroot/api_lazypig_net/Lazypig/.build/release/Run serve --env=production
directory=/www/wwwroot/api_lazypig_net/Lazypig/
autorestart=true
user=root
stdout_logfile=/var/log/supervisor/%(program_name)-stdout.log
stderr_logfile=/var/log/supervisor/%(program_name)-stderr.log配置说明:
command是要运行的命令,如果之前使用vapor build --release这个命令行编译的,那么就会有这个release文件夹,这样设置有代码优化。如果你想简单的设置,可以写成command=vapor run serve --env=production,这样就不需要根据目录设置了directory设置为你项目的目录autorestart设置为true,可以允许使用supervisor自动重启user填写你服务器的用户名,如果你服务器用户名是ubuntu就填写ubuntu- 后面这两个参数不用修改
4.3、运行Supervisor
进入/etc/supervisor/conf.d/目录,依次运行一下命令
sudo supervisorctl reread //重新读取配置sudo supervisorctl add lazypig //添加需要运行的配置sudo supervisorctl start hello //启动配置在运行第二步时,其实已经直接启动了配置,所以在运行第三部如果有报错说已经运行,可以忽略掉,这时候就可以让vapor持续运行了。
Vapor项目代码变更后重新运行需要重启supervisor
可以运行vapor build --release重新编译,然后运行sudo supervisorctl restart all重启更新
版权属于:东哥笔记 - DongGe.org
本文链接:https://blog.dongge.org/1059.html
本文采用知识共享署名4.0 国际许可协议进行许可。转载或大段使用必须添加本文链接,否则您将构成侵权!
微信公众号: 东哥org




