大手レンタルサーバーのエックスサーバーで、pythonベースのWEBサーバーを構築した時の手順についての記録です。
エックスサーバーはPythonがインストールされているものの、Flaskなどは全然入っていないので、自分でインストールする必要があります。
また、/etcへのアクセス権がなく、pipを使うとpipの中のos.listdir(_UNIXCONFDIR)で失敗します。
、、、など、色々ハマりながら、サンプルレベルのWEBサーバーを構築出来たので、覚えているうちにまとめます。
終わったあとに、記述しているので、途中手順がぬてけている事があるかもしれません。
なお、WEBアプリの開発は、趣味レベルで本職ではないので、知識が不足している上での記述であることを予めお断ります。
また、参考にさせていただいたサイトは、数知れず、どこからどう参照したのか、わからなくなっています。ごめんなさい。
easy_installを入れる
pipが使えないのですが、easy_installだとうまくいきました。
$ mkdir src
$ cd src
$ wget http://peak.telecommunity.com/dist/ez_setup.py
$ python ez_setup.py
pyenvを入れる
gitでpyenvを持ってきます。
gitは予めインストールしてありました。
https:ではうまくいかないのでgit:を使いました。
$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
~/.bash_profileに下記の行を追加して、bashを再起動します。
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
pythonをインストール
pyenvの管理下にpythonをインストールします。
$ pyenv install 2.7.11
$ pyenv global 2.7.11
~/.bash_profileに下記の行を追加して、bashを再起動します。
eval "$(pyenv init -)"
Flaskをインストール
$ easy_install Flask
MySQL-pythonをインストール
$ easy_install MySQL-python
ここまでで、入れるべきもののインストールは終わりです。
テスト用の環境の構築
データベースの準備
- エックスサーバーのサーバーパネルにログインして、[データーベース]-[MySQL設定を選びます]
- [MySQL追加]タブでデータベースを追加します。
- [アクセス所有権ユーザー]でテスト用のユーザーを登録しておきます。
- 画面の左の[phpmuadmin(<バージョン>)]を押して、phpmuadminが画面を出します。
- なんでもいいので、作成したDBに、とりあえず2つフィールドを作成しておきます。
(サンプルプログラムが2フィールドに書き込むからです)
ディレクトリの準備
/home/<ユーザーID>/<ドメイン名>.xsrv.jp/public_html/の下にディレクトリを作ります。
$ mkdir /home/<ユーザーID>/<ドメイン名>.xsrv.jp/public_html/hoge
.htaccess,index.cgi,testFlask.pyの3つのファイルを作成します。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /hoge/index.cgi/$1 [QSA,L]
from wsgiref.handlers import CGIHandler
from testFlask import app
CGIHandler().run(app)
# -*- coding: utf-8 -*-
from flask import Flask
import MySQLdb
app = Flask(__name__)
@app.route('/')
def hello_world():
return "Hello world!"
@app.route('/db')
def db_save():
connector = MySQLdb.connect(host="<MySQL5.5 ホスト名>, db="<作ったDB名>", user="<登録したユーザーID>", passwd="<パスワード>", charset="utf8")
cursor = connector.cursor()
sql = u"insert into testTable values('1','python')"
cursor.execute(sql)
connector.commit()
cursor.close()
connector.close()
return "DB saved!"
はサーバーパネルのMySQL設定画面で確認できます。
<作ったDB名><登録したユーザーID><パスワード>は、「データベースの準備」の項目で設定した文字列を記載します。
index.cgiはパーミッションを変更します
$chmod 700 index.cgi
これで、
http://home/<ユーザーID>/<ドメイン名>.xsrv.jp/hoge
にアクセスしたらHello world!が表示され
http://home/<ユーザーID>/<ドメイン名>.xsrv.jp/hoge/db
にアクセスしたらDB saved!が表示されたら成功です。
phpmuadminでDBの内容を確認してください。