在 Linux(Ubuntu 18.04) 下用 Nginx 部署 swift 后端服務(wù)器

近一段時間在搞 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 參與工作極少并且目前項目未完成

謝謝伐债!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末预侯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子泳赋,更是在濱河造成了極大的恐慌雌桑,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祖今,死亡現(xiàn)場離奇詭異校坑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)千诬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門耍目,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人徐绑,你說我怎么就攤上這事邪驮。” “怎么了傲茄?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵毅访,是天一觀的道長。 經(jīng)常有香客問我盘榨,道長喻粹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任草巡,我火速辦了婚禮守呜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘山憨。我一直安慰自己查乒,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布郁竟。 她就那樣靜靜地躺著玛迄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪棚亩。 梳的紋絲不亂的頭發(fā)上憔晒,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機(jī)與錄音蔑舞,去河邊找鬼拒担。 笑死,一個胖子當(dāng)著我的面吹牛攻询,可吹牛的內(nèi)容都是我干的从撼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼低零!你這毒婦竟也來了婆翔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤掏婶,失蹤者是張志新(化名)和其女友劉穎啃奴,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雄妥,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡最蕾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了老厌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瘟则。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖枝秤,靈堂內(nèi)的尸體忽然破棺而出醋拧,到底是詐尸還是另有隱情,我是刑警寧澤淀弹,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布丹壕,位于F島的核電站,受9級特大地震影響薇溃,放射性物質(zhì)發(fā)生泄漏菌赖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一痊焊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧忿峻,春花似錦薄啥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至绰寞,卻和暖如春到逊,著一層夾襖步出監(jiān)牢的瞬間闯袒,已是汗流浹背鬼廓。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工僧叉, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留窍霞,地道東北人闹获。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓吻氧,卻偏偏與公主長得像僚匆,于是被迫代替她去往敵國和親憋飞。 傳聞我的和親對象是個殘疾皇子他炊,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354