Djangoの環境構築(Ubuntu Server, Apache, PostgreSQL)
以下の環境でDjangoを動作させるまでの手順をまとめました。
- Ubuntu Server 14.04 LTS 64bit
- Apache 2.4.7
- PostgreSQL 9.3
- Django 1.8 (Python 2.7)
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
動作確認
ブラウザからアクセスして、ページが表示されれば成功。