2009-09-29 82 views
0

我想在我們的學生服務器上部署我的django寵物項目。我們有UserDir mod apache2,我沒有訪問apache2配置文件。我如何部署? :-D部署django到UserDir

我來自PHP背景,我部署我的PHP腳本,將它們上傳到我的public_html目錄,所有內容都顯示在http://ourserver.com/~myusername上。我閱讀django文檔,它說我應該將<Location>some stuff</Location>添加到我們的apache配置文件。我無法訪問它,所以我嘗試將它放在我的public_html目錄中的.htaccess中,但這不起作用。我GOOGLE了很多,我想我讀了一個地方,你不能把<Location>放在.htaccess中,但現在我找不到那個報價。

那麼,這裏有人在沒有騷擾Apache管理員的情況下將django部署到UserDir?

編輯: 我測試了mod_python格雷厄姆鄧普爾頓建議here,我可以利用mod_python的沒有問題。另外,我發現錯誤日誌和這裏是什麼錯誤日誌中說,當我在.htaccess把<Location>some stuff</Location>

"[Thu Oct 01 21:33:19 2009] [alert] [client 188.129.74.66] /path/to/my/.htaccess: <Location not allowed here"

所以,好像我真的不能把<Location>到的.htaccess。那麼,我有什麼選擇?

+0

mod_python已啓用,mod_wsgi不是。我想我可以讓我的管理員啓用mod_wsgi,如果它不是太麻煩。 – dijxtra 2009-09-29 12:12:38

回答

0

mod_python還是mod_wsgi在基地Apache上啓用?你至少需要這個。

+1

他說他無法訪問Apache配置文件,所以mod_wsgi或mod_python都沒有任何用處。即使管理員安裝了mod_python,它也沒用,因爲它不提供用戶分離。你可以得到mod_wsgi守護進程模式的用戶分離,但意味着管理員在每個用戶的基礎上進行手動配置,他們不太可能想要這樣做。其他選項是查看Apache實例是否安裝了其中一個FASTCGI模塊。 – 2009-09-29 10:51:21

+0

mod_python啓用,mod_wsgi不是。 – dijxtra 2009-09-29 12:13:17

+0

mod_fastcgi也未啓用。 – dijxtra 2009-09-29 14:38:10

0

你會被允許在80以外的端口上運行自己的長時間運行的服務器進程嗎?這可能允許您使用Django測試服務器或使用本地配置文件的Apache副本服務Django內容。

+0

這可能是可能的。 Django測試服務器不適合生產,但如果沒有其他解決方案,我自己使用替代端口號的Apache副本可能是一個解決方案。現在,這是我可以接近我的管理員。謝謝。 – dijxtra 2009-09-30 05:05:03

1

如果安裝了mod_python,請先查看您是否可以實際使用它,而無需管理員執行任何操作。閱讀:

http://www.dscpl.com.au/wiki/ModPython/Articles/GettingModPythonWorking

除非你是一個值得信賴的用戶或管理員不知道他們在做什麼,他們不應該被允許你使用mod_python的,因爲你的代碼將作爲Apache用戶如果運行其他任何人也以同樣的方式運行應用程序,您可能會干擾其他應用程序和數據。換句話說,它是不安全的,不應該用於同一個Apache實例上有多個用戶的共享主機環境中。


更新1

在此基礎上,你現在有mod_python的工作,你應該能夠與像更換mptest.py的內容:

import os 
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' 

import sys 
sys.path.insert(0, '/some/path/to/project/area/mysite') 
sys.path.insert(0, '/some/path/to/project/area') 

from django.core.handlers.modpython import handler as _handler 

def handler(req): 
    req.get_options()['django.root'] = '/~myusername/mptest.py' 
    return _handler(req) 

顯然,不同的路徑和這個值應該根據你的命名來改變。

該網站將作爲'/~myusername/mptest.py'訪問。

在這一點上,你會發現愚蠢的使用mod_python是你沒有控制Apache的地方。這是因爲當您更改站點中的代碼時,您需要請管理員爲您重新啓動Apache,以便您可以選擇更改。

在守護進程模式下使用mod_wsgi作爲守護進程的所有者將會好得多,但是如果他們已經在運行mod_python我不會推薦他們在同一時間加載兩個模塊,因爲mod_python問題使用了mod_wsgi在某些情況下,如果他們沒有正確安裝Python,你可能會遇到很多問題,所以不值得麻煩。

簡而言之,在沒有Apache控制權的共享主機環境中使用mod_python是愚蠢且不安全的。

所有這一切,都記錄瞭如何從每個用戶目錄中運行Django,因爲我認爲它以前沒有任何記錄。

+0

對不起,我很忙,明天下午(格林威治標準時間)我會測試我的mod_python。這篇文章看起來很棒,我發現我們的服務器上有mod_python 3.3.1,但是因爲我現在就去了,所以我沒有進一步的瞭解。我明天會回到這裏,我真的很想解決這個問題... – dijxtra 2009-09-30 20:50:13

+0

該死的。我無法從那篇文章中運行mptext.py,我得到了403條禁止。我發了一封電子郵件給我的管理員,並要求他允許我使用mod_python。當他迴應時,我會回覆你,並且我得到一個工作的mod_python環境。 – dijxtra 2009-10-01 16:51:06

+0

最後。我無法通過你提供的鏈接完成測試,因爲我的.htaccess是700.我修正了這個問題,現在我可以看到「mptest.py」。因此,我可以毫無問題地使用mod_python。順便說一句,我的管理員告訴我錯誤日誌是如此,我添加了額外的信息,我原來的問題。我可能應該先檢查一下。 – dijxtra 2009-10-01 19:42:42

0

您是否嘗試過使用<Directory>而不是<Location>?如果不阻止本地策略,你應該能夠做這樣的事情:

<Directory /path/to/your/home/public_html> 
# mod_python stuff here 
</Directory> 

我會用任何mod_wsgifastcgi如果你與你的管理良好的條件去。但是,如果是這種情況,您應該簡單地能夠給您​​的管理員配置mod_wsgi配置,因爲它支持基於更新的重新加載並以替代用戶身份運行。他應該可以將它設置爲簡單地運行您的帳戶下一個WSGI文件 - 與allow from all這樣的事情,可能取決於安全性的配置:

<Directory /home/you/public_html> 
WSGIApplicationGroup PROJECT 
WSGIDaemonProcess YOU threads=15 processes=2 python-path=/home/YOU/.virtualenvs/PROJECT-env/lib/python2.6/site-packages 
WSGIProcessGroup YOUR_GROUP 
WSGIScriptAlias//home/YOU/PROJECT/deploy/PROJECT.wsgi 
</Directory> 

順便說一句,上述假定使用的真棒,強烈推薦virtualenvvirtualenvwrapper在您的主目錄中創建本地python沙箱。這將以非管理員身份或者當您有多個項目時大量簡化生活運行。如果你不使用virtualenv,上面的python-path可以完全刪除。

+1

位置或目錄指令都不能在.htaccess文件中使用。 – 2009-10-02 02:29:25