【问题标题】:how can i access django with apache? apache showing default page on django我如何使用 apache 访问 django? apache在django上显示默认页面
【发布时间】:2020-10-01 15:15:30
【问题描述】:

当我尝试通过 apache 服务器访问我的局域网 IP 地址上的 django 时,我得到了 apache2 的默认页面。我也在运行 django python manage.py runsever 命令并尝试使用 192.168.10.11 访问。但它仍然显示apache的默认页面。 如何使用 apache 访问 django?

<VirtualHost *:80>
 ServerName localhost
 DocumentRoot /home/five/NewsDesk/server
 WSGIScriptAlias / /home/five/NewsDesk/server/server/wsgi.py

 # adjust the following line to match your Python path 
 WSGIDaemonProcess 192.168.10.11 processes=2 threads=15 display-name=%{GROUP} python-home=/home/five/NewsDesk/env/lib/python3.8
 WSGIProcessGroup 192.168.10.11

 <directory /home/five/NewsDesk/server>
   <Files wsgi.py>
    Allow from all
    Require all granted
   </Files>
   AllowOverride all
   Require all granted
   Options FollowSymlinks
 </directory>

 Alias /static/ /home/five/NewsDesk/server/staticfiles/

 <Directory /home/five/NewsDesk/server/staticfiles>
  Require all granted
 </Directory>
</VirtualHost>

apache2ctl -S

$apache2ctl -S

VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server localhost (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost localhost (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost localhost (/etc/apache2/sites-enabled/newsdesk.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex default: dir="/var/run/apache2/" mechanism=default 
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33 not_used
Group: name="www-data" id=33 not_used

【问题讨论】:

  • 您的 WSGIScriptAlias/NewsDesk - 如果您希望它成为网站的根目录,请尝试将其更改为 /
  • 我也尝试使用 WSGIScriptAlias / /home/five/NewsDesk/server/server/wsgi.py 这段代码,但我遇到了同样的问题 apache 默认页面渲染......

标签: python django apache


【解决方案1】:

我猜,您的django 项目应该具有以下结构:

. home
  .. five
     .. NewsDesk
        .. server #  Your Django project root folder
           .. server
              .. settings.py
              .. wsgi.py

           ..

           .. staticfiles #  Your public folder to collect assets (js, css, img ..)
                          #  and served using apache

           .. manage.py

要使用apache 服务器在本地 服务/公开您的django 项目,您需要在以下位置进行一些更改:

虚拟主机配置

<VirtualHost *:80>
  # ServerName localhost
  ServerName myapp.local  #  rename your server

  DocumentRoot /home/five/NewsDesk/server
  WSGIScriptAlias / /home/five/NewsDesk/server/server/wsgi.py
  
  # adjust the following line to match your Python path 

  # i intentionnally commented the 2 lines below
  # WSGIDaemonProcess 192.168.10.11 processes=2 threads=15 display-name=%{GROUP} python-home=/home/five/NewsDesk/env/lib/python3.8
  # WSGIProcessGroup 192.168.10.11
  
  <directory /home/five/NewsDesk/server/server>  # HERE a missing "/server"
    <Files wsgi.py>
      # Allow from all
      Require all granted
    </Files>
    # AllowOverride all
    # Require all granted
    # Options FollowSymlinks
  </directory>
  
  Alias /static /home/five/NewsDesk/server/staticfiles  # HERE remove the triailling "/"
  <Directory /home/five/NewsDesk/server/staticfiles>
    Require all granted
  </Directory>

</VirtualHost>

/etc/hosts

(取决于linux 发行版以及apache 的安装和配置方式)

127.0.0.1  myapp.local

settings.py

ALLOWED_HOSTS = [
  '127.0.0.1', 'localhost',
  '192.168.10.11', 'myapp.local',
]

现在,要在本地公开您的应用,请使用以下命令

python manage.py runserver YOUR_IP_ADDRESS:PORT

但在你的情况下,它应该是:

python manage.py runserver 192.168.10.11

如果这对你有用,请告诉我

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 2012-10-01
    • 2012-10-06
    • 2011-09-27
    • 1970-01-01
    相关资源
    最近更新 更多