環境確認
lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 20.04.2 LTS
Release: 20.04
Codename: focal
Anacondaのinstall
wgetでダウンロードしてきます。
https://www.anaconda.com/products/distribution#Downloads
https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh
ダウンロードしたスクリプトをbashで実行
bash Anaconda3-2022.10-Linux-x86_64.sh
Welcome to Anaconda3 2022.10
In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue
>>>
ひたすらEnter押すと同意するか聞かれるのでyes
Do you accept the license terms? [yes|no]
[no] >>>
Please answer 'yes' or 'no':'
>>> yes
インストールの場所を聞かれるので作成したユーザーのホームに置く
Anaconda3 will now be installed into this location:
/root/anaconda3
- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below
[/root/anaconda3] >>> /home/katsuji/anaconda3
condaのバージョン確認の前にパスが通っていないのでパスを通してあげます。
vi ~/.bashrc
~/.bashrc
にexport PATH=~/anaconda3/bin:$PATH
をどこでもいいので記述します。
最後に.bashrcを更新します。
source ~/.bashrc
condaの確認
conda -V
conda 22.9.0 #OK
Flask環境の作成
conda create -n flask
flask環境内にflaskをインストール
conda activate flask
(flask) katsuji@XXX:~$ conda install flask
ディレクトリ構成
~/flask_app
├── app.py
└── test.py
uWSGI
uwsgiのインストール
デフォルトのチャンネルからはinstallできなかったのでconda-forgeから
(flask) katsuji@XXX:~/$conda install -c conda-forge uwsgi
uwsgiの動作確認
下記サイトを参考にしました。というかそのままです。 https://serip39.hatenablog.com/entry/2020/07/06/070000
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World uWSGI"]
uwsgiの動作確認
(flask) katsuji@XXX:~/flask_app$ uwsgi --http :8000 --wsgi-file test.py
http://127.0.0.1:8000
に接続して「Hello World uWSGI」が出てきたらOK
自分の場合はレンタルサーバーで行なっているのでhttp://X.X.X.X:8000
に接続。Xの部分はレンタルサーバーのIPアドレス
Flaskをuwsgiで起動する
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello world Flask"
if __name__ == "__main__":
app.run()
(flask) katsuji@XXX:~/flask_app$ uwsgi --http :8000 --wsgi-file app.py --callable app
確認
localhost http://127.0.0.1:8000
レンタルサーバーhttp://X.X.X.X :8000
"Hello world Flask"が出力されたらOK
nginxの設定
nginxのinstall と確認
conda deactivate
でflask環境を出る
#nginx install
sudo apt install nginx
#start nginx
sudo /etc/init.d/nginx start
http://127.0.0.1:80
に接続して「Welcome to nginx!」が出てきたらOK
自分の場合はレンタルサーバーで行なっているのでhttp://X.X.X.X:80
に接続。Xの部分はレンタルサーバーのIPアドレス
nginxの設定 configの編集
cd /etc/nginx/sites-available
sites-available
内のdefaultを今回のアプリ用にapp_nginx.conf
としてコピーします。
sudo cp default ./app_nginx.conf
# Virtual Host configuration for example.com
server {
listen X.X.X.X80; #Xの部分を省略してlisten 80;とするとlocalhostに接続
server_name example.com;
location / {
include uwsgi_params;
uwsgi_pass unix:/tmp/uwsgi.sock;
}
}
site-available
-> site-enabled
にシンボリックリンク
# シンボリックリンクの作成
cd /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/app_nginx.conf app_nginx.conf
app_nginx.conf
だけを読み込むように/etc/nginx/nginx.conf
を編集する。
sudo vi /etc/nginx/nginx.conf
# Virtual Host Configs
include /etc/nginx/conf.d/*.conf;
#include /etc/nginx/sites-enabled/*; #コメントアウト
include /etc/nginx/sites-enabled/*.conf; #app_nginx.confを読む
nginxとuwsgiを接続する
uwsgiサーバーの起動
uwsgi --ini myapp.ini
別のターミナルでnginxを起動
sudo /etc/init.d/nginx start
参考
大変参考になりました。ありがとうございます。
【Python】Flaskの本番環境構築(Flask + uWSGI + Nginx)