Yura YuLife

ITエンジニアの覚え書き。

Djangoの環境構築(Ubuntu Server, Apache, PostgreSQL)

以下の環境でDjangoを動作させるまでの手順をまとめました。

Django 1.7, PostgreSQL 9.Xでも同様の手順で構築が可能です。

パッケージのインストール

Python

$ sudo apt-get install python-dev

Apache2, mod-wsgi

$ sudo apt-get install apache2 apache2-dev libapache2-mod-wsgi

PostgreSQL

$ sudo apt-get install postgresql-9.3 postgresql-server-dev-9.3

Virtualenv

$ sudo apt-get install python-virtualenv

動作環境の構築

構築する環境

以下のような設定でデプロイを行うとする。

  • Djangoのプロジェクト名: hoge
  • Djangoプロジェクトのデプロイ先パス: /var/www/django/hoge/
  • DjangoのVirtualenvのインストール先パス: /var/www/django/venv/
  • Djangoプロジェクトのstaticファイルのパス: /var/www/static/
  • 管理ユーザ名: username
  • Djangoプロジェクトが利用するPostgreSQLのデータベース, ロール, パスワード:django_db, django_role, django_pass

Djangoのプロジェクトのファイルをコピー

$ sudo mkdir /var/www/django/
$ sudo cp -r ~/hoge /var/www/django/

Virtualenvを作成

$ cd /var/www/django/
$ sudo virtualenv venv
$ sudo chown -R username:www-data /var/www/django/

Virtualenvにpythonのライブラリのインストール

$ source /var/www/django/venv/bin/activate
(venv) $ pip install Django psycopg2 pytz
(venv) $ deactivate

PostgreSQLデータベースの作成

$ su -
# su postgres
$ psql
# CREATE ROLE django_role LOGIN PASSWORD 'django_pass';
# CREATE DATABASE django_db OWNER django_role;
# \q
$ exit
# exit

初期データの設定

DBのマイグレーション

$ cd /var/www/django/hoge/
$ source /var/www/django/venv/bin/activate
(venv) $ ./manage.py makemigrations
(venv) $ ./manage.py migrate
(venv) $ deactivate

staticファイルのコピー

$ cd /var/www/
$ sudo mkdir static
$ sudo chown -R username:www-data static
$ cd /var/www/django/hoge/
$ source /var/www/django/venv/bin/activate
(venv) $ ./manage.py collectstatic
(venv) $ deactivate

Djangoプロジェクトのスーパーユーザの作成 (管理サイトを利用する場合)

$ cd /var/www/django/hoge/
$ source /var/www/django/venv/bin/activate
(venv) $ ./manage.py createsuperuser
(venv) $ deactivate

Webサーバの設定

Apache2の設定を作成

/etc/apache2/sites-available/django.conf

<VirtualHost *:80>

ServerName www.example.com
ServerAdmin root@localhost

Alias /static/ /var/www/static/

<Directory /var/www/static>
# ディレクトリの中身を非表示にする
Options -Indexes +FollowSymLinks
Order deny,allow
Allow from all
</Directory>

# WSGIの設定
WSGIDaemonProcess django_wsgi python-path=/var/www/django/hoge:/var/www/django/venv/lib/python2.7/site-packages
WSGIProcessGroup django_wsgi
WSGIScriptAlias / /var/www/django/hoge/hoge/wsgi.py

<Directory /var/www/django/hoge/hoge>
  <Files wsgi.py>
    <IfVersion < 2.3 >
      Order allow,deny
      Allow from all
    </IfVersion>
    <IfVersion >= 2.3>
      Require all granted
    </IfVersion>
  </Files>
</Directory>

# ログ出力の設定
ErrorLog /var/log/apache2/django-error.log
LogLevel warn
CustomLog /var/log/apache2/django-access.log combined
</VirtualHost>

Apache2の設定を変更

$ sudo a2enmod ssl
$ sudo a2enmod wsgi
$ sudo a2dissite 000-default.conf
$ sudo a2ensite django.conf

Apache2の起動

$ sudo service apache2 start

動作確認

ブラウザからアクセスして、ページが表示されれば成功。