Mezzanineのインストールから設定まで


これは個人的に勉強のために行った際のメモです。

環境

Amazon Linux AMI 2015.03 (HVM), SSD Volume Type – ami-cbf90ecb
Django 1.8.1 # 追記。Mezzanineを入れると強制的にDjango (1.6.11)になる模様。
Gunicorn 19.3.0
Nginx 1.6.2
Mezzanine 3.1.10

Python 3.4.3のインストール

sudo wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz
sudo tar zxfv Python-3.4.3.tgz
cd Python-3.4.3
sudo yum install gcc
sudo ./configure --prefix=/usr/local
sudo make
sudo make install
python3 -V
sudo yum groupinstall "Development tools"
sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
sudo make
sudo make install

この段階でpipはインストールされている。
ただし、pipとpip3で内容が異なる。

pipのアップグレード

・pipのupgradeでsudu権限がないと言われたときの対応
sudo passwd root #rootユーザのパスワードを設定
su
パスワード:
root$ visudo #編集

Defaults secure_pathを、
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
に変更。
sudo pip3 install --upgrade pip

この段階で、AWSに元々インストールされているpipを参照しなくなる。つまり、pipコマンドが、python 3.4.3をインストールしたときにインストールされたpip3を参照している。
ただし、sudoをつけたpipコマンドはAWSに元から入っているところを参照している。
この辺りの環境設定は、いろいろと考えたいところ。

mezzanineのインストール

$ sudo pip install mezzanine
$ mezzanine-project projectname
$ cd projectname/
$ python3 manage.py createdb

Would you like to create one now? (yes/no): yes # adminユーザの作成。後からpython3 manage.py createsuperuserでも作成可能

Hit enter to use the default (127.0.0.1:8000): # そのままリターン。gunicornとnginxを使うので。

Eg: About us, Contact form, Gallery. (yes/no): #お好みで。

mezzanineで作成したプロジェクトのsettings.pyの編集

INSTALLED_APPSに’gunicorn’,を追加

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'gunicorn', # 追加した行
)

データベースの設定

local_settings.pyを参考。local_settings.pyは作成したプロジェクトディレクトリ内にあります。
DATABASES = {
"default": {
# Ends with "postgresql_psycopg2", "mysql", "sqlite3" or "oracle".
"ENGINE": "django.db.backends.sqlite3", # sqlite3を追加
# DB name or path to database file if using sqlite3.
"NAME": "dev.db", # dev.dbを追加

local_settings.pyの中のSECRET_KEY = “~~~”を追加

SECRET_KEY = “~~~”

TIME_ZONEの設定

TIME_ZONE = ‘Asia/Tokyo’

ALLOWED_HOSTSの設定

ドメイン名はAWSのパブリックドメインでもOK。
ALLOWED_HOSTS = [
'.ドメイン名',
'.ドメイン名.',
]

静的ファイルの設定

python3 manage.py collectstatic

Nginxのインストール

sudo yum install nginx # AWSにインストールされているリポジトリを使用

Nginxのnginx.conf設定

sudo vi /etc/nginx/nginx.conf # 設定ファイルの修正

ドメイン名の設定

server {
listen 80;
server_name ドメイン名;

リバースプロキシの設定

location / {
proxy_set_header X-Forwarder-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-FORWARDED_PROTO https;
proxy_redirect off;
proxy_pass http://127.0.0.1:8000;
}

Nginxの起動

sudo nginx # 起動
ps aux | grep nginx # 起動しているかをプロセスで確認

gunicornのインストール

sudo pip3 install gunicorn

gunicornの起動

プロジェクトファイルがあるディレクトリで、以下のコマンド。
gunicorn projextname.wsgi

問題がなければ、設定したドメインでmezzanineのトップページが表示されます。

Mezzanineのテンプレート設定は、
Mezzanine Gunicornでmodenaのテンプレートのエラーがでるときの個人的メモ | kazsoga(曽我一弘)ブログ
を参照。

また、nginxやgunicornについては、別途設定ファイルを使う方法があります。
それについては、今後、勉強する予定です。