Vapor 3プロジェクト0から導入まで

4803 ワード

環境
  • macOS 10.15.1 & swift 5
  • Xcode 11.2.1
  • Ubantu 18.04 & swift 5

  • ターゲットvaporアプリケーションを作成し、9090ポートを使用して xxx.com vaporアプリケーション`を実行します.
    ubantuへのアプリケーションの導入
    手動でrepoを追加します.
    wget -q https://repo.vapor.codes/apt/keyring.gpg -O- | sudo apt-key add -
    echo "deb https://repo.vapor.codes/apt $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/vapor.list
    sudo apt-get update
    

    関連環境のインストール
    sudo apt-get update 
    sudo apt-get upgrade
    eval "$(curl -sL https://apt.vapor.sh)"
    sudo apt-get install swift vapor
    sudo apt-get install nginx
    sudo apt-get install supervisor
    

    プロジェクトのコンパイル
    FootprintVaporプロジェクトを引き出す
    git clone xxx.git
    

    プロジェクトのコンパイル
    cd FootprintVapor
    vapor build --release
    

    コンパイル情報の表示
    /root/code/FootprintVapor/.build/release/Run serve  --env=production
    ./.build/release/Run serve --env=production
    

    nginx
    nginx構成の追加
    cd /etc/nginx/sites-enabled/
    vim xxx.com;//    
    

    xxx.comプロファイルに追加
    server {
        server_name xxx.com; #            
        listen 80;
        root /home/vapor/Hello/Public/; #            Public,             
        try_files $uri @proxy; #       
        location @proxy {
            proxy_pass http://127.0.0.1:9090;
            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;
        }
    }
    

    構成を有効にする
    sudo service nginx restart
    

    nginx常用コマンド
    sudo nginx -t //          
    sudo service nginx stop //   
    sudo service nginx start //   
    sudo service nginx restart //   
    sudo service nginx reload//     
    

    無料HTTPS証明書
    Certbot Certbotのインストールは、Let's Encrypt証明書の管理(申請、更新、構成、取り消し、削除など)に使用できます.ここにはnginxプラグイン付きcertbotがインストールされています.
    sudo apt-get install software-properties-common
    sudo add-apt-repository -y ppa:certbot/certbot
    sudo apt-get install -y python-certbot-nginx
    

    申請証明書はcertbotコマンドを使用してxxx.comにHTTPS証明書を申請します.--nginxオプションは、Webサーバがnginxであることを示し、-dオプションはドメイン名を指定し、-nオプションは非インタラクティブな実行コマンドを表す.-nオプションを削除すると、端末はhttpリクエストをhttpリクエストにリダイレクトするかどうかを選択するように注意します.
    certbot --nginx -d xxx.com -n --email [email protected] --agree-tos
    

    証明書の申請が成功した後.Let's Encrypt証明書の有効期間は3ヶ月しかありません.証明書を更新するには簡単なコマンドが必要です.
    sudo certbot renew
    

    スケジュールタスクの自動更新
    Timers
    Certbotは/lib/systemd/system/の下で2つのファイルを生成した:certbot.servicecertbot.timer、1つはサービスであり、1つはタイマーである.certbot.service:
    [Unit]
    Description=Certbot
    Documentation=file:///usr/share/doc/python-certbot-doc/html/index.html
    Documentation=https://letsencrypt.readthedocs.io/en/latest/
    [Service]
    Type=oneshot
    ExecStart=/usr/bin/certbot -q renew
    PrivateTmp=true
    
    certbot -q renewコマンドも実行されていることがわかります.certbot.timer:
    [Unit]
    Description=Run certbot twice daily
    
    [Timer]
    OnCalendar=*-*-* 00,12:00:00
    RandomizedDelaySec=43200
    Persistent=true
    
    [Install]
    WantedBy=timers.target
    

    毎日0時と12時にcertbot.serviceをアクティブにします.実はこんなに頻繁に証明書を更新する必要はありません.また、証明書を更新するときにフックをつけてNginxサービスを閉鎖して開くので、夜明けにウェブサイトにアクセスしていないときに証明書を更新したほうがいいです.少し修正します.
    [Unit]
    Description=Run certbot every 05:00
    
    [Timer]
    OnCalendar=*-*-* 05:00:00
    Persistent=true
    
    [Install]
    WantedBy=timers.target
    

    毎日午前5時に証明書を更新します.期限切れの30日前に更新を申請するしかないので、60日前にこの任務は何もしていませんでした.
    変更を保存するには、タイマーを再起動する必要があります.
    systemctl daemon-reload
    systemctl restart certbot.timer
    

    supervisor
    supervisorの構成
    cd /etc/supervisor/conf.d
    sudo vim FootprintVapor.conf 
    
    FootprintVapor.confに追加
    [program:FootprintVapor]
    command=/root/code/FootprintVapor/.build/release/Run serve --env=production
    directory=/root/code/FootprintVapor/
    user=root 
    stdout_logfile=/var/log/supervisor/%(program_name)-stdout.log
    stderr_logfile=/var/log/supervisor/%(program_name)-stderr.log
    

    command:実行するコマンドdirectory:プロジェクトのパスuser:実行者、すなわち現在ログインしているユーザー名
    ファイルを保存してから、構成を有効にします.
    sudo supervisorctl reread
    sudo supervisorctl add FootprintVapor
    sudo supervisorctl start FootprintVapor
    

    OKプロジェクト構成完了
    supervisor常用コマンド
    supervisorctl status
    supervisorctl reload
    supervisorctl update
    supervisorctl stop
    sudo supervisorctl stop all
    sudo supervisorctl start all