使用 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
答案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_http
,apachectl 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在浏览器中。有用!