Python Flask環境の構築とサーバーへのデプロイ(Windows版)
ここでは、Windows環境でPython Flaskアプリをローカル開発し、その後GitHub経由でサーバーへデプロイする流れを整理します。
1. ローカル開発環境を作成する
作業フォルダを作成する
PowerShellを開き、任意の場所にプロジェクト用フォルダを作成します。
mkdir my-flask-app
cd my-flask-app
Python仮想環境を作成する
Pythonがインストールされているか確認しよう
FlaskはPythonで動作するWebフレームワークです。
そのため、まずはWindowsにPythonがインストールされているか確認します。
PowerShellを開き、以下のコマンドを実行します。
python --version
または、環境によっては次のコマンドで確認できます。
py --version
以下のようにバージョンが表示されれば、Pythonはインストール済みです。
Python 3.12.0
もしバージョンが表示されず、エラーになる場合は、Pythonがインストールされていないか、環境変数PATHが設定されていない可能性があります。
その場合は、Python公式サイトからWindows版Pythonをインストールします。
インストール時には、必ず以下の項目にチェックを入れます。
Add python.exe to PATH
インストール後、PowerShellを開き直して、もう一度確認します。
python --version
Pythonのバージョンが表示されれば準備完了です。
FlaskなどのPythonライブラリをプロジェクト単位で管理するため、.venv を作成します。
python -m venv .venv
仮想環境を有効化します。
.venv\Scripts\activate
有効化されると、ターミナルの先頭に以下のように表示されます。
(.venv) PS C:\path\to\my-flask-app>
Flaskをインストールする
pip install flask
インストール確認:
pip list
2. Flaskアプリを作成する
app.py を作成します。
notepad app.py
以下の内容を記述します。
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "Hello Flask!"
if __name__ == "__main__":
app.run(debug=True)
3. ローカルで起動確認する
python app.py
ブラウザで以下へアクセスします。
http://127.0.0.1:5000
Hello Flask! と表示されれば成功です。
終了する場合は、PowerShellで以下を押します。
Ctrl + C
4. requirements.txt を作成する
現在のPythonライブラリ構成を保存します。
pip freeze > requirements.txt
内容を確認します。
type requirements.txt
5. GitHubへプッシュする
Gitを初期化します。
git init
.venv はGitHubへアップロードしないため、.gitignore を作成します。
notepad .gitignore
以下を記述します。
.venv/
__pycache__/
*.pyc
.env
ファイルを追加してコミットします。
git add .
git commit -m "Initial Flask app"
GitHubリポジトリを登録します。
git branch -M main
git remote add origin <GitHubリポジトリURL>
git push -u origin main
6. サーバーへSSH接続する
SSH設定をしている場合:
ssh myserver
通常の接続例:
ssh -i ~/.ssh/my-key-pair.pem ubuntu@<サーバーIPアドレス>
7. サーバー側でソースコードを取得する
初回:
git clone <GitHubリポジトリURL>
cd my-flask-app
更新時:
cd my-flask-app
git pull origin main
8. サーバー側でDockerfileを用意する
サーバーでもDockerでFlaskアプリを動かす場合、プロジェクト直下に Dockerfile を作成します。
nano Dockerfile
以下を記述します。
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "app.py"]
9. compose.yml を作成する
nano compose.yml
以下を記述します。
services:
flask-app:
build: .
container_name: flask-app
ports:
- "5000:5000"
restart: always
10. Flaskの起動設定を修正する
Dockerコンテナ内で外部からアクセスできるように、app.py の起動部分を修正します。
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
修正後、GitHubへ反映します。
ローカル側:
git add .
git commit -m "Update Flask host setting"
git push
サーバー側:
git pull origin main
11. Docker Composeで起動する
サーバー側で実行します。
docker compose up -d --build
起動確認:
docker ps
ログ確認:
docker compose logs -f
12. ブラウザで確認する
サーバーIPアドレスを指定してアクセスします。
http://<サーバーIPアドレス>:5000
Flaskアプリの画面が表示されれば、サーバー上での起動は成功です。
13. Nginxでリバースプロキシを設定する
本番運用では、直接 :5000 へアクセスするのではなく、Nginxを使って通常のWebアクセスとして公開します。
sudo apt update
sudo apt install nginx -y
設定ファイルを作成します。
sudo nano /etc/nginx/sites-available/flask-app
以下を記述します。
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
設定を有効化します。
sudo ln -s /etc/nginx/sites-available/flask-app /etc/nginx/sites-enabled/
設定確認:
sudo nginx -t
Nginxを再読み込みします。
sudo systemctl reload nginx
14. HTTPS化する
Certbotを使ってSSL証明書を取得します。
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com
設定後、以下でアクセスできることを確認します。
https://example.com
15. 更新時の流れ
ローカルで修正後:
git add .
git commit -m "Update Flask app"
git push
サーバーで反映:
ssh myserver
cd my-flask-app
git pull origin main
docker compose up -d --build
ログ確認:
docker compose logs -f
まとめ
WindowsでFlaskアプリを開発する場合、ローカルでは .venv を使ってPython環境を分離し、Flaskをインストールして動作確認します。
サーバーへデプロイする際は、GitHub経由でソースコードを取得し、DockerfileとDocker Composeを使ってコンテナとして起動します。
この構成により、ローカル開発環境とサーバー実行環境を分けつつ、必要なライブラリは requirements.txt で管理できるため、再現性の高いデプロイが可能になります。


コメント