カラフルボックスでFlaskアプリケーションをCGIで公開する

カラフルボックスでFlaskアプリケーションを公開したい・・・

そんな思いを実現するためにこの記事ではカラフルボックスでFlaskアプリケーションを公開するっていうことをやっていきます。

この記事でわかること
CGIを使ってカラフルボックスでFlaskアプリを公開する方法

 DBも使った簡単なアプリを公開してみます

データベースを使うFlaskアプリケーションをこの記事では公開してみたいと思います。同じようなことをしてみたい方は参考にしてみてください。

カラフルボックスでFlaskアプリを公開していこう

CGIを使ってカラフルボックスでFlaskアプリを公開する方法

いくつか方法はあるかもしれないけど、この記事ではCGIを使ってFlaskアプリケーションを公開していきたいと思います。FlaskのドキュメントにCGIについても少し掲載されていますね。

カラフルボックスでももちろんCGIは使えるのでこの方法を使ってやっていきます。

Q: CGIは全てのサーバープランで利用できますか?
A: 全てのサーバープランでご利用いただけます

カラフルボックス

 Pythonの環境を作る機能はある

今回は使わないんだけど、カラフルボックスにはPythonの環境を作る機能があります。

本当はこの機能を作ってやろうと思ったんだけど、Python3系で作ると上手くいかなかった・・・

カラフルボックスの機能を使ってPythonを使うっていう記事で少しPythonのSetupについて書いているからよかったらみてみてください。

公開するFlaskアプリケーション

今回公開するFlaskアプリケーションは以下。単純なTODOアプリですね。

flaskアプリケーション

何かTODOを入力するとそれが表示されるっていう単純なやつ。使用しているファイルは画面のindex.htmlと裏側の処理のindex.pyだけ。

└── app
──├── index.py
──└── templates
───└── index.html

 DBも使うよ

入力したデータはデータベースに保存しているので、カラフルボックスでもデータベースを使ってやります。管理画面からデータベースを作ったりユーザーを作ったりすることができるからやっていきましょう。

Flaskアプリをカラフルボックスで公開する手順

公開手順
  1. ドメインを取得・追加する
  2. 使用するデータベース・テーブルの作成
  3. アプリケーションのデータベース接続情報の変更
  4. CGIファイルの作成
  5. ローカルのFlaskアプリケーションをカラフルボックスにアップロード

    手順としては大まかにこんな感じでしょうか。CGIファイルを作ったりしないといけないからちょっと面倒かもしれないけど、そんなに大変ではないはず。

     アップロードにはFTPソフトを使うよ

    Flaskアプリケーションをカラフルボックスにアップロードする際にはFTPソフトを使ってアップロードしていきます。以下の記事でFTP接続する方法は書いたから、よくわからなかったら参考にしてみてください。

    順番にやっていこう

    ドメインを取得・追加する

    Flaskアプリケーションを公開するドメインの取得・追加を行います。自分はよくお名前.comを使うんだけど、他のドメイン取得サイトから取得しても構いません。

    お名前.comでやっていくよ

    お名前.comでドメインを取得したらそのドメインのネームサーバーをカラフルボックスのものに変更します。

    お名前.comネームサーバーの設定 ドメインのネームサーバーを変更する

    • ns1.cbsv.jp
    • ns2.cbsv.jp

      ネームサーバー変更確認画面

      OKを押せばお名前.comでの設定は完了です。

      カラフルボックスでドメインのDNS設定を行う

      次はカラフルボックスでDNS設定を行いましょう。

      他のレンタルサーバーだとお名前.comでネームサーバー情報変更すれば使えるものが多いけど、カラフルボックスはDNSゾーンというものを設定しないといけない様子。

      他社管理ドメインの場合、カラフルボックスのサーバーをご利用いただくDNS設定にしていただく必要がございます。

      [ドメイン→DNSの管理]と進んで[新しいゾーンを追加]をクリック。

      カラフルボックスでDNS設定を行う

      新しいゾーンを追加する

      ここにゾーン名とレコードセットを入力します。

      ゾーン名とレコードセットを選択する

      • ゾーン名・・・お名前.comで取得したドメイン名(○○.com等)
      • レコードセットを選択・・・自分のサーバー名を選択

      レコードセットで何を選べばいいか分からなかったら、cPanelのサーバー情報から確認することができるから確認しよう。

       サーバー名の確認方法

      cPanelの右側にある一般情報からサーバー情報を確認することができます。

      カラフルボックスからサーバー情報を確認する サーバー名を確認

      このサーバー名と一致するレコードセットを選択すればOKです。ちなみにゾーンを設定したらゾーンの状態が確認できるまで最大15分かかります。

      DNSステータス

      設定したらこれでDNSの設定は終わりです。

      カラフルボックスでドメインを追加する

      カラフルボックスのcPanelからドメインを追加しましょう。[アドオン ドメイン]からドメインを追加することができる。

      アドオンドメインを選択

      ここにお名前.comで取得したドメイン名を入力してやればOKです。

      お名前.comで取得したドメインを入力

      • 新しいドメイン名・・・お名前.comで取得したドメイン名
      • サブドメイン・・・そのままでOK
      • ドキュメントルート・・・そのままでOK

      基本そのままでOKですが、ドキュメントルートなんかを変えたい人は設定してあげてもいいですね。ただ個人的にはそのままのドキュメントルートが一番わかりやすくていいと思います。

      Flaskアプリに使うデータベース・テーブルの作成を行う

      データベースを使わないアプリならいいけど、今回はデータベースを使うのでカラフルボックスの管理画面で追加しましょう。

      データベースはcPanelのMySQLデータベースから追加できるよ

      データベースを作成したら、ユーザーも作っておきます。

      作成したユーザーをデータベースに追加して権限を与えておきます。

      とりあえず全ての権限を与えておくことにしよう。ここで作成したデータベースとユーザーをFlaskアプリで使用します。

      FlaskアプリのDB接続情報を変更する

      データベースを作成したので、FlaskアプリのDB接続情報を今作ったものに変更しておきます。コードの接続情報を作成したものに変更しておきましょう。

      return pymysql.connect(
      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アプリケーションのファイルたちをアップロード。

      ちなみにアプリケーションのフォルダはこれだけです。

      app
      ├── 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行目で指定します。

      CGIファイルのパーミッションは755

      index.cgiファイルはパーミッションを755に設定しておきましょう。

       .htaccessファイルの作成

      .htaccessファイルを作成します。

      .htaccessファイルの中身はこんな感じ。

      RewriteEngine On
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^(.*)$ /app/index.cgi/$1 [QSA,L]

      ドメインにアクセスされたらindex.cgiを動かすように指定します。これでcgiが動いてくれるはず。

      ドメインにアクセスしてFlaskアプリが動くのを確認

      諸々の設定が終わったら、該当のドメインにアクセスしてFlaskアプリが動く確認してみましょう。

      無事動くことが確認できました。カラフルボックス30日間無料で使えるから試してみてもいいかもしれない。