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
動作確認
ブラウザからアクセスして、ページが表示されれば成功。