【问题标题】:Run Django Application in Apache Server (Ubuntu) with the SSL connection使用 SSL 连接在 Apache Server (Ubuntu) 中运行 Django 应用程序
【发布时间】:2019-11-11 01:48:27
【问题描述】:

Apache 服务器默认使用port:8080 定位www/html 文件夹(默认为: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>

【问题讨论】:

    标签: python django apache deployment


    【解决方案1】:

    欢迎来到 Stack Overflow。我这样做的方法是创建两个.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 包含几个您可能想要更改或不需要更改的显式设置,例如usergroupprocesses。这允许您调整此 VirtualHost 运行的 Apache Linux 进程的用户和组,processes 控制有多少进程。

    需要两个 Directory 指令来允许访问 Django 项目的 .wsgi 配置文件和静态文件。

    祝你好运!配置起来很棘手,但一旦你做对了,mod_wsgi 就会坚如磐石。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-04
      • 2018-07-08
      • 2016-04-13
      • 1970-01-01
      • 2012-04-13
      • 1970-01-01
      • 2017-08-11
      • 1970-01-01
      相关资源
      最近更新 更多