我在Debian机器上安装了apache2,mod_wsgi,并将其添加到我的apache2.conf
文件中:
WSGIScriptAlias /home/zurelsoft/Documents/workspace/genalytics/genalytics/wsgi.py
WSGIPythonPath /home/zurelsoft/Documents/workspace/genalytics
<Directory /home/zurelsoft/Documents/workspace/genalytics/genalytics>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
我的项目名称是genalytics
。我正在使用Django 1.5。已经有wsgi.py了。我应该怎么做用mod_wsgi运行django,我应该在哪里给出我的静态文件的路径。感谢
修改
我的apache.conf文件中有这个:
Listen 8000
Alias /static/ /home/zurelsoft/Documents/workspace/genalytics/fileupload/static
<Directory /home/zurelsoft/Documents/workspace/genalytics/fileupload/static>
Order deny,allow
Allow from all
</Directory>
WSGIScriptAlias / /home/zurelsoft/Documents/workspace/genalytics/fileupload/static
<Directory /home/zurelsoft/Documents/workspace/genalytics/fileupload/static>
<Files wsgi.py>
Order allow,deny
Allow from all
</Files>
</Directory>
但是当我运行尝试启动apache时,我收到此错误:
(98)已经在使用的地址:make_sock:无法绑定到地址0.0.0.0:80 没有可用的监听套接字,关闭 无法打开日志 行动开始&#39;失败。
答案 0 :(得分:1)
假设您已正确设置所有内容,那么您没有太多工作要做。
在您的应用程序根目录中,创建一个名为django.wsgi的文件并编写以下代码。
import os
import sys
sys.path.append('/path/to/your/app')
os.environ['PYTHON_EGG_CACHE'] = '/path/to/your/app/.python-egg'
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
现在,在apache配置中添加虚拟主机以提供静态和其他文件,并添加以下行:
WSGIScriptAlias / /path/to/your/app/django.wsgi
<Directory /path/to/your/app>
Order allow,deny
Allow from all
</Directory>
Alias /robots.txt /path/to/your/app/robots.txt
Alias /favicon.ico /path/to/your/app/favicon.ico
Alias /images /path/to/your/app/images
Alias /static /path/to/your/app/static
ErrorLog /path/to/your/app/logs/error.log
CustomLog /path/to/your/app/access.log combined
记得重启apache。 您可以查看this和this链接以获取完整信息。此外,如果您需要知道如何添加虚拟主机,请检查this输出。
希望有所帮助。
答案 1 :(得分:0)
网上有许多声音,其中大多数都与当前的Django版本配合使用,但我对他们对Django当前文档缺乏一致性感到不满,并找到了遵循这些说明的最简单方法:
https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/modwsgi/
在那里它说:'从Django版本1.4开始, startproject将为你创建wsgi.py - 看起来像这样:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
所以现在它是连接到mod_wsgi的 wsgi.py ,你使用aptitude安装,而 django.wsgi 已被弃用。
现在我们要尊重配置apache站点的 debian方法,所以我们创建了一个 dj-myapp,而不是将以下代码放入httpd.conf中,而不是像django-docs建议的那样。 / etc / apache2 / sites-available中的文件,使用 a2ensite dj-myapp 激活它,并使用 a2dissite default 禁用默认值。 WSGI指令是在virtualhost部分之前编写的:
WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
WSGIPythonPath /path/to/mysite.com
<VirtualHost *:80>
<Directory /path/to/mysite.com/mysite>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
</VirtualHost>
这适用于apache 2.2x,2.4+使用需要所有授予而不是允许来自所有。
最后配置静态文件服务,如django文档中所述。指令也放在 dj-myapp 中。对于管理静态文件,这行适用于我:
Alias /static/admin /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin
答案 2 :(得分:0)
在/etc/apache2/sites-available中创建名为app.conf的文件.app.conf:
WSGIPassAuthorization On
WSGIPythonPath /home/brms/manage/web/brms
WSGIDaemonProcess pyramid user=brms group=brms threads=4 \
python-path=/usr/local/lib/python3.4/dist-packages/
<VirtualHost *:80>
<Directory /home/brms/manage/>
<Files wsgi.py>
WSGIProcessGroup pyramid
Require all granted
</Files>
</Directory>
Alias /meetingApp /var/www/meetingApp
</VirtualHost>
WSGIScriptAlias / /home/brms/manage/wsgi.py
启用此网站:sudo a2ensite app.conf
重启Apache:sudo service apache2 restart