そう思っていても、いざターミナルに向かうと何から始めればいいのか迷う人は多いです。
この記事では、PythonのWebフレームワーク「Flask」をWSL2(Ubuntu)またはVPSにインストールして、実際にブラウザから確認できる状態にするまでの手順を解説します。gunicornとNginxを組み合わせた本番公開の方法まで、コマンドの実行結果つきで説明します。
この記事のポイント
・venvで仮想環境を作りFlaskをインストールして最初のアプリを動かせる
・flask runで開発サーバーを起動してブラウザからアクセスする方法がわかる
・gunicorn + Nginxで本番公開する基本的な構成が理解できる
・「Address already in use」などよくあるエラーの対処法も解説する
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
なぜLinuxでWebアプリを動かす練習が役に立つのか
PythonでWebアプリを書くだけなら、ローカルのWindowsでも動きます。でも、実際の現場でWebサービスを公開するのはLinuxのサーバー上がほとんどです。WSL2やVPSでFlaskを動かす練習をしておくと、次のことが自然に身につきます。
・Linuxのファイル操作やパーミッションの感覚
・仮想環境(venv)とパッケージ管理の考え方
・プロセスの起動・停止とポートの使われ方
・gunicornやNginxというサーバーソフトの役割
「Flaskが動いた」という達成感が、Linuxを使い続けるモチベーションになります。コマンドを打ちながら体で覚えるのが一番の近道です。
WSL2(Ubuntu)にFlaskをインストールする
ここではWSL2のUbuntu 24.04 LTSを前提に説明します。VPS(ConoHa・さくら等のUbuntu 22.04/24.04)でも同じ手順で動きます。1. Pythonのバージョンを確認する
Ubuntu 24.04にはPython 3が標準で入っています。まずバージョンを確認しましょう。$ python3 --version Python 3.12.3
sudo apt install python3 でインストールできます。2. venvで仮想環境を作る
Flaskは仮想環境(venv)内にインストールするのが鉄則です。システム全体のPythonに直接インストールすると、別のプロジェクトと依存パッケージが衝突する原因になります。# アプリ用のディレクトリを作成 $ mkdir myapp && cd myapp # 仮想環境を作成(venvという名前のディレクトリに作られる) $ python3 -m venv venv # 仮想環境を有効化(有効化するとプロンプトの先頭に(venv)が付く) $ source venv/bin/activate (venv) $
(venv) とプロンプトに表示されれば有効化成功です。以降のコマンドは、この仮想環境内で実行されます。3. Flaskをインストールする
(venv) $ pip install flask Collecting flask Downloading flask-3.1.0-py3-none-any.whl.metadata (2.9 kB) Collecting Werkzeug>=3.1 (from flask) ...(中略)... Successfully installed Jinja2-3.1.4 MarkupSafe-2.1.5 Werkzeug-3.1.3 blinker-1.8.2 click-8.1.7 flask-3.1.0 itsdangerous-2.2.0
最初のFlaskアプリを作って動かす
1. app.pyを作成する
テキストエディタ(nanoやvim)でapp.py を作ります。(venv) $ nano app.py
from flask import Flask app = Flask(__name__) @app.route("/") def index(): return "Hello, Linux!" if __name__ == "__main__": app.run(debug=True)
2. Flask開発サーバーを起動する
(venv) $ flask run * Debug mode: off WARNING: This is a development server. Do not use it in a production deployment. * Running on http://127.0.0.1:5000 Press CTRL+C to quit
http://127.0.0.1:5000 でリッスンしているのが確認できます。3. ブラウザで確認する(WSL2の場合)
WSL2ではWindowsのブラウザからhttp://localhost:5000 にアクセスできます。「Hello, Linux!」と表示されれば成功です。ターミナルには次のようなアクセスログが流れます。
127.0.0.1 - - [23/Aug/2026 09:14:32] "GET / HTTP/1.1" 200 -
VPSでFlaskアプリを本番公開する
開発サーバー(flask run)は本番環境に向いていません。本番では「gunicorn(ガニコーン)」というWSGIサーバーを使い、Nginxをリバースプロキシとして前段に置くのが定番の構成です。1. gunicornをインストールして起動する
(venv) $ pip install gunicorn # app.pyのappオブジェクトをgunicornで起動(4プロセス) (venv) $ gunicorn -w 4 -b 127.0.0.1:8000 app:app [2026-08-23 09:20:10 +0900] [12345] [INFO] Starting gunicorn 23.0.0 [2026-08-23 09:20:10 +0900] [12345] [INFO] Listening at: http://127.0.0.1:8000 (12345) [2026-08-23 09:20:10 +0900] [12345] [INFO] Worker booting (pid: 12346) [2026-08-23 09:20:10 +0900] [12345] [INFO] Worker booting (pid: 12347)
-w 4 はワーカープロセス数です。CPUコア数 × 2 + 1 が目安とされています。2. Nginxをリバースプロキシとして設定する
Nginxのインストールはsudo apt install nginx で行います。設定ファイル(/etc/nginx/sites-available/myapp)に以下を記述します。server { listen 80; server_name example.com; # 自分のドメインまたはIPアドレスに変更 location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
# シンボリックリンクを作成して設定を有効化 $ sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/ # 設定ファイルの文法チェック $ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful # Nginxを再起動 $ sudo systemctl restart nginx
よくあるエラーと対処法
「Address already in use」が出た場合
ポート5000や8000がすでに使われているときに出るエラーです。# ポート5000を使っているプロセスを調べる $ ss -tlnp | grep 5000 LISTEN 0 128 127.0.0.1:5000 0.0.0.0:* users:(("python3",pid=99999,fd=5)) # プロセスを終了する $ kill 99999
「ModuleNotFoundError: No module named 'flask'」が出た場合
仮想環境が有効化されていない状態でflaskを実行しようとしたときに起こります。# myappディレクトリに移動してから仮想環境を有効化 $ cd myapp $ source venv/bin/activate (venv) $ flask run
(venv) が付いていることを確認してからコマンドを実行してください。VPSでflask runにWSL2の外からアクセスできない場合
デフォルトでは127.0.0.1(ローカルループバック)でしかリッスンしていません。VPSで外部から確認したい場合は起動時に --host 0.0.0.0 を付けます(開発・テスト目的のみ)。# 開発・テスト用のみ。本番ではgunicorn + Nginxを使うこと (venv) $ flask run --host 0.0.0.0 * Running on all addresses (0.0.0.0) * Running on http://127.0.0.1:5000 * Running on http://203.0.113.10:5000
本記事のまとめ
| やること | コマンド |
|---|---|
| 仮想環境を作成する | python3 -m venv venv |
| 仮想環境を有効化する | source venv/bin/activate |
| Flaskをインストールする | pip install flask |
| 開発サーバーを起動する | flask run |
| gunicornで本番起動する | gunicorn -w 4 -b 127.0.0.1:8000 app:app |
| 使用中のポートを調べる | ss -tlnp | grep 5000 |
| Nginxの設定テストをする | sudo nginx -t |
関連記事 ~ ここから実践的なスキルを身につける
FlaskをLinuxで動かすには、周辺のLinuxスキルが必ず役に立ちます。以下の記事でそれぞれのテーマを深掘りしてみてください。・シェルスクリプト:set -xコマンドでシェルスクリプトをデバッグする方法 ~ gunicorn起動スクリプトの問題を追いやすくなる
・セキュリティ:firewall-cmdコマンドでポートを開放・管理する方法 ~ VPSでFlaskを公開する前にポートを正しく制御する
・サーバー構築:nmcliコマンドでネットワーク接続を設定する方法 ~ VPSのネットワーク設定を確実に理解する
・トラブルシューティング:straceコマンドでプロセスのシステムコールを追跡する方法 ~ gunicornが起動しない原因をシステムコールレベルで調べる
・ネットワーク:ssコマンドでソケット情報を確認する方法 ~ Flaskが正しいポートでリッスンしているか確認する
・ディスク操作:duコマンドでディレクトリの使用量を調べる方法 ~ アプリのログやデータが増えたときのディスク管理
・Linux Tips:loggerコマンドでシステムログに記録する方法 ~ Flaskアプリのエラーをsyslogに残して追跡する
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
FlaskやNginxを使いこなしながら、実務で通用するサーバー管理のスキルを体系的に身につけたい方は、ぜひ受け取ってみてください。
無料マニュアルを受け取る >>
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:WSL2でAWS CLIをセットアップする入門|WindowsからAWSのEC2・S3を操作する最初のステップ
- この記事の属するカテゴリ:【Linux入門】初心者のための基礎知識・講座へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます