Djangoをmod_wsgiで動かす(CentOS7, Python2.7)
環境 Link to heading
- CentOS: 7.3
- Apache: 2.4.6
- mod_wsgi: 3.4
- Python: 2.7
- Django: 1.11
Djangoの設定 Link to heading
Djangoのsettings.pyに以下の設定を追加し、デプロイ時のstaticディレクトリを指定する
STATIC_ROOT = "/var/www/static/"
デプロイユーザの作成 Link to heading
デプロイ用のユーザとしてwww-dataを追加。
ユーザ作成後はホームディレクトリにDjangoプロジェクトのデータを持ってくる。
(下の例ではgitからclone)
また、Apacheユーザからアクセスするためにはホームディレクトリに実行権限を持たせる必要があるため権限を変更する。
# useradd www-data -g apache
# su - www-data
$ git clone (gitリポジトリのURL)
$ exit
# chmod 770 /home/www-data/
staticディレクトリの作成 Link to heading
静的ファイルは専用のディレクトを用意。
その後、collectstaticコマンドで静的ファイルをコピーする。
こちらもApacheユーザ権限を追加する。
# mkdir /var/www/static
# chown www-data:apache /var/www/static
# su - www-data
$ cd (gitリポジトリ名)
$ python manage.py collectstatic
$ exit
# chmod -R 775 /var/www/static
Apacheの設定ファイルを編集 Link to heading
/etc/httpd/conf/httpd.confを編集し、以下を追記する。
以下の例は最小限の設定内容を記載している。
WSGIScriptAlias / /home/www-data/(gitリポジトリ名)/(Djangoプロジェクト名)/wsgi.py
WSGIPythonPath /home/www-data/(gitリポジトリ名)
Alias /static/ /var/www/static/
<Directory /home/www-data/(gitリポジトリ名)/(Djangoプロジェクト名)>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
<Directory /var/www/static>
Order deny,allow
Allow from all
</Directory>
Apacheの再起動 Link to heading
systemctl restart httpd
確認 Link to heading
ブラウザで「http://127.0.0.1/」にアクセス