Swift寫服務(wù)端三:通過Nginx和Supervisor部署Vapor項目

1.寫好自己的Vapor項目

本地安裝好Vapor,然后創(chuàng)建出自己的項目:


image.png

然后根據(jù)自己需求修改route,我把routes.swift修改成了如下內(nèi)容:

import Vapor

func routes(_ app: Application) throws {
    app.get { req in
        return "訪問接口成功!"
    }
}

2.將項目上傳GitHub

將項目上傳到GitHub,當然,你如果有別的地方存放代碼,也可以上傳到別的地方,等下在服務(wù)器上能夠拉取代碼下來即可。
這一步方法有很多,我使用的是GitHub桌面端上傳,地址是這個:https://github.com/flywo/SampleCode

3.服務(wù)端拉取代碼

使用git命令拉取GitHub代碼:

git clone https://github.com/flywo/SampleCode.git

拉取代碼過后,進入項目目錄,然后構(gòu)建項目

// 進入項目目錄
cd SampleCode/
// 構(gòu)建項目
swift build -c release

4.服務(wù)端安裝Supervisor

Supervisor 是一個進程控制系統(tǒng),可讓你輕松啟動、停止和重啟你的 Vapor 應(yīng)用程序。

apt-get install supervisor

安裝好后,使用vim創(chuàng)建出配置文件

vim /etc/supervisor/conf.d/sample-code.conf

然后輸入配置

[program:sample-code]
command=/root/SampleCode/.build/release/Run serve --env production
directory=/root/SampleCode/
autorestart=true
user=root
stdout_logfile=/var/log/supervisor/%(program_name)-stdout.log
stderr_logfile=/var/log/supervisor/%(program_name)-stderr.log

program:項目名字
command:命令的路徑
directory:項目路徑
autorestart:自動啟動開啟
user:用戶,由于我是在root用戶目錄下弄的,這里得改成root
后面兩個是日志輸出路徑。

5.啟動Supervisor

使用如下命令啟動Supervisor

supervisorctl reread
supervisorctl add sample-code
supervisorctl start sample-code

有可能add的時候,就已經(jīng)開啟了。
此時,可以在服務(wù)器上使用curl驗證是否已經(jīng)開啟。

curl localhost:8080
訪問接口成功!

6.Nginx將請求轉(zhuǎn)發(fā)給Vapor

此時外部是無法訪問8080端口的,需要通過反向代理服務(wù)器Nginx進行轉(zhuǎn)發(fā)。

// 進入/etc/nginx/sites-enabled目錄
cd /etc/nginx/sites-enabled
// 新建一個配置文件
vim samplecode.conf
// 配置文件中輸入轉(zhuǎn)發(fā)配置
server {
    server_name code.yuhua.pub;
    listen 8888;

    location / {
        proxy_pass http://127.0.0.1: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;
    }
}

我這邊是把8888接口給外部訪問,然后nginx轉(zhuǎn)發(fā)到vapor的8080端口。接下來重啟nginx。

systemctl restart nginx

7.訪問

最后,postman輸入請求看看吧:

image.png

至此,大功告成。有興趣的可以試試訪問我創(chuàng)建的這個接口:
http://code.yuhua.pub:8888

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容