FlaskをuWSGIで動かしてnginxリバースプロキシで繋いでついでに無料SSLのLet’s Encryptを自動更新するメモ。
CentOS7環境にて・・・
/var/www/flask-app/ にFlaskのAppを設置する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
#まずはnginxとuwsgi、Flaskを導入する。 yum install nginx pip3 install uwsgi Flask #次にuwsgiの起動設定 vim /etc/systemd/system/uwsgi.service ### [Unit] Description = uWSGI After = syslog.target [Service] ExecStart = /usr/local/bin/uwsgi --ini /var/www/flask-app/app.ini Restart=always KillSignal=SIGQUIT Type=notify StandardError=syslog NotifyAccess=all [Install] WantedBy=multi-user.target ### # uwsgiのアプリ設定を作成 vim /var/www/flask-app/app.ini ### [uwsgi] module = main callable = app master = true processes = 4 socket = /run/uwsgi/uwsgi.sock pidfile = /run/uwsgi/uwsgi.pid chmod-socket = 666 vacuum = true die-on-term = true chdir = /var/www/flask-app ### # nginx vim /etc/nginx/conf.d/flask-app.conf ### # Nginxのリバースプロキシ設定 server { listen 80; listen 443 ssl; server_name named.virtual.hostname; ssl_certificate /etc/letsencrypt/live/named.virtual.hostname/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/named.virtual.hostname/privkey.pem; location /.well-known/acme-challenge/ { root /var/www/flask-app/ssl-challenge/; } location / { include uwsgi_params; uwsgi_pass unix:/run/uwsgi/uwsgi.sock; } } ### vim /usr/lib/tmpfiles.d/uwsgi.conf ### #ソケット置場を再起動する度に自動生成する d /var/run/uwsgi 0755 root root - ### # Let's Encryptのコマンドセットを入手して初回の証明書を取得する git clone https://github.com/certbot/certbot ~/certbot/certbot-auto certonly --webroot -w /var/www/flask-app/ssl-challenge/ -d named.virtual.hostname -m admin-mail@virtual.hostname --agree-tos -n #そして自動更新設定をする vim /var/spool/cron/admin-user ### # 2ヶ月に一度更新する 0 0 1 */2 * ~/certbot/certbot-auto certonly --webroot -w /var/www/flask-app/ssl-challenge/ -d named.virtual.hostname -m admin-mail@virtual.hostname --agree-tos -n --force-renewal; service nginx reload ### chkconfig uwsgi on chkconfig nginx on |
nginxのconfで.well-known…のロケーションのパスを切っておけばアプリ本体側に手を入れないでも最長マッチでそっちに行くので普通にcertbotの認証ファイル自動更新が出来る。 あとは、証明書更新後はnginxをリロードして新しい証明書を読み込むのを忘れないように。
(523)