Perfect部署到云服务器摘录
========================
部署过程中我先用的下面的教程
附链接:https://blog.csdn.net/z123sen/article/details/80248345
遇到的第一个问题
linux 下解压 tar.gz文件
百度了之后,使用命令行tar -xvzf filename.tar.gz
解决
遇到的第二个问题
云服务器搭建Swift环境
这里我发现前面的教程不够好,总是搭建不成功,于是我又找到了其他教程
使用这个教程我成功搭建了Swift环境
遇到的第三个问题
这段时间github访问不了,需要翻墙
Perfect有许多依赖库在github上面,所以需要获取到github上的依赖库
现在我想到了两个办法,一是服务器翻墙,二是在mac上翻墙,然后将依赖库下载下来,上传到没有被墙的代码托管仓库,我会选择Coding,因为之前就用过,在这之后,修改Perfect各个依赖仓库的代码,把有关github的url全部改成Coding的url,标签尽量保持一致。
权衡之下,我选择了第二个办法,linux翻墙也是件麻烦事,mac上我有无数个vpn随便翻
不过也是很麻烦,费了几个小时整理依赖库,修改代码。
幸运的是,不出所料,一顿改动后,代码总算是运行起来了,这个时候已经出现了[INFO] Starting HTTP server localhost on 0.0.0.0:8080
。
也就是说我成功将Perfect项目在服务器跑了起来。
遇到的第四个问题
公网无法访问
到这里,项目只能在服务器localhost上跑,公网访问不到
然后我又找了半天,找到Perfect官方文档的一个nginx配置教程,链接是https://github.com/PerfectlySoft/PerfectDocs/blob/master/guide.zh_CN/deployment-DigitalOcean.md
遇到的第五个问题
nginx配置到想吐
上面那个文档写得很一般,我配了半天,也只是配出个 bad gateways
然后我又找了其他教程
虽然用处不大,但我还是想到了把http://127.0.0.1:8181
换成了http://localhost:8080
遇到的第六个问题
一顿nigix配置下来,还是无法从公网访问
然后我又找了一堆内网穿透教程、外网访问服务器教程等等,皆无果
我觉得我需要海量Perfect部署至服务器教程,我就又这样搜起来了,总有成功访问的吧。
我又找到了下面这个教程
对比了之前的教程,我发现了一个非常严重却不容易发现的问题
遇到的第七个问题
安全组设置问题
我为Perfect项目设置了8080窗口
在云服务器控制台,我以为安全组有个80就可以了,没怎么关注这个安全组,真是上面的教程救我于危难之际。
居然要配置这么个东西,端口范围,他配置的是8181/8181
那么我岂不是要配置个8080/8080,我就抱着试试的态度,没想到居然成功了,外网一直无法访问,竟然是因为安全组的这个端口范围,我真是一把辛酸泪啊,终于成功了!
附上该教程链接,我超喜欢这个教程https://www.foolishtalk.org/2017/08/21/%E5%A6%82%E4%BD%95%E5%9C%A8%E9%98%BF%E9%87%8C%E4%BA%91%E4%B8%8A%E9%83%A8%E7%BD%B2Perfect%E6%9C%8D%E5%8A%A1%E5%99%A8/
这个时候已经可以从公网调用接口了,感觉稳了,一切都值得
没想到还有第八个问题
遇到的第八个问题
项目无法持续在服务器跑
我远程连接一关,远程的终端一关,这个服务器他就不跑了,可我需要这个项目在服务器上一直跑下去,这样我才能随时调用接口
于是我又搜教程,然后一篇文章给了我启发,利用nohup来让Perfect项目保持运行
我并没有按照上面教程来
我使用的是apt install coreutils
、vi ~/.profile
(我在.profile中按照教程写入了PATH=$PATH:$HOME/bin:/usr/bin
)、source ~/.profile
弄完这些
我在Perfect项目目录下使用 swift build
、编译完之后使用nohup .build/debug/PerfectTemplate
成功地让项目保持运行
如果想要停止运行,只需要关闭端口即可
即lsof -i:端口号
获取到Perfect项目在对应端口号下的PID
使用kill 该PID
便能关闭端口,停止项目的运行
好了,本次Swift Perfect部署至云服务器之旅便到此结束了!!!真的很开心!!!向着全栈的方向越走越远!!!