連載第五回目です。
前回の4. Pythonのバージョンを3.Xにする記事で、Pythonのバージョン管理をディレクトリごとに行えるようになりました。
ただし、アプリごとにモジュールのバージョンは変えることができません。
特に、機械学習や統計学関係だとモジュールを変える必要がたまにあります。
そのため、今回はvenvを使って、アプリごとにモジュールの管理を行えるような環境を作りましょう。
この記事は、VPSで作るPythonでのWebアプリ運用環境の連載記事です。
その他については上記ページをお読みください。
1. 環境の確認
3. NginxでHello Worldで簡単に確認した内容を再確認します。
今回確認したいのは、Nginxの公開ディレクトリ関連のフォルダです。
パス | 説明 |
---|---|
/etc/nginx/ | Nginxの設定ファイルが色々と入っている |
/etc/nginx/nginx.conf | Nginx設定ファイル |
/var/log/nginx/ | ログ保存ディレクトリ |
/usr/share/nginx/html/ | WEBサイトの公開ディレクトリ |
なぜかというと、「アプリをどのディレクトリに入れて、どの仮想環境で実行するか」を系統立てて決めておいた方が後の管理が楽だからです。
今回構想しているディレクトリ構成は以下の通りです。
/usr/share/nginx ┗ app アプリ用ディレクトリ | ┗ アプリA | ┗ アプリB | ┗ アプリC ┗ venv 仮想環境用ディレクトリ | ┗ アプリA用環境 | ┗ アプリB&C用環境 ┗ html 静的ファイル設置用
そのため、以降は上記に従ってアプリAを動かせるようなアプリA用環境を作っていきます。
そのために、まずは基本的なディレクトリを作っておきます。
mkdir /usr/share/nginx/app mkdir /usr/share/nginx/venv
2. venv環境の作成
まずは、アプリA用環境のためのディレクトリを作成します。
mkdir /usr/share/nginx/venv/app_a
下記コマンドで仮想環境を作成します。
python -m venv /usr/share/nginx/venv/app_a
※完了した表示は一切出ませんが、エラーが出なければ問題ないです。
3. venv環境の利用
venv環境をアクティブにします。
source /usr/share/nginx/venv/app_a/bin/activate
アクティブ化に成功すると、下記のように(環境名)[ログインユーザー名@ログイン場所 ディレクトリ名]が表示されます。
仮想環境を使うことで、その環境内でインストールしたPythonモジュールはその環境内でのみ有効となります。
どこまでがアプリA用の環境であるのか区分がはっきりするので非常に扱いやすくなります。
仮想環境内でpythonインタプリタを実行する場合は下記コマンドを使用します。
python
pythonファイルを実行する場合は下記コマンドを使用します。
python XXX.py
仮想環境を非アクティブ化するには下記コマンドを使用します。
deactivate
その他の詳細はvenv公式サイトをご覧ください。
おわりに
今回はvenvを使い、モジュールの管理を簡単にすることができました。
しかし、今の状態ではNginx(Webサーバー)上で動的なサイトを表示することはできません。
そのため、次回はNginx Unit(APサーバー)を用いて、簡単なPythonアプリを作成してWebサイトで公開してみましょう!
この記事は、VPSで作るPythonでのWebアプリ運用環境の連載記事です。
次は、6. Nginx Unit+venv+FlaskでHello Worldです。