はじめに
本書では、Ubuntu環境におけるApache + Python + Pyramid の導入手順について記述します。
前提条件
今回の環境構築には、以下のソフトウェアを使用します。
ソフトウェア | バージョン |
---|---|
Ubuntu | 12.04 LTS |
Apache | 2.2.22 |
Python(System) | 2.7.3 (Ubuntu 12.04に標準でインストールされているもの) |
Python(for virtualenv) | 2.7.6 |
VirtualEnv | 1.7.1.2 |
Pythonz | - |
Pyramid | 1.4.5 |
今回は、AWS上で環境構築しました。
その際に使用したAMIは「Ubuntu Server 12.04.3 LTS - ami-6aad335a (64-bit)」です。
また、以下の準備をしておいてください。
- 環境構築前にpyramidユーザーを作成していること。
→ pyramidユーザーの作成手順は下記を参照してください。(rootユーザーで実行してください。)
$ sudo adduser pyramid # パスワードは任意のものを入力してください。それ以外の項目については全てEnterを押してください。
$ sudo gpasswd -a pyramid sudo
$ sudo cp -r /home/ubuntu/.ssh /home/pyramid
$ sudo chown -R pyramid:pyramid /home/pyramid/.ssh
- pyramidアプリケーションを作成していること。
→ 今回の説明では、「sampleapp」というアプリケーションを使用します。「sampleapp」の作成手順は下記の通りです。(「sampleapp」を作成する際は、下記手順の(14)までを実施しておいてください。)
$ cd /home/pyramid
$ pcreate -s starter sampleapp
$ cd sampleapp
$ python setup.py install
手順
ここからの手順については、全てpyramidユーザーで実行してください。
(1) パッケージ管理システム(APT)のパッケージリストを最新にします。
$ sudo apt-get -y update
(2) インストール済みのパッケージをアップグレードします。
$ sudo apt-get -y upgrade
(3) build-essential と curl をインストールします。
$ sudo apt-get -y install build-essential curl
(4) Python関連のパッケージをインストールします。
$ sudo apt-get -y install python-dev python-setuptools python-pip python-virtualenv
(5) Pythonzでビルドする際に必要なライブラリをインストールします。
$ sudo apt-get -y install libncurses-dev libreadline6-dev libbz2-dev liblzma-dev libsqlite3-dev libgbm-dev
(6) Apache2をインストールします。
$ sudo apt-get -y install apache2
(7) mod_wsgiをインストールします。
$ sudo apt-get -y install libapache2-mod-wsgi
(8) Pythonzをインストールします。
$ curl -kL https://raw.github.com/saghul/pythonz/master/pythonz-install | bash
(9) /home/pyramid/.bashrcに以下の内容を追加します。
[[ -s $HOME/.pythonz/etc/bashrc ]] && source $HOME/.pythonz/etc/bashrc
(10) .bashrcの内容を適用させます。
$ source /home/pyramid/.bashrc
(11) Pythonzを使って、Python 2.7.6をインストールします。
$ pythonz install 2.7.6
(12) PythonzとVirtualenvを使って、Pyramidで使用するPython環境を作成します。
*) 今回、作成するPython環境の名前を「env」とします。
$ mkdir /home/pyramid/.virtualenv
$ cd /home/pyramid/.virtualenv
$ virtualenv -p /home/pyramid/.pythonz/pythons/CPython-2.7.6/bin/python --no-site-packages env
(13) 上記で作成したenv環境を有効にします.
$ source /home/pyramid/.virtualenv/env/bin/activate
(14) Pyramidをインストールします。今回は1.4.5のバージョンをインストールするため、下記のコマンドを実行します。
*) 最新版のpyramidをインストールする場合は「pip install pyramid」を実行してください。
$ pip install pyramid==1.4.5
(15) sampleappの直下にpyramid.wsgiファイルを作成します。
$ cd /home/pyramid/sampleapp
$ vi pyramid.wsgi
(16) pyramid.wsgiファイルに下記の内容を追加します。
*) 今回は本番環境で動作することを想定して記載しています。開発環境の場合は、production.iniがdevelopment.iniになります。
from pyramid.paster import get_app
application = get_app(
'/home/pyramid/sampleapp/production.ini', 'main')
(17) pyramid.wsgiファイルのパーミッション権限を755に変更します。
$ sudo chmod 755 /home/pyramid/sampleapp/pyramid.wsgi
(18) Pyramid用のApache設定ファイルを作成します。
$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/pyramid
$ sudo vi /etc/apache2/sites-available/pyramid
(19) 作成した設定ファイルをviで開き、下記の内容に変更します。
<VirtualHost *:80>
DocumentRoot /home/pyramid/sampleapp
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
WSGIDaemonProcess pyramid user=www-data group=www-data threads=4 \
python-path=/home/pyramid/.virtualenv/env/lib/python2.7/site-packages
WSGIScriptAlias /sampleapp /home/pyramid/sampleapp/pyramid.wsgi
<Directory /home/pyramid/sampleapp/>
WSGIProcessGroup pyramid
Order allow,deny
Allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
(20) Pyramidのサイトを有効にし、デフォルトのサイトを無効にします。
$ sudo a2ensite pyramid
$ sudo a2dissite default
(21) Apacheを再起動します。
$ sudo /etc/init.d/apache2 restart
(22) ブラウザで「http://[ipaddress]/sampleapp」にアクセスし、Pyramidのページが表示されることを確認します。