使用FreeBSD 8.2-发布。我想和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一起工作?有教程吗?
发布于 2011-06-26 00:04:23
好的,我主要是在以下说明的帮助下完成这项工作的:http://code.google.com/p/modwsgi/wiki/InstallationOnFreeBSD
下面是我(作为根用户)所做的工作:
我已经从二进制包中安装了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成功了,但是我得到了一个错误:“警告没有这样的文件或目录:未能启用'httpready‘接受过滤器”。我在网上搜索并通过执行kldload accf_http和apachectl restart来修复它,然后在我的/boot/loader.conf中添加了accf_http_load="YES“,这样在重新启动之后这个更改就会持续。
cd /usr/ports/www/mod_wsgi3
make
make install这会自动修改我的httpd.conf文件以添加加载模块行。
(这不是绝对必要的,但由于我必须在上面卸载它)
cd /usr/ports/lang/php5
make config (and set any options desired)
make
make install按照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(在我的测试框中,我在/usr/home/myusername/www有一个带有文档根的apache安装程序)。然后我重新启动了。然后我在我的浏览器里去了http://localhost/myapp,瞧!我看了“你好世界”。
cd /usr/ports/devel/py-pip
make
make install刷新了我的shell,所以路径会更新。
pip install django(这让我得到了django版本1.3 yay!)确认django安装
python
import django我为django测试mkdir /usr/home/myusername/www/djangotest创建了一个新文件夹。然后
django-admin.py startproject mysite创建了一个具有以下内容的新文件/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()WSGIScriptAlias /djangotest /usr/home/myusername/www/djangotest/django.wsgi
apachectl restart在浏览器中访问http://locahost/djangotest。它起作用了!
现在,让它作为虚拟主机的一部分工作。注释掉WSGIScriptAlias行中的httpd.conf。然后添加如下内容:
<VirtualHost *>
ServerName mytest.whatever
DocumentRoot /usr/home/myusername/www/djangotest
WSGIScriptAlias / /usr/home/myusername/www/djangotest/django.wsgi
</VirtualHost>
apachectl restart配置主机文件后,在浏览器中访问http://mytest.whatever。它起作用了!
https://unix.stackexchange.com/questions/15525
复制相似问题