LoginSignup
17
19

More than 5 years have passed since last update.

ubuntuとapacheを使ったdjangoサーバの運用

Posted at

はじめに

Djangoは、Pythonで実装されたWebアプリケーションフレームワークで、複雑なデータベース主体のWebアプリケーションを設計・開発するのに役に立つ。導入時点では、

$ ./manager.py runserver

でテストしているが本格的に運用する段階になると、apacheと連携させたくなる。他にも紹介されているページは多くあるが、自分の作業の備忘録として、その運用の仕方をリマインダとして残しておく。

作業環境

作業環境は以下の通り

  • ubuntu12.04
  • django 1.3.1
  • python 2.7.3

その他、apacheの設定は以下の通り

  • DocumentRoot: /data/www
/etc/apache2/sites-available/default:   DocumentRoot /data/www
  • djangoプロジェクトのルートディレクトリ
    • ~/webservices
  • apache2上のディレクトリ
    • /data/www/webservices -> ~/webservices
$ sudo ln -s ${HOME}/webservices /data/www/webservices

必要なパッケージのインストールとセットアップ

$ sudo apt-get install -y apache2 libapache2-mod-wsgi
$ sudo apt-get install -y python-django
$ django-admin startproject webservices

django.wsgiをつくる

djangoのルートディレクトリにdjango.wsgiをつくる

django.wsgi
#!/usr/bin/env python
# coding: utf-8

import os
import sys

sys.path.append('/data/www')
sys.path.append('/data/www/webservices')

os.environ['DJANGO_SETTINGS_MODULE'] = 'webservices.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

apache2の設定

/etc/apache2/sites-available/djangoをつくる。

WSGIScriptAlias /services /data/www/webservices/django.wsgi

<Directory /data/www/webservices/>
Order deny,allow
Allow from all
</Directory>

上記の設定を有効にする

$ sudo a2ensite django
$ sudo apache2ctl restart

その他、データベースにsqlite3を用いる場合は、データベースへのアクセス権を設定する必要がある。仮にsqlite3のデータベースファイル名がdata.dbだった場合、djangoのルートディレクトリで以下の作業を行う

$ ./manager.py syncdb
…
$ chown ${USER}.www-data data.db
$ chmod g+w data.db

デバッグのあれこれ

pythonの標準出力や、エラーメッセージは以下の場所に出力されている。

$ less /var/log/apache2/error.log
17
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
19