【2日目】 Ubuntu Server 22.04にPython + flask + uWSGI + Nginxの環境を構築

開発用の環境として、Ubuntu Sever 22.04 LTSにPython + Flask + uWSGI + Nginxをインストールしていきます。

Nginxインストール

Nginxが用意しているリポジトリを使ってインストールを行っていきます。

インストールの詳しい手順は、こちらのページ解説していますので参考にしてみてください。

Pythonインストール

aptを使ってPythonのインストールを行っていきます。

Pythonの仮想環境を作成するためのツールであるvenv(python3.10-venv)とパッケージ管理システムであるpip(python3-pip)もあわせてインストールします。

$ sudo apt update
$ sudo apt install python3
$ sudo apt install python3.10-venv
$ sudo apt install python3-pip

Pythonの仮想環境について

Pythonで開発を行う場合には仮想環境を作成して、そこで開発を行っていくのが良いとBard先生教えてもらいました。

venvは、Pythonの仮想環境を作成するためのツールです。仮想環境を使うことで、複数のPythonアプリケーションをそれぞれ独立した環境で開発することができます。

それぞれ独立した環境を作成できるということは、ライブラリの競合や、バージョンの違いに起因する問題を防ぐことできます。

これについては、サーバの仮想化と同じようなものなので、すんなりとイメージがつかめました。

フレームワークであるFlaskやWSGIサーバであるuWSGIは、作成した仮想環境ごとにインストールするという形なります。

仮想環境作成

仮想環境は下記のコマンドで作成することができます。

python3 -m venv 仮想環境名

これで、指定した仮想環境名と同じ名前で仮想環境用のディレクトリが作成されます。

作成例

ユーザのホームディレクトリに、project_pyというディレクトリを作成し、その中にHelloWorldという名前で仮想環境を作成します。

$ mkdir project_py
$ cd project_py
$ python3 -m venv HelloWorld

HelloWorldというディレクトリが作成されました。

$ ls -l
total 4
drwxrwxr-x 5 tamohiko tamohiko 4096 Nov 14 23:43 HelloWorld

仮想環境の有効化

作成した仮想環境は、以下のコマンドで有効化させる必要があります。

source 仮想環境名/bin/activate

仮想環境が有効化されると、プロンプトの最初に(仮想環境名)というような表示が追加されます。

有効化の例

実際に先程作成した仮想環境を有効化してみます。

$ source HelloWorld/bin/activate
(HelloWorld) $

仮想環境の無効化

有効化した仮想環境を無効化する場合は、以下のコマンドを実行します。

deactivate

無効化例

実際に仮想環境を無効化してみます。

(HelloWorld) $ deactivate
$ 

プロンプトの最初に表示されている(仮想環境名)の表示が消えて、Pythonの仮想環境が無効化されたことが確認できます。

Flaskインストール

PythonのフレームワークであるFlaskを、pipを使って仮想環境にインストールします。

(HelloWorld) $ pip3 install flask

正常にインストールされたのかを確認するためにFlaskのバージョンを確認しておきます。

(HelloWorld) $ flask --version
Python 3.10.12
Flask 3.0.0
Werkzeug 3.0.1

uWSGIのインストール

UWSGIサーバであるuWSGIをpipを使って仮想環境にインストールします。

(helloworld) $ pip3 install uwsgi

正常にインストールされたのかを確認するためにuWSGIのバージョンを確認しておきます。

(helloworld) $ uwsgi --version
2.0.23

仮想環境にpipでインストールされたパッケージの確認

仮想環境内にpipでインストールされたパッケージを確認するためにはpip3 listコマンドを使用します。

(helloworld) $ pip list
Package      Version
------------ -------
blinker      1.7.0
click        8.1.7
Flask        3.0.0
itsdangerous 2.1.2
Jinja2       3.1.2
MarkupSafe   2.1.3
pip          22.0.2
setuptools   59.6.0
uWSGI        2.0.23
Werkzeug     3.0.1

仮想環境を無効化しているときにpip listコマンドを実行して、内容を比べてみるとインストールされているパッケージの違いがわかるので、本当に仮想化されているのだと実感できますね。

コメント

タイトルとURLをコピーしました