很早就听说Swift可以开发后台,但是一直没有机会体验。
最近有点时间学习了一下vue和Vapor3.0,目前正在看4.0的文档,但是国内这方面的文档太少了,所以把自己的搭建环境的心得写一下吧,网上很多教程没法用,我反正是国内国外都逛了一下。
服务器环境:ubuntu16.04
需要安装:
git
vapor-toolbox
swift
Supervisor
mysql
按照命令来:下边的东西挨着在你的ubuntu16.04上执行就行了
安装swift
经过我的测试,vapor3配合swift4.1是有个报错的,不好处理。所以我直接升级的swift5.3,也是没问题的。
安装编译器:
sudo apt-get install clang libicu-dev
下载安装包:其中的版本号是可以改的,自己随意
wget https://swift.org/builds/swift-5.3-release/ubuntu1804/swift-5.3-RELEASE/swift-5.3-RELEASE-ubuntu16.04.tar.gz
下载签名文件
wget https://swift.org/builds/swift-5.3-release/ubuntu1804/swift-5.3-RELEASE/swift-5.3-RELEASE-ubuntu16.04.tar.gz.sig
导入签名
wget -q -O - https://swift.org/keys/all-keys.asc | \
gpg --import -
验证签名
gpg --verify swift-5.3-RELEASE-ubuntu16.04.tar.gz.sig
解压
tar zxvf swift-5.3-RELEASE-ubuntu16.04.tar.gz
环境变量
export PATH=/root/swift-5.3-RELEASE-ubuntu16.04/usr/bin:"${PATH}"
//刷新环境变量
sourece ~/.profile
安装:vapor-toolbox
网上搜了很多,包括官方文档里边都是说要curl一个脚本文件去安装vapor,但是经过我无数次测试,那个脚本文件估计早就不能用了,根本行不通。
git clone https://github.com/vapor/toolbox.git
cd toolbox
git checkout <desired version>
swift build -c release --disable-sandbox
mv .build/release/vapor /usr/local/bin
试一下
vapor version
安装Mysql
https://zhuanlan.zhihu.com/p/64080934
现在,安装 MySQL 5.7,简单输入下列命令:
sudo apt install mysql-server -y
验证
sudo systemctl status mysql.service
如果没有运行
sudo systemctl start mysql.service
回车跳过
sudo mysql_secure_installation
登录
mysql -h host_name -u user -p
mysql -u root -p
守护进程Supervisor
参考这个兄弟写的: https://www.jianshu.com/p/31033d588846
更新配置并启动
supervisorctl update
如果看到
SS: stopped
SS: updated process group
说明启动成功
[program:SS]
command=/root/SwiftService/.build/debug/Run
directory=/root/SwiftService
autostart=true
autorestart=true
user=root
stdout_logfile=/var/log/supervisor/%(program_name)-stdout.log
stderr_logfile=/var/log/supervisor/%(program_name)-stderr.log
~
东西都安装的差不多了。
把你的swift代码拉到本地来,cd进去,试一下
vapor run
常见的错误有端口被占用,会提示你address什么的,
kill -9 端口号
或者是内存不足(个人服务器不大的情况下)
如果没报错就运行
swift build
然后在你的项目根
cd .build
ls
如果有
debug文件或者release文件就大功告成。
后续就是用Supervisor来后台运行了。
后期还会写一些vapor3.0升级4.0的文章,如果你遇到了什么问题我们可以一起讨论。
网友评论