美文网首页
Swift写服务端三:通过Nginx和Supervisor部署V

Swift写服务端三:通过Nginx和Supervisor部署V

作者: 狂奔的胖蜗牛 | 来源:发表于2022-06-13 00:29 被阅读0次

1.写好自己的Vapor项目

本地安装好Vapor,然后创建出自己的项目:


image.png

然后根据自己需求修改route,我把routes.swift修改成了如下内容:

import Vapor

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

2.将项目上传GitHub

将项目上传到GitHub,当然,你如果有别的地方存放代码,也可以上传到别的地方,等下在服务器上能够拉取代码下来即可。
这一步方法有很多,我使用的是GitHub桌面端上传,地址是这个:https://github.com/flywo/SampleCode

3.服务端拉取代码

使用git命令拉取GitHub代码:

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

拉取代码过后,进入项目目录,然后构建项目

// 进入项目目录
cd SampleCode/
// 构建项目
swift build -c release

4.服务端安装Supervisor

Supervisor 是一个进程控制系统,可让你轻松启动、停止和重启你的 Vapor 应用程序。

apt-get install supervisor

安装好后,使用vim创建出配置文件

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的时候,就已经开启了。
此时,可以在服务器上使用curl验证是否已经开启。

curl localhost:8080
访问接口成功!

6.Nginx将请求转发给Vapor

此时外部是无法访问8080端口的,需要通过反向代理服务器Nginx进行转发。

// 进入/etc/nginx/sites-enabled目录
cd /etc/nginx/sites-enabled
// 新建一个配置文件
vim samplecode.conf
// 配置文件中输入转发配置
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转发到vapor的8080端口。接下来重启nginx。

systemctl restart nginx

7.访问

最后,postman输入请求看看吧:

image.png
至此,大功告成。有兴趣的可以试试访问我创建的这个接口:
http://code.yuhua.pub:8888

相关文章

网友评论

      本文标题:Swift写服务端三:通过Nginx和Supervisor部署V

      本文链接:https://www.haomeiwen.com/subject/cgdnmrtx.html