swift web框架 Vapor 使用記錄(三)

阿里云vapor部署走起

上次雙12捺癞,用新賬戶擼了個3年的阿里云服務器夷蚊,決定就把服務器端部署在阿里云上。

1.安裝 寶塔面板

沒啥說的髓介,管理省事惕鼓,圖形化對于我這種菜鳥來說比較友好。我阿里云的服務器是centOS 7.6.

ssh root@xxx.xxx.xxx.x ? ? ? ? ? ?//ip地址

連接到服務器以后唐础,進入 寶塔官網(wǎng)?選擇你的系統(tǒng)箱歧,復制口令安裝,選擇centOS的原因是寶塔這貨基于這個系統(tǒng)開發(fā)的一膨,我想應該在這個系統(tǒng)上會好一些呀邢。

經(jīng)過一陣等待以后,終端會給一個網(wǎng)址(服務器的ip+端口號)豹绪,賬號密碼价淌,復制進瀏覽器里,進入面板。

編譯安裝Nginx蝉衣,其它的軟件暫且不裝括尸。

安裝完成以后,點擊網(wǎng)站病毡,創(chuàng)建一個網(wǎng)站濒翻。創(chuàng)建個網(wǎng)站,然后點擊設置啦膜。


g'j

打開設置界面有送,選中配置文件,更改網(wǎng)站Nginx的配置


內(nèi)容參考如下:

server

{

? ? listen 80 default_server;

? ? server_name 域名;

? ? #靜態(tài)文件的地址

? ? root /home/server/Public;?

? ? index ?index.html?

? ? try_files $uri @proxy;

? ? location @proxy {

? ? ? ? proxy_pass http://localhost:8080;

? ? ? ? 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;

? ? }


? ? #SSL-START SSL相關配置僧家,請勿刪除或修改下一行帶注釋的404規(guī)則

? ? #error_page 404/404.html;

? ? #REWRITE-START URL重寫規(guī)則引用,修改后將導致面板設置的偽靜態(tài)規(guī)則失效

? ? #include /www/server/panel/vhost/rewrite/178huigo.com.conf;

? ? #REWRITE-END


? ? access_log? /www/wwwlogs/178huigo.com.log;

? ? error_log? /www/wwwlogs/178huigo.com.error.log;

}


保存娶眷,然后配置ssl,在阿里云申請一個免費的域名證書啸臀,下載Nginx版本的届宠,解壓以后,包含一個key類型文件和一個pem類型文件乘粒,右鍵--打開方式--更多--文本文檔打開(也可以直接在終端 cat 文件名來顯示)豌注,然后將上面的內(nèi)容分別復制下來,填入寶塔面板的對應位置灯萍。


保存轧铁,就可以了,試著訪問下你的域名吧旦棉。

但是現(xiàn)在網(wǎng)站上啥都沒有齿风,開始布置vapor的服務器吧。

1. 安裝 docker

沒啥說的绑洛,進入官方網(wǎng)站救斑,找到服務器版本對應的文檔,我是用centOS真屯,所以安裝centOS 版本的脸候,按照官方文檔的安裝步驟,一步一步執(zhí)行即可

(1)卸載老版本

$ sudo yum remove docker \

? ? ? ? ? ? ? ? ? docker-client \

? ? ? ? ? ? ? ? ? docker-client-latest \

? ? ? ? ? ? ? ? ? docker-common \

? ? ? ? ? ? ? ? ? docker-latest \

? ? ? ? ? ? ? ? ? docker-latest-logrotate \

? ? ? ? ? ? ? ? ? docker-logrotate \

? ? ? ? ? ? ? ? ? docker-selinux \

? ? ? ? ? ? ? ? ? docker-engine-selinux \

? ? ? ? ? ? ? ? ? docker-engine

新機器跳過此步绑蔫。

(2)設置倉庫

$ sudo yum install -y yum-utils \

? device-mapper-persistent-data \

? lvm2

$ sudo yum-config-manager \

? ? --add-repo \

? ? https://download.docker.com/linux/centos/docker-ce.repo

(3)開始安裝

$ sudo yum install docker-ce

