Запустите приложение Django на сервере Apache (Ubuntu) с подключением SSL - PullRequest
0 голосов
/ 29 июня 2019

Сервер Apache по умолчанию находит папку www/html с port:8080 (по умолчанию: 80). Теперь файлы Django хранятся в html / django и работают с портом: 80 Это работает http://example.com

Теперь после добавления SSL www/html/django показывает всю структуру файла. при работе https://example.com

Теперь не получается любое решение, как работать с тем же

http://example.com
https://example.com

Уже изменено в /etc/apache2/sites-enabled/django.conf

<VirtualHost *:443>

    #My site Name
    ServerName example.com


    SSLEngine on


    SSLCertificateFile  /etc/ssl/certs/ssl-c.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-c.key


    #Demon process for multiple virtual hosts
    WSGIDaemonProcess example.com threads=5

    #Pointing wsgi script to config file
    WSGIScriptAlias / /var/www/html/django/django.wsgi
    WSGIProcessGroup example.com

    #Your static files location
    Alias /static/ "/var/www/html/django/template/"
    <Location "/media">
        SetHandler None
    </Location>
    <LocationMatch "\.(jpg|gif|png|js|css)$">
        SetHandler None
    </LocationMatch>
    <Directory /var/www/html/django>
        WSGIProcessGroup example.com
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>

1 Ответ

0 голосов
/ 30 июня 2019

Добро пожаловать в переполнение стека. Я делаю это, создавая два .conf файла и избегая перезаписи httpd.conf. Сначала файл ssl.conf:

SSLCertificateFile /etc/ssl/certs/ssl-c.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-c.key
SSLCertificateChainFile /etc/ssl/private/InCommonRSAServerCA_2.pem
SSLCipherSuite TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA:HIGH:!aNULL:!MD5
SSLHonorCipherOrder on
SSLCompression off
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1

Listen 443

Это отключит небезопасные, старые протоколы и потребует TLS 1.2 +.

Затем я создаю файл для каждого сайта, размещаемого на сервере, как VirtualHost, например, mysite.conf:

<VirtualHost my-site.example.com:80>
  ServerName my-site.example.com
  ServerAlias www.my-site.example.com
  Redirect permanent / https://my-site.example.com/
</VirtualHost>


<VirtualHost *:443>
  TimeOut 600
  SSLEngine On

  ServerName my-site.example.com
  ServerAlias www.my-site.example.com

  # Set to the lobal Application Group
  WSGIApplicationGroup %{GLOBAL}
  # Pass Authorizations through to the WSGI app for Django REST Framework Token Auth
  WSGIPassAuthorization On

  WSGIDaemonProcess my-site-https python-home=/var/django/my-site/sites/my-site/venv request-timeout=600 user=apache group=apache processes=1
  WSGIProcessGroup my-site-https
  WSGIScriptAlias / /var/django/my-site/sites/my-site/config/wsgi.py process-group=my-site-https
  <Directory /var/django/my-site/sites/my-site/config>
    Require all granted
  </Directory>
  Alias /static/ /var/django/my-site/sites/my-site/static/
  <Directory /var/django/my-site/sites/my-site/static>
    Require all granted
  </Directory>
</VirtualHost>

Здесь есть несколько дополнительных вещей. Во-первых, WSGIPassAuthorization включается, если вы используете аутентификацию токена Django REST Framework. Вам это может не понадобиться.

WSGIDaemonProcess содержит несколько явных настроек, которые вы можете изменить или не требовать, например, user, group и processes. Это позволяет вам настраивать, для какого пользователя и группы запускается процесс Apache Linux для этого VirtualHost, а processes контролирует, сколько процессов иметь.

Две директивы Directory необходимы для обеспечения доступа к файлу конфигурации .wsgi вашего проекта Django и вашим статическим файлам.

Удачи! Это сложно настроить, но как только вы поймете это правильно, mod_wsgi будет надежным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...