Memorandum

覚書

FlaskアプリケーションをUbuntuで動かすまで

#

FlaskでちょとしたWebアプリをよくつくるので,メモ.

Ubuntu

  • Apache関連インストール
$ sudo apt udpate 
$ sudo apt upgrade
$ sudo apt install apache2

今回はシステムのPython3を利用

$ sudo apt install apache2 libapache2-mod-wsgi-py3
  • python関連インストール
$ sudo apt install python3-pip
$ sudo pip3 install -upgrade pip
$ sudo pip3 install virtualenv

Flaskアプリ

$ cd ~/
$ git clone https://github.com/tatsunode/flask-app.git 
$ cd flask-app
$ sudo pip3 install -r requirements.txt
$ vim flask-app/wsgi.py
# -*- coding: utf-8
import sys
import os
import logging

logging.basicConfig(stream=sys.stderr)
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))

from app import application

Apache設定

$ sudo ln -s ~/flask-app /var/www/flask-app
$ vim /etc/apache2/site-available/001-flask-app.conf
<VirtualHost *:80>
    LogLevel info
    DocumentRoot /var/www/flask-app
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    
    WSGIScriptAlias / /var/www/flask-app/wsgi.py
    
    <Directory "/var/www/flask-app/">
        <Files wsgi.py>
            Require all granted
        </Files>
    </Direcotry>
</VirtualHost>
$ sudo a2dissite 000-default.conf
$ sudo a2ensite 001-flask-app.conf
$ sudo systemctl restart apache2
Apaceの実行時環境変数は/etc/apache2/envvarsで設定

HTTPS

$ sudo a2enmod ssl
$ sudo vim /etc/apache2/conf-available/001-flask-app-ssl.conf
<VirtulHost *:443>
    LogLevel info ssl:warn
    DocumentRoot /var/www/wifisac
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    
    ServerAdmin ***@example.com
    ServerName ***.example.com
    
    SSLEngine on
    
    WSGIScriptAlias / /var/www/flask-app/wsgi.py
    
    <Directory "/var/www/flask-app/">
        <Files wsgi.py>
            Require all granted
        </Files>
    </Direcotry>
</VirtualHost>
$ sudo a2ensite 001-flask-app-ssl.conf

Let's Encrypt

see https://certbot.eff.org/

$ sudo add-apt-repobsitory ppa:certbot/certbot
$ sudo apt update
$ sudo apt install python-certbot-apache
$ sudo certbot --apache certonly