Deploying-a Scalable Flask Application on Raspberry Pi with Gunicorn and Nginx: A Step-by-Step Guide


概念図

永続デプロイの手順

01. リポジトリのクローン

git clone https://github.com/kichinosukey/coffee_receipe_generator

02. gunicornを使って起動テスト

pip install gunicorn

gunicorn --bind 0.0.0.0:8000 app:app

03. systemdの設定と永続化

アプリをサービス登録して、システム起動時に自動開始させる

sudo vim /etc/systemd/system/coffee_receipe_generator

[Unit]
Description=hoge

[Service]
ExecStart=/opt/coffee_receipe_generator/venv/bin/gunicorn --bind 0.0.0.0:8000 app:app
WorkingDirectory=/opt/coffee_receipe_generator
User=USERNAME
Group=GROUP
Restart=always

[Install]
WantedBy=multi-user.target
  • サービス開始と自動起動の有効化
sudo systemctl start coffee_receipe_generator
sudo systemctl enable coffee_receipe_generator

04. (参考)nginxを使ったデプロイ

  • nginxインストール
sudo apt install nginx

  • nginxをプロキシとして構成する
sudo vim /etc/nginx/sites-available/coffee_receipe_generator

server {
   listen 80;
   server_name YOUR_DOMAIN.COM;  # 設定しているドメイン名に置き換え、ローカルの場合はIPアドレス

   location / {
       include proxy_params;
       proxy_pass http://unix:/opt/coffee_receipe_generator/coffee_receipe_generator.sock;
   }
}
  • nginxの設定を有効化して再起動
 sudo ln -s /etc/nginx/sites-available/coffee_receipe_generator /etc/nginx/sites-enabled
 sudo nginx -t
 sudo systemctl restart nginx

まとめ

  • 自宅でデプロイするだけなのでnginx入らないが、一連の手順を経験してみたかったのでやってみたが非常に手早くできた
  • apacheなど他の選択肢もあったとは思うが、apacheの場合はwsgiのmodを入れたりする必要があってややこしそうなのでnginxを選んだ
, , ,