そんな思いを実現するためにこの記事ではカラフルボックスでFlaskアプリケーションを公開するっていうことをやっていきます。
DBも使った簡単なアプリを公開してみます
データベースを使うFlaskアプリケーションをこの記事では公開してみたいと思います。同じようなことをしてみたい方は参考にしてみてください。
CGIを使ってカラフルボックスでFlaskアプリを公開する方法
いくつか方法はあるかもしれないけど、この記事ではCGIを使ってFlaskアプリケーションを公開していきたいと思います。FlaskのドキュメントにCGIについても少し掲載されていますね。
カラフルボックスでももちろんCGIは使えるのでこの方法を使ってやっていきます。
Q: CGIは全てのサーバープランで利用できますか?
A: 全てのサーバープランでご利用いただけます
Pythonの環境を作る機能はある
今回は使わないんだけど、カラフルボックスにはPythonの環境を作る機能があります。
本当はこの機能を作ってやろうと思ったんだけど、Python3系で作ると上手くいかなかった・・・
カラフルボックスの機能を使ってPythonを使うっていう記事で少しPythonのSetupについて書いているからよかったらみてみてください。
公開するFlaskアプリケーション
今回公開するFlaskアプリケーションは以下。単純なTODOアプリですね。
何かTODOを入力するとそれが表示されるっていう単純なやつ。使用しているファイルは画面のindex.htmlと裏側の処理のindex.pyだけ。
──├── index.py
──└── templates
───└── index.html
DBも使うよ
入力したデータはデータベースに保存しているので、カラフルボックスでもデータベースを使ってやります。管理画面からデータベースを作ったりユーザーを作ったりすることができるからやっていきましょう。
Flaskアプリをカラフルボックスで公開する手順
- ドメインを取得・追加する
- 使用するデータベース・テーブルの作成
- アプリケーションのデータベース接続情報の変更
- CGIファイルの作成
- ローカルのFlaskアプリケーションをカラフルボックスにアップロード
手順としては大まかにこんな感じでしょうか。CGIファイルを作ったりしないといけないからちょっと面倒かもしれないけど、そんなに大変ではないはず。
アップロードにはFTPソフトを使うよ
Flaskアプリケーションをカラフルボックスにアップロードする際にはFTPソフトを使ってアップロードしていきます。以下の記事でFTP接続する方法は書いたから、よくわからなかったら参考にしてみてください。
ドメインを取得・追加する
Flaskアプリケーションを公開するドメインの取得・追加を行います。自分はよくお名前.comを使うんだけど、他のドメイン取得サイトから取得しても構いません。
お名前.comでドメインを取得したらそのドメインのネームサーバーをカラフルボックスのものに変更します。
- ns1.cbsv.jp
- ns2.cbsv.jp
OKを押せばお名前.comでの設定は完了です。
カラフルボックスでドメインのDNS設定を行う
次はカラフルボックスでDNS設定を行いましょう。
他のレンタルサーバーだとお名前.comでネームサーバー情報変更すれば使えるものが多いけど、カラフルボックスはDNSゾーンというものを設定しないといけない様子。
[ドメイン→DNSの管理]と進んで[新しいゾーンを追加]をクリック。他社管理ドメインの場合、カラフルボックスのサーバーをご利用いただくDNS設定にしていただく必要がございます。
ここにゾーン名とレコードセットを入力します。
- ゾーン名・・・お名前.comで取得したドメイン名(○○.com等)
- レコードセットを選択・・・自分のサーバー名を選択
レコードセットで何を選べばいいか分からなかったら、cPanelのサーバー情報から確認することができるから確認しよう。
サーバー名の確認方法
cPanelの右側にある一般情報からサーバー情報を確認することができます。
このサーバー名と一致するレコードセットを選択すればOKです。ちなみにゾーンを設定したらゾーンの状態が確認できるまで最大15分かかります。
設定したらこれでDNSの設定は終わりです。
カラフルボックスでドメインを追加する
カラフルボックスのcPanelからドメインを追加しましょう。[アドオン ドメイン]からドメインを追加することができる。
ここにお名前.comで取得したドメイン名を入力してやればOKです。
- 新しいドメイン名・・・お名前.comで取得したドメイン名
- サブドメイン・・・そのままでOK
- ドキュメントルート・・・そのままでOK
基本そのままでOKですが、ドキュメントルートなんかを変えたい人は設定してあげてもいいですね。ただ個人的にはそのままのドキュメントルートが一番わかりやすくていいと思います。
Flaskアプリに使うデータベース・テーブルの作成を行う
データベースを使わないアプリならいいけど、今回はデータベースを使うのでカラフルボックスの管理画面で追加しましょう。
データベースを作成したら、ユーザーも作っておきます。
作成したユーザーをデータベースに追加して権限を与えておきます。
とりあえず全ての権限を与えておくことにしよう。ここで作成したデータベースとユーザーをFlaskアプリで使用します。
FlaskアプリのDB接続情報を変更する
データベースを作成したので、FlaskアプリのDB接続情報を今作ったものに変更しておきます。コードの接続情報を作成したものに変更しておきましょう。
host="localhost",
db=作成したデータベース名,
user="作成したユーザー名,
password=作成したパスワード,
charset='utf8',
cursorclass=pymysql.cursors.DictCursor
)
カラフルボックスにFlask環境を作る
Flask環境を自分で作ります。anacondaでやります。
// pyenv
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
bashrcに記述
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
export TMPDIR="$HOME/tmp"
export PYTHON_PATH=./
eval "$(pyenv init -)"
$ source ~/.bashrc
$ pyenv install anaconda3-5.3.1
anacondaをインストールしたらパスを通します。
$ echo 'export PATH=/home/〇〇/.pyenv/versions/anaconda3-5.3.1/bin:$PATH' >> ~/.bashrc
これでコマンドが使えるから必要なものをインストール。flaskと今回はアプリケーションでpymysql使っているからそれも入れます。
$ conda install flask
$ pip install pymysql
pythonもanacondaの中に入っているからそのpythonを使ってやりましょう。
Flaskアプリをカラフルボックスにアップロードする
FTPソフトでアップロード
FTPソフトを使ってローカルにあるFlaskアプリケーションのファイルたちをアップロード。
ちなみにアプリケーションのフォルダはこれだけです。
├── index.py
└── templates
─ └── index.html
CGIファイルを作成
CGIファイルをappディレクトリ配下に作ります。TerminalやFTPソフトから作成してもいいけど、ファイルマネージャーでやりますね。
CGIファイルの中身はこんな感じ。
#! /home/カラフルボックスのユーザー名/.pyenv/versions/anaconda3-5.3.1/bin/python
from wsgiref.handlers import CGIHandler
from index import app
CGIHandler().run(app)
さっきanacondaを入れたので、その中にあるPythonを使うように1行目で指定します。
index.cgiファイルはパーミッションを755に設定しておきましょう。
.htaccessファイルの作成
.htaccessファイルを作成します。
.htaccessファイルの中身はこんな感じ。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app/index.cgi/$1 [QSA,L]
ドメインにアクセスされたらindex.cgiを動かすように指定します。これでcgiが動いてくれるはず。
ドメインにアクセスしてFlaskアプリが動くのを確認
諸々の設定が終わったら、該当のドメインにアクセスしてFlaskアプリが動く確認してみましょう。
無事動くことが確認できました。カラフルボックス30日間無料で使えるから試してみてもいいかもしれない。