美文网首页
在 Linux(Ubuntu 18.04) 下用 Nginx 部

在 Linux(Ubuntu 18.04) 下用 Nginx 部

作者: LuSF | 来源:发表于2019-04-19 11:17 被阅读0次

    近一段时间在搞 swift 后端基于 Vapor ,开发倒是不难,不过在部署这方面经验完全是空白,所以先从最基本的开始,能部署成功就是目标。

    系统环境

    系统是白嫖腾讯云的 Ubuntu 18.04 .

    Vapor 、Swift 5  、  Nginx 、 supervisor 、yarn
    

    (因为 Vapor 的最新版还是 Swift 4.2,所以必须单独安装 Swift 5)

    前后端介绍

    本项目(Git 地址在文末)前端用的是 React ,后端用的 Swift, 是属于前后端分离的项目,因为资源有限,决定部署到同一个服务器上,并且都基于 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
    
    是不是发现少了一个 swift 5 的安装,我相信随着时间的推移 vapor 肯定会适配到 swift 5,但是现阶段还没有,所以 swift 5 的安装请参考我另一篇文章 Ubuntu 安装 swift 5

    拉取代码

    (这里就暴漏了 git 地址,不过我们公司的所有代码都是开源的,所以欢迎提 PR ,issue ,更欢迎 star ,是不是太不要脸了。

    git clone https://github.com/nervosnetwork/ckb-testnet-faucet.git
    

    安装依赖包并 Build

    其中faucet-ui 文件夹是前端静态界面,faucet-server 是后端代码。

    cd ckb-testnet-fauce/faucet-ui
    yarn
    yarn build
    
    cd cd ckb-testnet-fauce/faucet-server
    vapor build
    

    配置 Nginx

    删除 default 配置文件主要是因为想使用服务器默认80端口。

    cd /etc/nginx/sites-enabled 
    sudo rm default
    

    新建 faucet-ui 填入如下内容并且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 填入如下内容并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; // 这是应该是设置反向代理的端口为 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
    

    在这之后呢,已经可以通过 服务器地址:80 来访问前端界面了,80 可以省略。

    配置 supervisor

    Q: 为什么要用 supervisor , 我直接 vapor run 不照样可以?
    A: 可以是可以,但是你这样之后终端就无法进行其他操作,而且感觉非常江硬。使用 supervisor 之后可以让服务端后台自动运行。个人感觉非常好用

    /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
    

    然后分别执行

    sudo supervisorctl reread
    sudo supervisorctl add faucet-server
    sudo supervisorctl start faucet-server
    

    在这之后就前端项目就可以访问后台服务器了,这个项目也就可以正常跑起来了,可以说部署成功了,但是有一些细节我是忽略掉的,就是前端项目的 API 是要在部署前后自己去修改一下的,不然API地址不对干啥都不行对吧?还有就是本项目中一些服务器端的参数(从项目代码和配置文件中可以看出来),我并没有去说明,这个涉及到具体项目具体分析,能够做到按需分配即可。

    最后放上这个项目的 Git 地址 ,点击这里

    还有我以前参与开发的几个其他类别的项目,一并贴出(不要脸)。

    Cyton-iOS
    cita-sdk-swift
    Neuron 参与工作极少并且目前项目未完成

    谢谢!

    相关文章

      网友评论

          本文标题:在 Linux(Ubuntu 18.04) 下用 Nginx 部

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