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
- 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
$ sudo add-apt-repobsitory ppa:certbot/certbot $ sudo apt update $ sudo apt install python-certbot-apache $ sudo certbot --apache certonly