ConoHa VPS + Flask + NginxでWebアプリを公開する方法について入門者向けにまとめました。
【Flask】画像分類するWebアプリの作成
● PythonとFlask をインストールします。
sudo yum install python36 pip install Flask
●Flaskのテストアプリを作成します。
/var/www/test_app/app.py
from flask import Flask app = Flask(__name__) @app.route("/") def main(): return "TEST APP" if __name__ == "__main__": app.run(host="0.0.0.0" ,port=5000)
● 以下のコマンドを実行し、「TEST APP」と返ってきたらテスト成功です。
python run.py curl localhost:5000
● 以下のファイルを作成します。
/etc/yum.repos.d/nginx.repo
[nginx] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/ gpgcheck=0 enabled=1
● 以下コマンドでnginxをインストールします。
sudo yum install nginx
● 以下ファイルを作成します。test_appを公開するための設定を行います。
/var/www/test_app/にtest_app_nginx.confとしてファイルを作成して、次のように記述します。
server { listen 80; server_name XXX.XXX.XXX.XXX); charset utf-8; client_max_body_size 75M; location / { try_files $uri @test_app; } location @test_app { include uwsgi_params; uwsgi_pass unix:/var/www/test_app/test_app_uwsgi.sock; } }
※「XXX.XXX.XXX.XXX」にはVPSサーバーのIPアドレスを挿入します。
● 以下のコマンドを実行します。
sudo ln -s /var/www/test_app/test_app_nginx.conf /etc/nginx/conf.d/
● 以下のコマンドを実行します(Nginxを起動)。
sudo systemctl start nginx
ブラウザでhttp://(サーバーのipアドレス)/にアクセスすると502 Bat Gatewayと表示されると思います。
(uwsgiがまだ準備できていないため)
● 以下のコマンドを実行します(uwsgiのインストール)。
pip install uwsgi
● 以下のファイルを作成します。
/var/www/test_app/test_app_uwsgi.ini
[uwsgi] base = /var/www/test_app app = run module = %(app) pythonpath = %(base) socket = /var/www/test_app/%n.sock chmod-socket = 666 callable = app logto = /var/log/uwsgi/%n.log
● 以下コマンドを実行し、「/etc/uwsgi/vassals/」に「test_app_uwsgi.ini」を配置します。
sudo ln -s /var/www/test_app/test_app_uwsgi.ini /etc/uwsgi/vassals
● 以下コマンドを実行し、VPSサーバーの起動時から実行させるよう設定します。
/etc/systemd/system/uwsgi.service
[Unit] Description=uWSGI After=syslog.target [Service] ExecStart=/opt/venv/bin/uwsgi --master --emperor /etc/uwsgi/vassals --die-on-term --uid username --gid username --logto /var/log/uwsgi/emperor.log Restart=always KillSignal=SIGQUIT Type=notify StandardError=syslog NotifyAccess=all [Install] WantedBy=multi-user.target
● 以下のコマンドでWebアプリを起動します。
sudo systemctl daemon-reload sudo systemctl start uwsgi
● ブラウザでhttp://(サーバーのipアドレス)にアクセスし、「TEST APP」と表示されれば成功です。
Job for uwsgi.service failed because the control process exited with error code. See "systemctl status uwsgi.service" and "journalctl -xe" for details.
コメント