LinuxのUbuntuサーバー環境でNginx+uWSGI+Flaskの環境構築をする手順
皆様おはこんばんにちは、せなです
本日はLinux環境での開発環境構築方法を解説致します
初めに
構築には以下を使用します
- Nginx
- uWSGI
- Flask
初めて環境構築する方に向けて、簡単にそれぞれの役割を解説いたします。
Nginxはクライアントとのやり取りを行うWebサーバーの一つです
類似したWebサーバーにApacheがありますが、そちらと比較して多人数からの同時アクセス処理に優れているなどの特徴があります
uWSGIはPythonのWebアプリケーションをWebサーバーとやり取りさせるためのアプリケーションサーバーの一つです
PythonにはWSGIと呼ばれる規約が存在しており、規約に則った方法でWebサーバーとアプリケーションサーバー間でのやり取りを行います
詳しく知りたい方は下記のリンクを参照してください
リンク: PEP3333
FlaskはPythonの小規模開発でよく使用される、フレームワークの一つです
詳しくは以下の記事にまとめていますのでご確認ください。
リンク:Python初心者向けの小規模なフレームワーク「Flask」のインストールと簡単な使い方
構築準備
まずpipコマンドがインストールされていることを確認しましょう
pip3 -V
恐らく「pipコマンドが入っていないよ」とエラーが出るはずですので、以下のコマンドを使用してpipをインストールしましょう
sudo apt install python3-pip
念のためにpip3としておりますが、Python2系が入っていないならpipでも問題ないです
次にNginxのインストールを行います
sudo apt install nginx
これで正しくインストールされていれば以下のコマンドで「Active: active (running) 」と表示されます
# バージョン確認
nginx -V
sudo systemctl status nginx
次はuWSGIをインストールします
インストール時にCコンパイラが必要ですので「clang」もインストールします
sudo apt install clang
CC=`which clang` pip3 install uwsgi
sudo apt install uwsgi-plugin-python3 libpcre3 libpcre3-dev
最後にFlaskをインストールします
sudo pip3 install flask
これで準備は完了です
次は設定ファイルを変更していきましょう
Nginxの設定
Nginxの設定ファイルは「/etc/nginx/」配下に全て格納します
デフォルトでは「/etc/nginx/nginx.conf」に設定が記載されていますので、そのファイルを修正しましょう
以下のコマンドでファイルを開きます
sudo vi /etc/nginx/nginx.conf
その中から以下の記載を探してください
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
「include /etc/nginx/sites-enabled/*;」については使用しないため、コメントアウトにします
include /etc/nginx/conf.d/*.conf;
# include /etc/nginx/sites-enabled/*;
次にファイルを作成しましょう
(ファイル名については任意の名前で大丈夫です)
sudo vi /etc/nginx/conf.d/default.conf
server {
listen 80;
location / {
include uwsgi_params;
uwsgi_pass unix:///usr/local/app/tmp/uwsgi.sock;
}
}
簡単に行っていることを説明しておくと、listenで外部からのリクエストを受け付けるポートを指定
location内ではuWSGIのSoketと繋げています
(今は細かいことは気にせずにおまじない程度に考えておいてください)
uWSGIの設定
次にuWSGIの設定ファイルですが、ファイルを作成して以下を記載してください
sudo vi /etc/nginx/conf.d/uwsgi.conf
server {
listen 5050;
error_log /var/log/nginx/error.log warn;
location / {
include uwsgi_params;
uwsgi_pass unix:///usr/local/app/tmp/uwsgi.sock;
uwsgi_ignore_client_abort on;
}
}
Flaskの設定
最後にFlaskの設定を行いますが、初めにFlask用にディレクトリを作りましょう
sudo mkdir /usr/local/app
次にuwsgi起動のためにファイルを作成します
sudo vi /usr/local/app/uwsgi.ini
[uwsgi]
plugins-dir = /usr/lib/uwsgi/plugins
plugin = python38
chdir = /usr/local/app
# アプリケーションのベースフォルダ
base = /usr/local/app
# pythonモジュールのインポート
app = main
module = %(app)
# ソケットの場所
socket = /usr/local/app/tmp/uwsgi.sock
# ソケットの許可
chmod-socket = 666
# appの保持
callable = app
# ログの場所
logto = /var/log/uwsgi/%n.log
# 諸々の設定
master = true
processes = 10
vacuum = true
die-on-term = true
max-requests = 100
harakiri = 60
reload-mercy = 5
worker-reload-mercy = 5
ignore-sigpipe=true
ignore-write-errors=true
disable-write-exception=true
「plugin =」には環境内のpythonバージョンを指定しましょう
「Python3 -V」で確認できます
上記は、python3.8なので「python38」としています
次に以下のファイルに記載して、uwsgiをサービスに登録していきましょう
sudo vi /etc/systemd/system/uwsgi.service
[Unit]
Description=uWSGI instance to serve uwsgi
After=network.target
[Service]
User=root
Group=root
WorkingDirectory=/usr/local/app
Environment="LD_LIBRARY_PATH=/usr/lib"
ExecStart=/usr/bin/uwsgi --ini uwsgi.ini
[Install]
WantedBy=multi-user.target
念のためパーミッションの変更を行います
sudo chmod 664 /etc/systemd/system/uwsgi.service
最後に自動起動で設定しておきます
sudo systemctl enable uwsgi
sudo systemctl restart uwsgi.service
sudo systemctl status uwsgi.service
ここでは「Active: active (running) 」と表示されなくても問題ありません
最後にFlaskのアプリケーションを作成しましょう
アプリケーションファイルの設置
インストールと設定は終わりましたので、最後にアプリケーションを配置しましょう
まずは、ディレクトリの作成と所有者などを変更しましょう
sudo mkdir -p /usr/local/app/tmp
sudo chmod 777 /usr/local/app
sudo chown root:root /usr/local/app
sudo mkdir /var/log/uwsgi
sudo chown root:root /var/log/uwsgi
後は、「main.py」と「index.html」を指定のディレクトリに作成します
sudo vi /usr/local/app/main.py
from flask import Flask,render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
if __name__ == "__main__":
app.run()
sudo vi /usr/local/app/templates/index.html
<html>
<head>
<title>sample</title>
<body>
<h1>Hello world!</h1>
</body>
</head>
</html>
以上で完了です
使用中のサーバー環境のIPアドレスにアクセスすれば「Hello World!」が表示されると思います
最後に
ここまでお読みいただきありがとうございます
最近Linuxサーバーを借りて開発環境を構築した際の備忘録となります
今回の記事がお役に立てたなら幸いです
ではでは~
ディスカッション
コメント一覧
まだ、コメントがありません