naritoブログ

【お知らせ】
新ブログができました。今後そちらで更新し、このサイトは更新されません(ウェブサイト自体は残しておきます)
このブログの内容に関してコメントしたい場合は、新ブログのフリースペースに書き込んでください

このブログの内容を新ブログに移行中です。このブログで見つからない記事は、新ブログにありま

DjangoをApacheで動かすときの、confサンプル

約1345日前 2016年9月19日16:25
プログラミング関連
Django Python
DjangoをApache上で動かす際の、confファイルによく書くサンプルです。
Apache2.2の例で、mod_wsgiを導入しDjangoが既に動かせる状態とします。


サンプル1です。
staticやmediaは、このようにAliasを設定する必要があります。
今回はプロジェクト内にstaticやmediaのディレクトリがある例です。

NameVirtualHost *:80
LoadModule wsgi_module modules/mod_wsgi.so
WSGISocketPrefix run/wsgi
<VirtualHost *:80>
ServerName domain.com

WSGIDaemonProcess domain.com python-path=/home/django/testproject
WSGIProcessGroup domain.com
WSGIScriptAlias / /home/django/testproject/testproject/wsgi.py

Alias /sitemap.xml /home/django/testproject/static/sitemap.xml
Alias /static/ /home/django/testproject/static/
Alias /media/ /home/django/testproject/media/


<Directory /home/django/testproject/static>
Order deny,allow
Allow from all
</Directory>

<Directory /home/django/testproject/media>
Order deny,allow
Allow from all
</Directory>

</VirtualHost>



2.2ではなく2.4を使う際は、以下のようになります。

NameVirtualHost *:80
LoadModule wsgi_module modules/mod_wsgi.so
WSGISocketPrefix run/wsgi
<VirtualHost *:80>
ServerName domain.com

WSGIDaemonProcess domain.com python-path=/home/django/testproject
WSGIProcessGroup domain.com
WSGIScriptAlias / /home/django/testproject/testproject/wsgi.py

Alias /sitemap.xml /home/django/testproject/static/sitemap.xml
Alias /static/ /home/django/testproject/static/
Alias /media/ /home/django/testproject/media/


<Directory /home/django/testproject/static>
Require all granted
</Directory>

<Directory /home/django/testproject/media>
Require all granted
</Directory>

<Directory /home/django/testproject/testproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>


サンプル2です。sslを使う例です。
私は基本的にletsencryptを使います。
https://letsencrypt.jp/usage/

httpsではなくhttpでアクセスすると、httpsにリダイレクトするように設定もしています。

NameVirtualHost *:80
NameVirtualHost *:443
LoadModule wsgi_module modules/mod_wsgi.so
WSGISocketPrefix run/wsgi
<VirtualHost *:443>
ServerName domain.com

SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/domain.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/domain.com/chain.pem

WSGIDaemonProcess domain.com python-path=/home/django/testproject
WSGIProcessGroup domain.com
WSGIScriptAlias / /home/django/testproject/testproject/wsgi.py

Alias /sitemap.xml /home/django/testproject/static/sitemap.xml
Alias /static/ /home/django/testproject/static/
Alias /media/ /home/django/testproject/media/


<Directory /home/django/testproject/static>
Order deny,allow
Allow from all
</Directory>

<Directory /home/django/testproject/media>
Order deny,allow
Allow from all
</Directory>

</VirtualHost>
<VirtualHost *:80>
ServerName domain.com

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

</VirtualHost>


そしてサンプル3
http://test.com
http://www.test.com
https://www.test.com

https://test.com
のように、リダイレクトさせます。このブログもそうです。
ServerAliasなんかを使うと、もう少し綺麗に書ける気がします。

NameVirtualHost *:80
NameVirtualHost *:443
LoadModule wsgi_module modules/mod_wsgi.so
WSGISocketPrefix run/wsgi
<VirtualHost *:443>
ServerName domain.com

SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/domain.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/domain.com/chain.pem

WSGIDaemonProcess domain.com python-path=/home/django/testproject
WSGIProcessGroup domain.com
WSGIScriptAlias / /home/django/testproject/testproject/wsgi.py

Alias /sitemap.xml /home/django/testproject/static/sitemap.xml
Alias /static/ /home/django/testproject/static/
Alias /media/ /home/django/testproject/media/


<Directory /home/django/testproject/static>
Order deny,allow
Allow from all
</Directory>

<Directory /home/django/testproject/media>
Order deny,allow
Allow from all
</Directory>

</VirtualHost>
<VirtualHost *:80>
ServerName domain.com

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

</VirtualHost>
<VirtualHost *:80>
ServerName www.domain.com

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://domain.com%{REQUEST_URI} [R=301,L]

</VirtualHost>
<VirtualHost *:443>
ServerName www.domain.com

SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/domain.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/domain.com/chain.pem

RewriteEngine on
RewriteRule ^(.*)$ https://domain.com%{REQUEST_URI} [R=301,L]

</VirtualHost>