近一段時間在搞 swift 后端基于 Vapor 晴音,開發(fā)倒是不難肘交,不過在部署這方面經(jīng)驗完全是空白,所以先從最基本的開始唆缴,能部署成功就是目標(biāo)鳍征。
系統(tǒng)環(huán)境
系統(tǒng)是白嫖騰訊云的 Ubuntu 18.04 .
Vapor 、Swift 5 面徽、 Nginx 艳丛、 supervisor 、yarn
(因為 Vapor 的最新版還是 Swift 4.2趟紊,所以必須單獨安裝 Swift 5)
前后端介紹
本項目(Git 地址在文末)前端用的是 React 氮双,后端用的 Swift, 是屬于前后端分離的項目霎匈,因為資源有限戴差,決定部署到同一個服務(wù)器上,并且都基于 Nginx(還不會搞 Docker)铛嘱。
依賴的安裝
不做過多介紹暖释,首先要把項目所依賴的工具或者庫安裝好袭厂。
//yarn
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update && sudo apt-get install yarn
// vapor
eval "$(curl -sL https://apt.vapor.sh)"
sudo apt-get install vapor
// nginx
sudo apt-get install nginx
// supervisor
sudo apt-get install -y supervisor
是不是發(fā)現(xiàn)少了一個 swift 5 的安裝,我相信隨著時間的推移 vapor 肯定會適配到 swift 5球匕,但是現(xiàn)階段還沒有纹磺,所以 swift 5 的安裝請參考我另一篇文章 Ubuntu 安裝 swift 5 。
拉取代碼
(這里就暴漏了 git 地址亮曹,不過我們公司的所有代碼都是開源的橄杨,所以歡迎提 PR ,issue 照卦,更歡迎 star 式矫,是不是太不要臉了。
git clone https://github.com/nervosnetwork/ckb-testnet-faucet.git
安裝依賴包并 Build
其中faucet-ui
文件夾是前端靜態(tài)界面役耕,faucet-server
是后端代碼衷佃。
cd ckb-testnet-fauce/faucet-ui
yarn
yarn build
cd cd ckb-testnet-fauce/faucet-server
vapor build
配置 Nginx
刪除 default
配置文件主要是因為想使用服務(wù)器默認(rèn)80
端口。
cd /etc/nginx/sites-enabled
sudo rm default
新建 faucet-ui 填入如下內(nèi)容并且wq
退出
sudo vim faucet-ui
server {
listen 80;
listen [::]:80;
server_name _;
root /home/ubuntu/ckb-testnet-faucet/faucet-ui/build;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
新建 faucet-server 填入如下內(nèi)容并wq
退出
sudo vim faucet-server
server {
listen 3000 default_server;
listen [::]:3000 default_server;
try_files $uri @proxy;
location @proxy {
proxy_pass http://127.0.0.1:2000; // 這是應(yīng)該是設(shè)置反向代理的端口為 2000
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;
}
}
都配置好之后最后重新啟動 Nginx
sudo systemctl restart nginx
在這之后呢蹄葱,已經(jīng)可以通過 服務(wù)器地址:80
來訪問前端界面了,80
可以省略锄列。
配置 supervisor
Q: 為什么要用 supervisor , 我直接 vapor run
不照樣可以图云?
A: 可以是可以,但是你這樣之后終端就無法進(jìn)行其他操作邻邮,而且感覺非常江硬竣况。使用 supervisor 之后可以讓服務(wù)端后臺自動運行。個人感覺非常好用
在 /etc/supervisor/conf.d/
文件夾下新建一個 faucet-server.conf
文件筒严,寫入如下配置并且 wq
退出丹泉。
[program:faucet-server]
command=/home/ubuntu/ckb-testnet-faucet/faucet-server/.build/debug/Run serve --env=dev --port 2000
directory=/home/ubuntu/ckb-testnet-faucet/faucet-server
user=ubuntu // 這里是 User
stdout_logfile=/var/log/supervisor/%(program_name)-stdout.log
stderr_logfile=/var/log/supervisor/%(program_name)-stderr.log
然后分別執(zhí)行
sudo supervisorctl reread
sudo supervisorctl add faucet-server
sudo supervisorctl start faucet-server
在這之后就前端項目就可以訪問后臺服務(wù)器了,這個項目也就可以正常跑起來了鸭蛙,可以說部署成功了摹恨,但是有一些細(xì)節(jié)我是忽略掉的,就是前端項目的 API
是要在部署前后自己去修改一下的娶视,不然API
地址不對干啥都不行對吧晒哄?還有就是本項目中一些服務(wù)器端的參數(shù)(從項目代碼和配置文件中可以看出來),我并沒有去說明肪获,這個涉及到具體項目具體分析寝凌,能夠做到按需分配即可。
最后放上這個項目的 Git 地址 孝赫,點擊這里较木。
還有我以前參與開發(fā)的幾個其他類別的項目,一并貼出(不要臉)青柄。
Cyton-iOS
cita-sdk-swift
Neuron 參與工作極少并且目前項目未完成
謝謝伐债!