Hope is a Dream. Dream is a Hope.

非公開ブログは再開しました。

サクラレンタルサーバー+Flaskの初心者向けチュートリアル

クラレンタルサーバー(スタンダード)にFlask環境を作ろうと思ったが、sudoが使えない事と、デフォルトのシェルがcshellであるために、webにある参考記事から少し変更が必要だったので手こずった備忘録。(初心者用です)

スクリーンショット 2015-05-17 12.23.02

 

アジェンダ

0. 環境の確認

1. pyenvを使って、python環境の構築

pyenvに関するシェルの設定ではまった。

2. 構築したpython環境でpipを使ってflaskのインストール

3. cgiの設定を行い、Flaskアプリの動作を確認

 

 

0. 環境の確認

クラレンタルサーバーでのユーザーディレクトリは/home/<username>/です。

($HOME/や~/でもアクセスできます)

# ユーザーディレクトリへのアクセス方法
$ cd /home/<username>/
$ cd $HOME
$ cd ~/
$ cd /home/fififactory/
この後は、ユーザーディレクトリ以下に構成をくんでいきます。

デフォルトでインストールされているPythonの場所とバージョンの確認

$ which python
/usr/local/bin/python
$ python -V
2.7.3
 

1. pyenvを使って、python環境の構築

pyenvのダウンロード

クラレンタルサーバではgitが使えるのでダウンロードしてきます。

練習がてらシェルスクリプトでコマンドを書いていきます。(のちのち見返すときにも役にたちます。直接コマンドをたたけば実行はできますので、面倒な方はそれで良いと思います)

#!/bin/csh   <- cshellで動作させる事を明示します。
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
このコマンドは、gitを使って、https://github.com/yyuu/pyenv.gitから、pyenvのリポジトリを~/.pyenvフォルダに保存しろと言ってます。

 

次にシェルスクリプト(pyenv-download.sh)をユーザーディレクトリに保存し、シェルを実行します。

# 実行権限を付加しておきます。
$ chmod 755 pyenv-download.sh
# シェルスクリプトの実行
$ ~/pyenv-download.sh
 

pyenvのインストール

pyenvのダウンロードができたので、次はインストールを行っていきます。

.cshrc

# $FreeBSD: src/share/skel/dot.cshrc,v 1.14.6.1 2008/11/25 02:59:29 kensmith Exp $
#
# .cshrc - csh resource script, read at beginning of execution by each shell
#
# see also csh(1), environ(7).
#


.....
(末尾に入力)

# Setting for pyenv
# *****************
if ( -e $HOME/.pyenv/bin/pyenv ) then
echo '>> Exist pyenv'
# pyenvのルートパスを設定
setenv PYENV_ROOT $HOME/.pyenv
# pyenvのディレクトリをPATHに追加
setenv PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:$PATH
# デフォルトテンポラリディレクトリを~/tmpに変更
setenv TMPDIR $HOME/tmp
# pyenvの再起動
pyenv rehash
else
echo '>> NO INSTALL pyenv'

endif

このコマンドは、もし$HOME/.pyenv/bin/pyenvが存在するならばとif文を使って条件処理をしています。そして、pyenvが存在しているときには、かくディレクトリとパスの設定を通します。(TMDIRはif文内に含む必要はないかもしれません。)

 

Cシェルを立ち上げ直す。 シェルを書き換えたので、一度再読みさせておきます。

$ source $HOME/.cshrc
それでは、pyenvを使って、pythonの環境を構築します。

pyenvでpythonの環境構築。

まずは、利用するpythonのバージョンをダウンロードします。こまんどはpyenv installです。
$ pyenv install --list  # インストールリストの確認
$ pyenv install 2.7.9 # python2.7.9をインストール
ただし、これではまだ使えません。pyenvのディレクトリ内にそのヴァージョンのpythonが準備されただけです。

 

pyenvはディレクトリ毎に環境を管理しますので、適当な場所にディレクトリを作ります。

# 仮想環境用のディレクトリを作成(場所は任意)
$ mkdir $HOME/tmp/python
$ cd $HOME/tmp/python
一度その時点でのpythonのパスとヴァージョンを調べておきます。
$ which python           # 現状のpythonを確認
/usr/local/bin/python
$ pyton -V
2.7.3
上の用にでるはずです。まだ、サクラのデフォルトのままであることを確認してください。
$ pyenv local 2.7.9      # ローカルpythonを構築
$ pyenv local       # 設定がされているか確認

$ whitch python
/home/fififactory/.pyenv/shims/python
$ python -V
2.7.9

これで、pythonがpyenvの中の/shims/pythonに指定されているのがわかります。これは.cshrcでパスに通したところになってます。ので、.cshrcのパスの設定がうまくいってないとはまります。(はまりました)

 

python環境構築完了

 

2. pipを使ってflaskのインストール

 

さてpyenvのおかげでpipが使えるようになりましたので、ローカルのpython環境にflaskを入れていきましょう。

 

まずはvirtualenvでFlask用の環境を作成します。

$ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
$ pyenv virtualenv 3.4.2 3.4.2-flask
pythonのヴァージョン3.4.2をベースにした環境として、3.4.2-flask(名前は任意)という名前の仮想環境を作りました。

Flaskをpipでインストールします。先ほどと同様に、環境をセットしたいディレクトリに移動し以下のコマンドを打ちます。

$ pyenv local 3.4.2-flask
$ pip install Flask
 

pip listでFlaskがあれば完了です。

 

 

3. cgiの設定を行い、Flaskアプリの動作を確認

ユーザディレクトリのwwwディレクトリ配下にアクセステスト用のディレクトリを準備します。
mkdir ~/www/flask-cgi-test
mkdir ~/www/flask-cgi-test/hello
cd ~/www/flask-cgi-test/hello
/hello/ディレクトリ配下に3つのファイルを準備します。

1. .htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /flask-cgi-test/hello/index.cgi/$1 [QSA,L]
2. appFlask.py
# coding: utf-8

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
return "Hello!"

if __name__ == '__main__':
app.run()

3. index.cgi
#!/home/fififactory/.pyenv/versions/3.4.2-flask/bin/python

import cgitb
cgitb.enable()

from wsgiref.handlers import CGIHandler
from appFlask import app
CGIHandler().run(app)

 

http://<username>.sakura.ne.jp/flask-cgi-test/helloにアクセス

 

スクリーンショット 2015-05-17 12.04.35

これがでれば成功です。

 

webアプリを作ろうと、意気揚々とサクラに登録して、Flaskを動かそうと思っていたのですが、ローカル環境とは異なり、sudoが使えなかったり管理者権限がなくてインストールできなかったりと、この記事をことを動かすだけでも4日程かかってしまいました。一番ハマっていたのはシェルスクリプトが良くわかっていなく、デフォルトのシェルがchsであることに気づくまでが遅かったです。初心者の備忘録ですが、同じように環境構築にハマっている人へ少しでも手助けになればと思い投稿しました。間違え等ありましたらコメント頂けると幸いです。

ご観覧ありがとうございました。

 

 

 

参考

.cshrc - csh、tcshの設定

さくらのレンタルサーバでpyenv、Flaskを使う