2017-10-14 106 views
0

我想部署我的第一個Django應用程序(在A2主機上)。不幸的是,我無法訪問我的Apache2 conf文件(和/或httpd),我只能修改.htaccess文件,而不是您可以在下面看到的。 經過多次嘗試,我認爲這是Apache服務器無法加載wsgi.py,因爲我添加了一個日誌文件,創建時調用wsgi.py文件,它不是創建(我嘗試手動和日誌文件被正確創建)。因爲我認爲,如果我不能通過這個基本步驟,我該如何部署我的「真實」應用程序...現在,我正在嘗試打印Django「Wello World」。 最後,我使用Django 1.11.6和Python 3.5.4在虛擬環境中運行。如何配置.htaccess的Django部署

的.htaccess

DirectoryIndex /home/hairduseres/public_html/myapp/myapp/myapp/wsgi.py 
WSGIScriptAlias//home/user/public_html/myapp/myapp/myapp/wsgi.py 
WSGIPythonHome /home/user/virtualenv/myapp/3.5 
WSGIPythonPath /home/user/public_html/myapp 
<Directory /home/user/public_html/myapp/myapp/myapp/> 
    <Files wsgi.py> 
     Order deny,allow 
     Allow from all 
    </Files> 
</Directory> 
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION BEGIN 
PassengerAppRoot "/home/user/public_html/myapp" 
PassengerBaseURI "/myapp" 
PassengerPython "/home/user/virtualenv/myapp/3.5/bin/python3.5" 
# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION END 

wsgi.py

""" 
WSGI config for myapp project. 

It exposes the WSGI callable as a module-level variable named ``application``. 

For more information on this file, see 
https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/ 
""" 

import os 

from django.core.wsgi import get_wsgi_application 

print('===== sys.path/PYTHONPATH =====') 
for k in sorted(os.environ.keys()): 
    v = os.environ[k] 
    print ('%-30s %s' % (k,v[:70])) 
print(os.environ['VIRTUAL_ENV']) 

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings") 

logs = open("/home/user/logs", 'a') 
logs.write("(wsgi.py) file correctly load \n") 
logs.close() 

application = get_wsgi_application() 

我已經有了一看: Django AND .htaccess rewrites/redirects, is this possible?Configure WSGI with Django on OpenShift ,對課程的Django的網站上也有許多其他網站,不幸的是,他們解釋瞭如何在用戶訪問Apac時部署Django應用程序他conf文件...

回答

2

您不能使用WSGIScriptAlias或您嘗試在.htaccess文件中使用的其他mod_wsgi指令。如果您不能控制Apache httpd服務器本身,則不太可能使用mod_wsgi。

+0

所以,我不能使用mod_wsgi,但我怎麼能告訴我的Apache服務器來讀取我的wsgi.py文件? – Rekoc

+0

您將需要詢問您的服務提供商是否有可能。 –