FlaskアプリをさくらVPSでデプロイしてみた
ゴール:さくらVPS上のapp.pyを起動し、It Works!と表示させる
HerokuなどのPaasサービスはいくつも記事がありましたが、VPSサーバーの記事はあまりなかったのでここに書き留めておきます。
開発環境
- M1Mac(Ventura 13.3.1)
- さくらVPS
- VScode
- 既にSSH接続できる
- さくらVPS内にApacheはインストール済
やったこと
実際にやったことを書いていきます。
app.pyの中身
まず今回起動させるFlaskのコードはこちらです。
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
開いた設定の中に、以下のようなコードを追加します。
<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