0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

UbuntuにAnaconda+Flask環境を作成する

Posted at

環境確認

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で実行

~/Anaconda3-2022.10-Linux-x86_64.sh
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

~/.bashrcexport 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

test.py
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で起動する

app.py
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
/etc/nginx/sites-available/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
/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)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?