MatomeAntenna.com

情報の「今」を繋ぐ、アンテナポータルサイト

Webアプリをデプロイする方法

サーバーの準備ができたら、Gitからコードをデプロイし、24時間365日稼働させるための設定を行います。

1. GitHubとの連携(SSH鍵の設定)

GitHubから安全にコードを取得するために、サーバー専用の鍵を作成します。

  1. サーバーでSSH鍵を作成(すべてEnterでOK):
    ssh-keygen -t ed25519 -C "your_email@example.com"
  2. 公開鍵を表示してコピーします:
    cat ~/.ssh/id_ed25519.pub
  3. 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による公開設定(安全な手順)

デフォルト設定は残したまま、新しい設定ファイルを作成して有効化します。

  1. 新しい設定ファイルを作成:
    sudo nano /etc/nginx/sites-available/プロジェクト名
  2. 設定を記述(ドメインやポートは適宜変更):
    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;
        }
    }
  3. シンボリックリンクを作成して有効化し、再起動:
    sudo ln -s /etc/nginx/sites-available/プロジェクト名 /etc/nginx/sites-enabled/
    sudo nginx -t  # 構文チェック
    sudo systemctl restart nginx

デプロイが完了したら、次はブラウザでサイトにアクセスし、アプリが表示されれば成功です!次はSSL化(HTTPS)してセキュリティを高めましょう。

次のステップ SSL化(HTTPS)と自動実行(Cron)の設定をする