1

我已经在我的 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 没有可用的侦听套接字,正在关闭 无法打开日志 操作“开始”失败。

4

3 回答 3

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。您可以查看链接和链接以获取完整信息。此外,如果您需要知道如何添加虚拟主机,请查看内容。

希望有帮助。

于 2013-06-12T05:16:27.657 回答
0

网上有很多 howtos,其中大部分都适用于当前的 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()

所以现在是wsgi.py连接到您使用 aptitude 安装的 mod_wsgi,并且不推荐使用django.wsgi

现在我们要尊重配置 apache 站点的debian 方法,所以不要像 django-docs 建议的那样将以下代码放入 httpd.conf,而是在 /etc/apache2/sites-available 中创建一个dj-myapp文件,激活它使用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+ 使用Require all grant而不是Allow from all

最后配置静态文件服务,如 django 文档中所述。这些指令也放在dj-myapp中。对于管理静态文件,这一行对我有用:

Alias /static/admin /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin
于 2014-02-15T19:44:56.910 回答
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

启用这个站点:<code>sudo a2ensite app.conf 重启Apache:sudo service apache2 restart

于 2016-09-26T05:42:28.310 回答