美文网首页
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