Pythonメモ torinaブログ

このブログはDjangoとBootstrap4で作成されました
ソースコード

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

プログラミング関連 Django
約191日前 2016年9月19日16:25
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>