Perfect部署到云服务器摘录

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 coreutilsvi ~/.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部署至云服务器之旅便到此结束了!!!真的很开心!!!向着全栈的方向越走越远!!!