1
以下是利用vapor框架,将swift写的api项目部署到后台云服务器中,总结的步骤,每台机器环境不一样,仅供参考。

vapor and swift

mysql | nginx | psql | swiftenv |

1
2
3
4
5
6
$ sudo apt-get update 
$ sudo apt-get upgrade
$ eval "$(curl -sL https://apt.vapor.sh)"
$ sudo apt-get install swift vapor
$ sudo apt-get install nginx
$ sudo apt-get install supervisor

配置域名解析

A — api.xxx.com

nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# /etc/nginx/site-avaliables/default
server {
server_name hello.com;
listen 80;
root /home/vapor/Hello/Public/;
try_files $uri @proxy;
location @proxy {
proxy_pass http://127.0.0.1:8080;
proxy_pass_header Server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Server;
proxy_connect_timeout 3s;
proxy_read_timeout 10s;
}
}
1
2
3
sudo service nginx stop
sudo service nginx start
sudo service nginx restart
1
【注意】如果nginx端口等相关配置更改了,需要执行以上3句命令 ,如果8080端口配置出错,可以改用其他端口,Swift项目中也相应修改

Supervisor

/etc/supervisor/conf.d/

1
2
3
4
5
6
7

[program:hello]
command=/home/vapor/hello/.build/release/Run serve --env=production
directory=/home/vapor/hello/
user=www-data
stdout_logfile=/var/log/supervisor/%(program_name)-stdout.log
stderr_logfile=/var/log/supervisor/%(program_name)-stderr.log
1
2
3
supervisorctl reread
supervisorctl add hello
supervisorctl start hello
1
2
3
4
5
6
7
8
9
【注意】  如果执行$supervisorctl start hello后报错,“supervisor: child process was not spawned” ,
可以通过下面的命令来处理

备用命令
sudo supervisorctl stop all
sudo supervisorctl reread
sudo supervisorctl reload
sudo supervisorctl start all
sudo supervisorctl restart api (备注:刷新api配置,api替换成你自己的)

接口修改上线流程

本案例通过git管理代码,在后端ubuntu系统项目路径拉取最新最新代码,

1
git pull

项目路径下,通过vapor编译成release包

1
vapor build --release

如’/home/ubuntu/QsonAppApi/.build/release/Run’,后面会对Run进行访问,涉及权限问题,需要给Run设置权限,避免后续因权限问题报错

1
sudo chmod a+x /home/ubuntu/QsonAppApi/.build/release/Run

然后执行supervisorctl相关命令,步骤常驻后台设置

刷新

1
sudo supervisorctl restart api

其他说明:
cat /etc/supervisor/conf.d/api.conf 可以查看supervisor接口相关配置,也可把‘user=www-data’去掉

本帖引用自 OHeroJ 的 原创帖 Vapor3系列之hello小项目从0到部署上线