🦍

FlaskアプリをさくらVPSでデプロイしてみた

2023/05/25に公開

ゴール:さくらVPS上のapp.pyを起動し、It Works!と表示させる

HerokuなどのPaasサービスはいくつも記事がありましたが、VPSサーバーの記事はあまりなかったのでここに書き留めておきます。

開発環境

  • M1Mac(Ventura 13.3.1)
  • さくらVPS
  • VScode
  • 既にSSH接続できる
  • さくらVPS内にApacheはインストール済

やったこと

実際にやったことを書いていきます。

app.pyの中身

まず今回起動させるFlaskのコードはこちらです。

app.py
from flask import Flask

# おまじない
app = Flask(__name__)

@app.route("/")
def test():
    return "<h1>It Works!</h1>"

# Webサーバーを起動するおまじない
if __name__ == "__main__":
    app.run(debug=True)

SSH接続する

以下のコマンドでSSH接続を行なってください。

$ ssh username@IPアドレス

SSH接続をしたら、app.pyがあることを確認してください。無ければapp.pyファイルを作成し、

$ touch app.py

viエディタなどを使いコピペしてください。

$ vi app.py

VSCodeでSSH接続 | SRIA BLOG – 宮城県仙台市のWEBシステム開発・スマホアプリ開発 https://www.sria.co.jp/blog/2021/06/5316/

Apacheの設定と起動

Apache2に対し、リバースプロキシの設定を行うことで、80(http) → 5000(Flaskのデフォルト)ポートへの転送を行います。

まずApacheの設定をviエディタで開きます。

$ vi /etc/apache2/sites-available/000-default.conf

開いた設定の中に、以下のようなコードを追加します。

/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
  ...
  ProxyPreserveHost On
  ProxyPass / http://localhost:5000/
  ProxyPassReverse / http://localhost:5000/
</VirtualHost>

なお、Flaskアプリケーションのポート番号が5000でない場合は、:5000 の部分を正しい番号に書き換えてください。
設定が完了したら、Apache2を起動します。

$ sudo service apache2 start

Flaskの導入と起動

$ pip3 install flaskなどでFlaskをインストールしたら、$ python app.pyで起動してみましょう。

このように表示されれば起動成功です 🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳

 * Serving Flask app 'app'
 * Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on http://127.0.0.1:5000
Press CTRL+C to quit

ブラウザから元のIPアドレスにアクセスして確認してみてください

[Ctrl] + [C] でFlaskを終了できます

やってみた結果


成功した時のブラウザ見た目
さくらVPS上のapp.pyを起動し、It Works!と表示させることが出来ました。また、さくらVPS内からGithubにアクセスできるようにするとチーム開発ではもっと便利になります。

おわりに

デプロイとは?というところから始まったが、目標を達成できてよかった。これからFlaskいっぱい使ったるで〜🔥

Discussion