FreeBSD:如何使用 mod_wsgi 安装 Django?

FreeBSD:如何使用 mod_wsgi 安装 Django?

使用 FreeBSD 8.2-RELEASE。我想尝试一下 Django,并且想在我的 freebsd 系统上进行工作设置。我的理解是我需要安装 python、apache、mod_wsgi 和 django。这Django 手册部分谈论 mod_python 而不是 mod_wsgi,我相信 mod_wsgi 是推荐的方法。

我已经从软件包中安装了以下内容到我的系统上:

apache-2.2.17_1 
python26-2.6.6 

我需要做什么才能让 django 与 apache 一起工作?有教程吗?

答案1

你不需要安装任何特殊的东西来扰乱 Django。要使调试服务器正常工作,您唯一需要的是:

  • Python
  • 姜戈本身
  • 如果您想要 SQLite 以外的东西,则适用于您的数据库的 Python 模块

你已经有了Python,所以我建议:

easy_install pip
pip install django

然后按照Django 教程
mod_wsgi 开始发挥作用,当你部署你的申请。

答案2

好的,我主要在以下说明的帮助下完成了这项工作:http://code.google.com/p/modwsgi/wiki/InstallationOnFreeBSD

这是我所做的(作为 root 用户):

重新安装阿帕奇

我已经从二进制包安装了 apache22,但显然该包版本是在没有线程支持的情况下编译的,并且您需要 mod_wsgi 的线程。所以我做了: pkg_delete apache-2.2.17_1。这抱怨 php 依赖于 apache,所以我这样做了:pkg_delete php5-5.3.5。然后我pkg_delete apache-2.2.17_1又做了一次,效果很好。然后我做了cd /usr/ports/www/apache22然后make config我选中了复选框"[X] THREADS Enable threads support in APR"然后make然后make install。启动 apache 有效,但我收到错误“[警告] (2)没有这样的文件或目录:无法启用 'httpready' 接受过滤器”。我在网上搜索并通过这样做修复了它kldload accf_httpapachectl restart然后我将accf_http_load =“YES”添加到我的/boot/loader.conf中,这样这个更改将在重新启动后持续存在。

安装mod_wsgi

cd /usr/ports/www/mod_wsgi3
make
make install

这会自动修改我的 httpd.conf 文件以添加 loadmodule 行

重新安装php

(不是绝对必要的,但因为我必须在上面卸载它)

cd /usr/ports/lang/php5
make config (and set any options desired)
make
make install

测试 mod_wsgi 安装

按照说明进行操作http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide。我在文档根目录中创建了一个名为 test.wsgi 的文件,其中包含以下内容:

def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World!'

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)

    return [output]

我将以下行添加到 httpd.conf 的末尾:

WSGIScriptAlias /myapp /usr/home/myusername/www/wsgitest/test.wsgi

(在我的测试盒上,我设置了 apache,文档根目录位于 /usr/home/myusername/www)。然后我重新启动了apachectl。然后我去了http://localhost/myapp在我的浏览器中,瞧!我看到了“你好世界”。

安装点子

cd /usr/ports/devel/py-pip
make
make install

刷新了我的外壳,以便路径会更新。

安装Django

pip install django

(这让我得到了 django 版本 1.3 耶!)确认 django 安装

python
import django

创建 django 测试应用程序

我为 django test 创建了一个新文件夹mkdir /usr/home/myusername/www/djangotest。然后

django-admin.py startproject mysite

创建 django wsgi 文件

创建了一个新文件 /usr/home/myusername/www/djangotest/django.wsgi ,内容如下:

import os
import sys
path = '/usr/home/myusername/www/djangotest'
if path not in sys.path:
    sys.path.append(path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

编辑httpd.conf

WSGIScriptAlias /djangotest /usr/home/myusername/www/djangotest/django.wsgi
apachectl restart

访问http://locahost/djangotest在浏览器中。有用!

编辑 httpd-vhosts.conf (可选)

现在让它作为虚拟主机的一部分工作。注释掉 httpd.conf 中的 WSGIScriptAlias 行。然后添加如下内容:

<VirtualHost *>
 ServerName mytest.whatever
 DocumentRoot /usr/home/myusername/www/djangotest
 WSGIScriptAlias / /usr/home/myusername/www/djangotest/django.wsgi
</VirtualHost> 

apachectl restart

配置好hosts文件后,访问http://mytest.whatever在浏览器中。有用!

相关内容