簡體   English   中英

Django(wsgi)和Wordpress在Apache虛擬主機中共存

[英]Django (wsgi) and Wordpress coexisting in Apache virtualhost

我有一個Django項目,我需要安裝在我的URL的兩個不同的子目錄,我需要在/運行Wordpress。 所以:

*.example.com - WordPress
*.example.com/studio - django
*.example.com/accounts - django

這是我到目前為止的httpd.conf:

<VirtualHost *:80>
    ServerName wildcard.localhost
    ServerAlias *.localhost

    AddType application/x-httpd-php .php
    DocumentRoot /var/empty

    Alias /site_media/ /home/zach/projects/python/myproject/static/
    Alias /media/ /home/zach/projects/python/myproject/env/lib/python2.6/site-packages/django/contrib/admin/media/
    Alias / /home/zach/projects/python/myproject/wordpress/

    WSGIScriptAlias /accounts /home/zach/projects/python/myproject/app/privio.wsgi
    WSGIScriptAlias /studio /home/zach/projects/python/myproject/app/privio.wsgi

    <Directory /home/zach/projects/python/myproject/app>
    Order allow,deny
    Allow from all
    </Directory>

    <Directory /home/zach/projects/python/myproject/wordpress>
    Order allow,deny
    Allow from all
    </Directory>

在我為WordPress添加配置之前,Django應用程序運行正常。 但是通過這個新設置,我能夠在/上看到WordPress安裝,但是Django應用程序沒有得到服務。 我在Apache配置上是一個菜鳥 - 我錯過了什么?

更換:

DocumentRoot /var/empty

有:

DocumentRoot /home/zach/projects/python/myproject/wordpress

去掉:

Alias / /home/zach/projects/python/myproject/wordpress/

更換:

WSGIScriptAlias /accounts /home/zach/projects/python/myproject/app/privio.wsgi
WSGIScriptAlias /studio /home/zach/projects/python/myproject/app/privio.wsgi

有:

WSGIScriptAliasMatch ^(/(accounts|studio)) /home/zach/projects/python/myproject/app/privio.wsgi$1

換句話說,使用DocumentRoot來引用需要位於站點根目錄而不是Alias指令的wordpress。

WSGIScriptAliasMatch是如此Django本身認為它仍然掛載在根站點,即使實際只傳遞了它的指定子URL。 這簡化了urls.py的工作。

請注意,WSGI腳本路徑末尾的$ 1很重要,因此請不要將其關閉。

Paging Graham Dumpleton :)

我敢冒險猜測這條線

Alias / /home/zach/projects/python/myproject/wordpress/

覆蓋它下面的一切。 因此,對/accounts任何請求都將由wordpress應用程序處理,而不是由Django應用程序處理。

文檔

在站點的根安裝

如果您想要在站點的根目錄下安裝WSGI應用程序,只需在配置WSGIScriptAlias指令時將“/”列為安裝點。

WSGIScriptAlias / /usr/local/www/wsgi-scripts/myapp.wsgi

但請注意,這樣做意味着將隱藏DocumentRoot中包含的任何靜態文件,並且WSGI應用程序將處理針對靜態文件的URL的請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM