Webアプリをデプロイする方法
公開日: 2026年2月10日
サーバーの準備ができたら、Gitからコードをデプロイし、24時間365日稼働させるための設定を行います。
1. GitHubとの連携(SSH鍵の設定)
GitHubから安全にコードを取得するために、サーバー専用の鍵を作成します。
- サーバーでSSH鍵を作成(すべてEnterでOK):
ssh-keygen -t ed25519 -C "your_email@example.com" - 公開鍵を表示してコピーします:
cat ~/.ssh/id_ed25519.pub - GitHubの Settings -> SSH and GPG keys -> New SSH key に貼り付けて保存します。
2. コードの取得と環境構築
cd ~
# リポジトリをクローン
git clone git@github.com:ユーザー名/リポジトリ名.git プロジェクト名
cd ~/プロジェクト名
# 仮想環境の作成と起動
python -m venv venv
source venv/bin/activate
# ライブラリのインストール
pip install --upgrade pip
pip install -r requirements.txt
3. Systemdによる自動起動設定
サーバーが再起動しても、アプリが自動で立ち上がるように設定します。
sudo nano /etc/systemd/system/プロジェクト名.service
以下の内容を記述します:
[Unit]
Description=Gunicorn instance to serve Flask App
After=network.target
[Service]
User=username
Group=www-data
WorkingDirectory=/home/username/プロジェクト名
Environment="PATH=/home/username/プロジェクト名/venv/bin"
ExecStart=/home/username/プロジェクト名/venv/bin/gunicorn --workers 3 --bind 127.0.0.1:8000 app:app
[Install]
WantedBy=multi-user.target
サービスの有効化:
sudo systemctl daemon-reload
sudo systemctl start プロジェクト名
sudo systemctl enable プロジェクト名
4. Nginxによる公開設定(安全な手順)
デフォルト設定は残したまま、新しい設定ファイルを作成して有効化します。
- 新しい設定ファイルを作成:
sudo nano /etc/nginx/sites-available/プロジェクト名 - 設定を記述(ドメインやポートは適宜変更):
server { listen 80; server_name example.com www.example.com; location / { proxy_pass http://127.0.0.1:8000; include proxy_params; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } - シンボリックリンクを作成して有効化し、再起動:
sudo ln -s /etc/nginx/sites-available/プロジェクト名 /etc/nginx/sites-enabled/ sudo nginx -t # 構文チェック sudo systemctl restart nginx