そんな疑問を解消するためにこの記事ではFlaskアプリケーションをConoHa WINGで動かすっていうことをやっていきます。
公開するアプリケーションはFlaskで作ったTODOアプリケーションでデータベースも使います。ではやっていきましょう。
使用するConoHaWINGスペック
今回使うのはConoHa WINGのベーシックプラン。WINGパックの一番安いやつです。
このプランで契約したサーバーがあるからそれを使ってやっていきます。もしまだの場合は、以下の記事を参考にプランを選んでみるといいです。
Flaskアプリケーションを作成する
まずは公開したいアプリケーションをFlaskで作る。単純なTODOアプリを今回は公開してみます。
ConoHaWINGで公開していきましょう。
ConoHaWINGでFlaskアプリケーションを動かす方法
ConoHaWINGではCGIを使えるのでCGIを使ってアプリケーションを動かしたいと思います。
CGIとは、Webサーバが、Webブラウザなどからの要求に応じてプログラムを実行する仕組みの一つ。Web上で最も初期から用いられている動的なプログラム起動のための技術仕様で、多くのWebサーバソフトウェアが対応している。
ちょっと.htaccessをいじったりするけどCGIでやろう。ちなみに今回のアプリケーションのディレクトリ構造は以下の通りでindex.htmlで画面表示してindex.pyで処理をしています。
└── templates
─ └── index.html
データベースを作成する
今回はデータベースも使うので、ConoHaWINGの管理画面からデータベースとユーザーを作っておきます。
ここで作ったデータベース名やユーザー名、パスワードは後で使うから覚えておきましょう。
アプリケーションをConoHaWINGにアップロードする
ファイルをアップロード
FTPソフトを使って作成したアプリケーションのファイルを公開したいドメイン配下にアップロードします。これはCyberduckを使ってファイル群をアップロードした画面。
アップロードするのはpublic_html/〇〇.com/などの公開したいドメイン名のフォルダの下にしておきます。
今回の場合はアップロードしたのは以下のフォルダとファイルです。超少ないですね。
├── index.py
└── templates
─ └── index.html
.htaccessを編集する
ファイルをサイトにアクセスしたら表示してくれるように.htaccessを編集します。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app/index.cgi/$1 [QSA,L]
RewriteRuleの/app/index.cgi部分は自分の作成したアプリケーション名にしておこう。今回はたまたまappっていうディレクトリ名だからそうしています。
cgiファイルを作成する
.htaccessでindex.cgiというファイルを指定したのでindex.cgiファイルを作成します。RewriteRule ^(.*)$ /app/index.cgi/$1 [QSA,L]
としているのでappディレクトリ配下に作ります。
#! /opt/alt/python36/bin/python3.6
from wsgiref.handlers import CGIHandler
from index import app
CGIHandler().run(app)
このimport appのappなんかも自分が作成した名称じゃないと動かないと思うから、作成した名称でやりましょう。cgiファイルのパーミッションは755にしておく。
ファイルを右クリックして属性変更から変更できる。
データベースのテーブル作成
アプリケーションが接続するデータベースのテーブルを作成しよう。作成したユーザー名とパスワードでphpmyadminにログイン。
今回は直接SQL実行してテーブルを作成します。
テーブルが作成できたらOK。今回は1つだけしか使わないから1つだけ作成。
データベースの接続情報を変更する
ConoHaWINGで作成したデータベースにアプリケーションから接続したいので、アプリケーションのコード内のDB接続情報を変更します。データベース名やユーザー名ですね。
host="管理画面から見れるホスト名",
db="作成したデータベース名",
user="作成したユーザー名",
password="作成したパスワード",
charset='utf8',
cursorclass=pymysql.cursors.DictCursor
)
モジュールインストール
アプリケーションを動かすには使っているモジュールをインストールする必要があるから、SSH接続してConoHaWINGサーバーに入ったらインストールする。
$ pip install pymysql
pipって普通に使えるんですね、エックスサーバーでやった時には使えなかったけどpipコマンド入っていました。
アクセスして動作確認する
色々必要なことをやったのでドメインにアクセスして実際に動くか確かめてみると動きました。
.htaccessやCGIファイルの設定などちょっとだけ面倒だけど動かせましたね。ConoHa WINGでCGI使って試したい人は試してみるといいでしょう。
本格的にプログラムを扱うならVPS
今回はConoHa WINGでFlaskアプリケーションをCGIで動かすということをやったけど、本格的にアプリケーションを動かすならVPSを使うのがおすすめです。
ConoHa WINGのようなレンタルサーバーだとできないけど、Nginx入れてMySQL入れてアプリケーションを動かすといったことができます。
どういった流れでアプリケーションを公開することができるかは以下の記事なんかが参考になると思います。