ConoHa WINFでFlaskアプリ公開したいんだけどできるのかな?
うーん・・・少々きついですがCGIなら・・・
ConoHa WINGはレンタルサーバーなので、自分で色々自由にインストールしてアプリケーションが動く環境を整えてっていうことができません。
ただCGIなら公開もできそうなので、今回はFlaskアプリをCGIで公開したいと思います。
この記事で分かること
- ConoHa WINGでCGIを使ってFlaskアプリを公開する方法
FlaskアプリケーションをConoHa WINGで試してみたい方は多少参考になると思います。
ConoHa WINGでFlaskアプリを公開していきましょう。
公開するFlaskアプリケーション
今回ConoHa WINGで公開してみるアプリケーションはこちらのTODOアプリ。
TODOを記入すると表示されるものですね。入力したTODOはデータベースにも保存されるようにしているので、ConoHa WINGでもデータベースを使って保存していこうと思います。
ConoHa WINGでFlaskが動く環境を作る
Flaskが入っていないと動かないので、まずはFlaskが動く環境を整えるところからです。
以下の記事でやったようにpyenv使ってやっていくことにします。
-
ConoHa WINGでPythonを使う方法を紹介します。
2022/9/7
この記事ではConoHa WINGでどんな風にPythonを使うことができるのか?っていうことを書い ...
Anacondaをインストール
// pyenvをインストール
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
//bash_profileに記述
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ echo 'export TMPDIR="$HOME/tmp"' >> ~/.bash_profile
$ source ~/.bash_profile
// installしたいバージョンを確認
$ pyenv install -l | grep anaconda
// anacondaをインストール
$ pyenv install anaconda3-2022.05
// anacondaのパスを通す
$ echo 'export PATH=/home/○○/.pyenv/versions/anaconda3-2022.05/bin:$PATH' >> ~/.bash_profile
$ source ~/.bash_profile
$ conda --version
conda 4.12.0
$ python --version
Python 3.9.12
flaskをインストール
$ conda install flask
他のモジュールをインストール
アプリケーションで使うものをインストールしておきます。今回はpymysqlしか使わないので、インストールしておきます。
$ pip install pymysql
ConoHa WINGからFlaskアプリケーションに使うデータベースを作成する
今回のFlaskアプリケーションはDB接続するので、DBを作成します。ユーザーも作成しておきましょう。
ここで作成したデータベースにアプリケーションからアクセスして使えるようにします。
アプリケーションのDB接続情報を書き換える
アプリケーションには今作成したデータベースにアクセスさせたいので、アプリケーションコードでDB接続している部分を変更します。
host="作成したDBのホスト名",
db="作成したDB名",
user="作成したユーザー名",
password="作成したユーザーのパスワード",
charset='utf8',
cursorclass=pymysql.cursors.DictCursor
アプリケーションコードをConoHa WINGにアップロードする
ローカルで作成したFlaskアプリケーションのコードを公開したいドメイン名のフォルダにアップロードします。
アップロードにはFTPソフトを使おう
サーバーにファイルをアップロードする際にはFTPソフトを使ってやるといいです。
以下の記事で接続方法を書いているので、わからなかったら参考にしてみてください。
-
ConoHa WINGでFTP接続・SFTP接続する方法を紹介します。
2022/9/8
この記事ではConoHa WINGでFTP接続とSFTP接続する方法について書いていきたいと思います ...
CGIファイルを作成する
今回はCGIを使ってやるのでCGIファイルを作成します。
#! /home/ユーザー名/.pyenv/versions/anaconda3-2022.05/bin/python
from wsgiref.handlers import CGIHandler
from index import app
CGIHandler().run(app)
先頭に実行するpythonを指定しているけど、ConoHa WINGに元から入っているpythonを使いたかったらそのパス#! /opt/alt/python36/bin/python3.6
を指定してあげるといいです。
.htaccessを作成する
作成したcgiファイルにアクセスさせるように.htaccessを作成します。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app/index.cgi/$1 [QSA,L]
パーミッションは755に変更する
作成したCGIファイルのパーミッションは755に変更しておきましょう。
ファイルマネージャーからなら属性変更から行うことができます。
必要なデータベースのテーブルを作成する
Seederか何かを用意していればいいんですが、今回は何もないのでphpmyadminから直接データベースのテーブルを作ります。
ここでSQLを記述してtodosテーブルを作成しました。
ちゃんとやる場合には、SQLを用意しておくかアプリケーション側でmigrationやSeeder実行などをするといいでしょう。
ドメインにアクセスする
今回は初期ドメインのフォルダにアップロードしたので初期ドメインにアクセスして確かめます。
TODOを追加してみてもちゃんと動きましたね。
まとめ
FlaskアプリケーションをCGIを使ってConoHa WINGで公開するっていうことをやってみたけど、ちょっと面倒ですね。今回やったこととしては以下です。
- ConoHa WINGでデータベース・テーブルを作成する
- 作成したデータベースに合うようにアプリケーションの接続情報を変更する
- ConoHa WINGにアプリケーションコードをアップロードする
- CGIファイルを作成する
- .htaccessを作成する
レンタルサーバーだと自分で自由にできる範囲が狭いからちょっとしんどいです。アプリケーションを公開したいならConoHa WINGではなくて、ConoHa VPSをおすすめします。