2012-11-28 110 views
7

我想給一個域名並在我的apache上運行多個django項目,目前我設法託管一個應用程序並運行它127.0.0.1:8888設置看起來像這樣。在windows上部署多個Django項目使用windows

WSGIScriptAlias/C:/Users/ShabeerSheffa/workspace/ApacheDemo/ApacheDemo/wsgi.py 
WSGIPythonPath C:/Users/ShabeerSheffa/workspace/ApacheDemo 

<Directory C:/Users/ShabeerSheffa/workspace/ApacheDemo> 
    <Files wsgi.py> 
     Order deny,allow 
     Allow from all 
    </Files> 
</Directory> 

我試圖改變上面的代碼看起來像下面的代碼,用一個域名,所以我可以使用apachedemo.com訪問,但無疾而終。

NameVirtualHost apachedemo.com 

<VirtualHost apachedemo.com>  
    ServerName apachedemo.com 
    ServerAlias www.apachedemo.com 

    WSGIScriptAlias/C:/Users/ShabeerSheffa/workspace/ApacheDemo/ApacheDemo/wsgi.py 
    WSGIPythonPath C:/Users/ShabeerSheffa/workspace/ApacheDemo 

    DocumentRoot C:/Users/ShabeerSheffa/workspace/ApacheDemo 

    <Directory C:/Users/ShabeerSheffa/workspace/ApacheDemo> 
     <Files wsgi.py> 
      Order deny,allow 
      Allow from all 
     </Files> 
    </Directory>  

</VirtualHost> 

我目前正在使用的端口8888我的Apache在Windows 7計算機,127.0.0.1:8888工作了代碼的第一個版本,但編輯代碼的Apache後重新啓動Apache的時候給出一個錯誤。

這是我的主機文件看起來像,我只加了最後一道防線。(不太清楚爲什麼會出現在二,三線一個#)

# localhost name resolution is handled within DNS itself. 
# 127.0.0.1  localhost 
# ::1    localhost 
    127.0.0.1:8888  apachedemo.com  www.apachedemo.com 

我試圖找到答案有兩個問題 -

  1. 如何使apachedemo.com工作
  2. 如何添加另一個項目在同一臺服務器上,例如apachedemo2.com

編輯:我使用eclipse

非常感謝您的幫助球員

回答

4

嘗試下面配置了發展我的項目。你也可能會發現這個question有用,在mod wsgi文檔中有一個關於virtualhosts的部分,它可能對你有幫助。

WSGIPythonPath C:/Users/ShabeerSheffa/workspace/ApacheDemo 

<VirtualHost apachedemo.com:8888> 
    ServerName apachedemo.com 
    WSGIScriptAlias/C:/Users/ShabeerSheffa/workspace/ApacheDemo/ApacheDemo/wsgi.py 

    <Directory C:/Users/ShabeerSheffa/workspace/ApacheDemo> 
     <Files wsgi.py> 
      Order deny,allow 
      Allow from all 
     </Files> 
    </Directory> 
</VirtualHost> 

<VirtualHost apachedemo2.com:8888> 
    ServerName apachedemo2.com 
    WSGIScriptAlias/C:/Users/ShabeerSheffa/workspace/ApacheDemo/apachedemo2/wsgi.py 

    <Directory C:/Users/ShabeerSheffa/workspace/ApacheDemo> 
     <Files wsgi.py> 
      Order deny,allow 
      Allow from all 
     </Files> 
    </Directory> 
</VirtualHost> 

更新

一問之下的評論,你可以在每一個虛擬主機不同WSGIPythonPath。查看configuration docs WSGIPythonPath只能在上下文服務器配置中,而不能在虛擬主機上。但是,您可以將自己的wsgi文件中的路徑添加爲shown in this answer。您也可以嘗試使用python-path來查看WSGIDaemonProcess,如this question中所示。

+0

我認爲我有,因爲我的Apache使用該端口,它仍然沒有工作切換到<虛擬主機apachedemo2.com:8888>:| ,「糟糕!谷歌瀏覽器找不到apachedemo.com」 – shabeer90

+0

是的你是對的,它應該改爲8888.我不知道爲什麼它不工作。 –

+0

我得到你的代碼工作:),只是想知道如果我可以有兩個不同的WSGIPythonPath的,因爲我有兩個項目正在運行.. – shabeer90

4

請務必閱讀:

自動生成wsg​​i.py文件在Django 1.4做的事情中,你不能承載不同的子下在同一過程中的兩個的Django實例的方式口譯。您將需要更改wsgi.py文件。

如果您還有任何問題,還可以使用Apache配置。因爲儘管通過提供任何錯誤消息你確切地知道錯誤是什麼,但很難猜測你的問題是什麼。

1

最好的解決方案是在它自己的Django實例中運行它自己的WSGI流程上的每個Django項目。

WSGIPythonPath /var/www/path/web:/var/www/path/api 

WSGIDaemonProcess api_wsgi user=user group=group 
WSGIScriptAlias /api /var/www/path/api/wsgi.py 
<Location /api> 
WSGIProcessGroup api_wsgi 
</Location> 

WSGIDaemonProcess web_wsgi user=user group=group 
WSGIScriptAlias /web /var/www/path/web/wsgi.py 
<Location /web> 
#SetEnv DJANGO_SETTINGS_MODULE project.settigs 
WSGIProcessGroup web_wsgi 
</Location> 

在該主題的帖子: http://www.area0x33.com/blog/?p=155