(4)啟動docker

$ sudo systemctl start docker


2.安裝postgresql

$ docker pull postgres ? ? ? ? ? ? ? ? ? //拉取官方最新鏡像

$ docker run --name data -v 本機文件路徑:/var/lab/progres/data/ ?--restart=always?-e POSTGRES_PASSWORD=密碼 -e POSTGRES_USER=用戶 -e DATABASE=數(shù)據(jù)庫 -d -p 5432:5432 postgres

說明下运沦,--name 是給容器設置的名字,可以讓同一局域網(wǎng)的容器使用name進行訪問配深,比如我們之前在代碼里寫的數(shù)據(jù)庫hostname:“data”携添。

-v 是設置數(shù)據(jù)卷,冒號前面的是主機的文件夾篓叶,冒號后面是容器里的文件夾烈掠,倆文件夾映射同步羞秤,可用來備份容器里的資料啥的。

--restart=always ?自啟動向叉,docker啟動就會運行數(shù)據(jù)庫。

-e 設置參數(shù)嗦董,分別設置了數(shù)據(jù)庫名母谎,數(shù)據(jù)庫用戶,數(shù)據(jù)庫密碼

-p端口映射

postgres是鏡像的名字京革。

3. 安裝Vapor?

在此之前奇唤,我們先對自己的代碼做些更改,以印證數(shù)據(jù)庫安裝成功匹摇。

實現(xiàn)功能: 在數(shù)據(jù)庫里創(chuàng)建一個webs表 里面包含倆字段咬扇,一個是name,一個是webURL

然后在Mac端運行的vapor服務器上post到數(shù)據(jù)庫一個 百度廊勃,www.baidi.com的行進數(shù)據(jù)庫懈贺。

之后在阿里云的服務器上get出來。

(1)代碼修改

用Xcode打開hello 工程坡垫,在Model文件夾中梭灿,新添一個Web.swift文件,targets選擇APP,內(nèi)容如下:

import?Foundation

import Vapor

import?FluentPostgreSQL

final class Web: PostgreSQLUUIDModel {? //遵守這個協(xié)議或者PostrgeSQLModel協(xié)議

? ? static?var?entity: String ? ?{return?self.name+"s"} ? ??//數(shù)據(jù)庫建表的時候會加個s

? ? var ??id: UUID?

? ? var ??name: String

? ? var ??webURL: String

? ? init(name: String,webURL: String) {

? ? ? ? self.name= name

? ? ? ? self.webURL= webURL

? ? }

}

extension Web: Migration { }

extension Web: Content { }



在configure.swif里面

添加:

migrations.add(model: Web.self,database: .psql)


在Controllers文件夾里增加一個文件:WebsController.self

import?Foundation

import Vapor

finalclass?WebsController:RouteCollection{

? ? func?boot(router:Router)?throws{

? ? ? ? let?webs = router.grouped("webs")? //創(chuàng)建一個路由組/webs

? ? ? ? webs.get("all", use:getAllHandle)//獲取所有的web

? ? ? ? webs.post(Web.self, at:"creart", use:createHandle)//創(chuàng)建一個

? ? }

}

extension WebsController {

? ? func?getAllHandle(req:Request)?throws->Future<[Web]> {

? ? ? ? return?Web.query(on: req).all()

? ? }

? ? func?createHandle(req:Request, web:Web)throws->Future {

? ? ? ? return?try?req.content.decode(Web.self).map(to:HTTPStatus.self, { (web)? in

? ? ? ? ? ? _= web.save(on: req)

? ? ? ? ? ? return?HTTPStatus.created

? ? ? ? })

? ? }

}


在這個控制器里寫了一個路由組冰悠,/webs堡妒,然后寫了倆路由請求,一個是/webs/all 獲取所有溉卓,一個是/webs/create皮迟。添加一個新的。

下面將路由控制器注冊一下桑寨。

在 routes.swift中添加:

try?router.register(collection:WebsController())



運行伏尼,顯示服務開啟在localhost:8080 ,由于我們的代碼中指定在mac環(huán)境下尉尾,就訪問阿里云的域名:5432端口的烦粒,如果運行成功,就代表代赁,現(xiàn)在阿里云的數(shù)據(jù)庫已經(jīng)正常在運行了扰她,并且已經(jīng)連接上了。

下面我們來請求一下試試芭碍,


成功


再添加幾個之后俊戳,我們來測試一下get


成功,

這說明我們的阿里云上面的數(shù)據(jù)庫容器運行正臭镎郏。現(xiàn)在來把這個vapor版的hello world 上傳到服務器上吧杉女。

docker build -》docker push 參照前文來一遍即可。

現(xiàn)在回到阿里云鸳吸,將你現(xiàn)在的鏡像pull下來

然后開始運行

$ docker run --name vapor -itd -p 8080:80 xiaocainiao/vapor:v1.0.1 ? ?//具體的根據(jù)你的鏡像來


不出意外的話熏挎,容器里的程序直接崩了,然后容器退出晌砾,為啥呢坎拐,因為代碼里配置的主機名:data:5432 ,它現(xiàn)在還訪問不到,所以崩了养匈,我們需要把它們加在一個局域網(wǎng)里

$ docker network create vapor_net

然后將你現(xiàn)在的這倆需要請求的容器添加到這個網(wǎng)絡中

$ docker ps -a ? ?//查詢所有的容器

$ docker network connect ?vapor_ net ?容器ID ? ? // 執(zhí)行這條命令將已存在的容器加入到網(wǎng)絡中

然后重啟vapor的容器

$ docker start vapor容器的ID


然后訪問站點試試吧~ vapor is work~

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哼勇,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子呕乎,更是在濱河造成了極大的恐慌积担,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件猬仁,死亡現(xiàn)場離奇詭異帝璧,居然都是意外死亡,警方通過查閱死者的電腦和手機湿刽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門聋溜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人叭爱,你說我怎么就攤上這事撮躁。” “怎么了买雾?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵把曼,是天一觀的道長。 經(jīng)常有香客問我漓穿,道長嗤军,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任晃危,我火速辦了婚禮叙赚,結果婚禮上,老公的妹妹穿的比我還像新娘僚饭。我一直安慰自己震叮,他們只是感情好,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布鳍鸵。 她就那樣靜靜地躺著苇瓣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪偿乖。 梳的紋絲不亂的頭發(fā)上击罪,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天哲嘲,我揣著相機與錄音,去河邊找鬼媳禁。 笑死眠副,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的竣稽。 我是一名探鬼主播囱怕,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼丧枪!你這毒婦竟也來了光涂?” 一聲冷哼從身側(cè)響起庞萍,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤拧烦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后钝计,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恋博,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年私恬,在試婚紗的時候發(fā)現(xiàn)自己被綠了债沮。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡本鸣,死狀恐怖疫衩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情荣德,我是刑警寧澤闷煤,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站涮瞻,受9級特大地震影響鲤拿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜署咽,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一近顷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧宁否,春花似錦窒升、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至絮重,卻和暖如春冤寿,著一層夾襖步出監(jiān)牢的瞬間歹苦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工督怜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留殴瘦,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓号杠,卻偏偏與公主長得像蚪腋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子姨蟋,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一屉凯、Docker 簡介 Docke...
    極客圈閱讀 10,501評論 0 120
  • linux 查看系統(tǒng)版本確認使用的docker版本 uname -a --查看Linux內(nèi)核版本命令cat /pr...
    只有香如故閱讀 1,222評論 1 4
  • 五、Docker 端口映射 無論如何眼溶,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機是訪問不到的悠砚。此外,除了...
    R_X閱讀 1,749評論 0 7
  • 一.docker 是什么: 2.安裝docker 系統(tǒng):ubuntu16.04 使用腳本自動安裝 Docker 官...
    Black_Sun閱讀 2,117評論 0 2
  • 霾堂飞、霾灌旧、霾...嗓子都不舒服,呼吸困難绰筛,寶寶也是感冒鼻子難受枢泰,晚上休息不好。是去是留铝噩?懷孕時因為霧霾老公就極力要回...
    AI成長家閱讀 91評論 0 0