1.EC2にインスタンスを作成
参考:EC2でCentOSを使うここは無数に情報があるので省略。
iptableを停止しておく。
/etc/rc.d/init.d/iptables stop chkconfig iptables off
2.Nginx1.4.3のインストール
参考:CentOS-6へ最新版のnginxを3分でインストールする方法下準備。
yum groupinstall "Development tools" yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel wget
CentOS6用のパッケージをインストール。
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm yum install nginx
3.Python2.7.4のインストール
参考:CentOS6.3にPythonの学習環境を作るソースのダウンロード。
wget http://python.org/ftp/python/2.7.4/Python-2.7.4.tgztar xvzf Python-2.7.4.tgz tar xvzf Python-2.7.4.tgz cd Python-2.7.4
コンパイル。
./configure --with-threads --enable-shared --prefix=/usr/local make make install
共有ライブラリを確認
ldd /usr/local/bin/python
すると、libpython2.7.so.1.0 => not found といわれるので、シンボリックリンク貼る。
ln -s /usr/local/lib/libpython2.7.so.1.0 /lib/i686/nosegneg/
4.virtualenvつくる
easy_installをインストール。このとき、Python2.7を指定してインストールしないと、CentOSにデフォルトで入っているPython2.6に環境が構築されてしまうので注意。
wget http://peak.telecommunity.com/dist/ez_setup.py /usr/local/bin/python2.7 ez_setup.py
pipをインストール。
easy_install pip
virtualenvをインストール。
pip install virtualenv pip install virtualenvwrapper
パスを通す。
vi .bashrc
.bashrcに以下の2行を追加
export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh
source .bashrc
仮想環境を作成。
mkvirtualenv test_env
仮想環境を抜ける。
deactivate
仮想環境に入る。
workon test_env
これで元環境を汚さずライブラリをインストールし放題に。
5.Flaskとgunicornのセットアップ
pip install flask pip install gunicorn
nginxでproxy_passを設定(Flaskはポート5000番)。
vi /etc/nginx/conf.d/default.conf
location / { proxy_pass http://localhost:5000; }
nginx再起動
service nginx restart
Flaskのサンプルプログラム(https://flask-docs-ja.readthedocs.org/en/latest/quickstart/#id2)をhello.pyとして保存し、
hello.pyと同じフォルダにconfig.pyというファイルを作成する。中身は以下。
bind = '127.0.0.1:5000' debug = True
gunicorn -c config.py -D hello:app
これで、EC2のインスタンスにブラウザからアクセスすれば、Hello Worldが表示される。