さくらのレンタルサーバ
ここ最近、ブログをちゃんと書きたいという欲求にさいなまれています。その一環でさくらのレンタルサーバを借りてみました。このエントリーも2015/2/16現在ではさくらのレンタルサーバ上のWordPressで公開されています。当初は月額$5程度でVPSを借りようと思っていましたが、要件を満たすことができるなら同額程度で100GBのストレージがついてくるのは魅力的と考え今回はさくらのレンタルサーバを選択です。要件は簡単で、「WordPressを複数立ち上げ、別ドメインで公開できる」です。2週間の無料お試し期間で検証してみようと申し込んでみましたが、あっさり実現可能なことがわかりました。
とはいえ今回は、WordPressについてのエントリーではありません。Python3でFlaskの実行環境作成についてのお話です。「スタンダードプラン」を契約したので、サーバにSSHでログイン可能です。
$ python -V Python 2.7.6
サーバ環境にインストール済みのPythonは2.7.6ですが、pyenvでPython3の実行環境を導入し、FlaskでWebアプリを公開してみようと思います。
pyenvでPython3.4.2をインストール
さくらのレンタルサーバではgitが最初から使えるので、先ずはpyenvをgithubから取得します。
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
私は、zshを使っているので、.zshrcでのpyenvの設定は次の通りです。このへんは過去のエントリーと変わりありません。
if [ "$(uname)" = "Darwin" ]; then if which pyenv > /dev/null; then export CFLAGS="-I$(xcrun --show-sdk-path)/usr/include" export PYENV_ROOT="${HOME}/.pyenv" export PATH=${PYENV_ROOT}/shims:${PATH} eval "$(pyenv init -)"; fi else if [ -f "$HOME/.pyenv/bin/pyenv" ]; then export PYENV_ROOT="${HOME}/.pyenv" export PATH=${PYENV_ROOT}/bin:$PATH eval "$(pyenv init -)"; fi fi
最新のPythonをインストールします。
$ source ~/.zshrc $ pyenv install --list ・・・ 3.4.1 3.4.2 3.5-dev ・・・ $ pyenv install 3.4.2 python-build: TMPDIR=/tmp cannot hold executables (partition possibly mounted with `noexec`)
/tmp が ‘noexec’ でマウントされているため、/tmp 配下の実行ファイルは実行できないようです。「~/.pyenv/plugins/python-build/bin/python-build」を読むと環境変数TMPDIRを$HOME/tmpにすれば行けそうな気がします。
$ export TMPDIR=$HOME/tmp $ pyenv install 3.4.2 Downloading Python-3.4.2.tgz...
今度はエラーがでなくなりました。
$ source ~/.zshrc $ mkdir ~/tmp/python $ cd ~/tmp/python $ python -V Python 2.7.6 $ pyenv local 3.4.2 $ python -V Python 3.4.2
無事インストールできたようです。
Flaskをインストールする
virtualenvでFlask用の環境を作成し、Flaskをpipでインストールします。
$ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv $ pyenv virtualenv 3.4.2 3.4.2-flask $ pyenv local 3.4.2-flask $ pip install Flask
Flaskアプリの配置
FlaskはCGIモードで実行します。例として、~/www/flask/hello 配下にアプリケーションを配置し、http://username.sakura.ne.jp/flask/hello で公開します。~/www/flask/hello に3つのファイルを配置します。
#!/home/<username>/.pyenv/versions/3.4.2-flask/bin/python from wsgiref.handlers import CGIHandler from appFlask import app CGIHandler().run(app)
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return "Hello!"
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /flask/hello/index.cgi/$1 [QSA,L]
index.cgi には実行権をつけ、ブラウザでアクセスしてみます。
なんとか公開されました。
(.htaccess がよくわからず実際はだいぶ苦労しています)
宿題
.htaccess の設定が全然理解できていないません。これについては後日の宿題です。
コメント
[…] さくらのレンタルサーバでpyenv、Flaskを使う […]
[…] さくらのレンタルサーバでpyenv、Flaskを使う […]