ConoHa WING

ConoHa WINGでFlaskアプリをCGIで公開する方法を紹介します。

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

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

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をおすすめします。

-ConoHa WING