Сайт Django в Ubuntu 18.04 с Apache2 не работает после установки SSL - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь развернуть свое приложение Djang (1.10) в Ubuntu 18.04 с Apache2, используя mode_wsgi, сайт работал отлично до установки SSL, но когда я устанавливаю сертификат SSL из Let'sEncrypt, используя certbotбольше не загружается.

Вот мои конфигурации:

Путь к папке проекта:

/home/abdul

Http конфигурация:

<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.

    ServerName www.orderfetchers.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf

    Alias /static /home/abdul/Fetchors/static
      <Directory /home/abdul/Fetchors/static>
        Require all granted
      </Directory>

      Alias /media /home/abdul/Fetchors/media
      <Directory /home/abdul/Fetchors/media>
        Require all granted
      </Directory>

      <Directory /home/abdul/Fetchors/Fetchors>
        <Files wsgi.py>
          Require all granted
        </Files>
      </Directory>
    #WSGIScriptAlias / /home/abdul/Fetchors/Fetchors/wsgi.py
    #WSGIDaemonProcess django_app python-path=/home/abdul/Fetchors python-home=/home/abdul/Fetchors/venv
    #WSGIProcessGroup django_app
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.orderfetchers.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Вот Https Конфигурация:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.

    ServerName www.orderfetchers.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf

    Alias /static /home/abdul/Fetchors/static
      <Directory /home/abdul/Fetchors/static>
        Require all granted
      </Directory>

      Alias /media /home/abdul/Fetchors/media
      <Directory /home/abdul/Fetchors/media>
        Require all granted
      </Directory>

      <Directory /home/abdul/Fetchors/Fetchors>
        <Files wsgi.py>
          Require all granted
        </Files>
      </Directory>
    WSGIScriptAlias / /home/abdul/Fetchors/Fetchors/wsgi.py
    WSGIDaemonProcess django_app python-path=/home/abdul/Fetchors python-home=/home/abdul/Fetchors/venv
    WSGIProcessGroup django_app

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/www.orderfetchers.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.orderfetchers.com/privkey.pem
</VirtualHost>
</IfModule>

1 Ответ

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

tl; dr: Проверьте брандмауэры (порт 443) и воспользуйтесь онлайн-руководствами по настройкам (ниже).


Хорошо, поэтому у меня возникла та же ошибка, что и у вассделал - мой сайт работал нормально на порте 80 с Apache2 и Django 1.10 на коробке с Ubuntu, и когда я следовал руководству по LetsEncrypt, мой сайт мог загружаться вечно до истечения времени ожидания.Я предполагаю, что вопрос в вашем посте состоит в том, как остановить ваш сайт от простоев ожидания и заставить его загружаться.

В моем случае мне повезло, потому что я был просто идиотом, который забыл открыть порт 443 в группе безопасности AWS для своего Ubuntu.Однако у меня была дополнительная конфигурация, которая может вам помочь:

settings.py

# SSL support
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True

# session expire at browser close
SESSION_EXPIRE_AT_BROWSER_CLOSE = True

# wsgi scheme
os.environ['wsgi.url_scheme'] = 'https'

wsgi.py

os.environ['HTTPS'] = "on"

Эти конфиги были найдены и скомпилированы с помощью этих справочных сайтов (которые также могут вам помочь):

https://simpleisbetterthancomplex.com/tutorial/2016/05/11/how-to-setup-ssl-certificate-on-nginx-for-django-application.html

https://www.pdxpixel.com/blog/2014/02/04/setting-up-django-site-ssl-apache-mod_wsgi-mod_ssl/

https://docs.djangoproject.com/en/dev/topics/security/#ssl-https

Без большего понимания того, что представляет собой ваша система, трудно помочь более точно, но это то, что я нашел полезным, так что, надеюсь, это поможет.

...