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 update
1.2、执行安装Vapor
sudo apt-get install swift vapor
1.3、安装成功验证
安装成功之后,可以执行下面的命令看是否安装成功
swift --version
2、服务器新建项目
2.1、创建服务器项目
vapor new <name>
记得把<name>
修改成你的项目目录名字,比如MyProject
2.2、把本地创建的的项目文件上传覆盖
把本地项目的Package.swift
、Sources
文件夹和Public
文件夹的内容上传到服务器项目进行覆盖,如果在本地项目中使用的数据库地址,用户名密码和服务器不一样,记得都修改成服务器的
2.3、服务器编译项目
上传好之后,运行下面命令进行编译,第一次编译会比较耗时
vapor build
2.3、运行项目
编译好之后,运行下面命令运行即可
vapor run
3、服务器配置
因为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 supervisor
4.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://dongge.org/blog/1059.html
自2017年12月26日起,『转载以及大段采集进行后续编辑』须注明本文标题和链接!否则禁止所有转载和采集行为!