想试用一下django,使用到mysql,需要安装MySQLdb模块,才能访问数据库,linux是ubuntu。
1 下载:http://sourceforge.net/project/showfiles.php?group_id=22307
下载的文件为:MySQL-python-1.2.2.tar.gz
2 安装
先安装一个包(就这个问题把我折磨半天):
#sudo apt-get install libmysqlclient15-dev
#tar zxvf MySQL-python-1.2.2.tar.gz
#cd MySQL-python-1.2.2
#vi site.cfg
在安装libmysqlclient15-dev时会产生一个文件mysql_config,需要在此配置文件里指明(去掉前面的注释,把值设为下面的值):
mysql_config = /usr/bin/mysql_config
#sudo python ./setup.py build
#sudo python ./setup.py install
完成。
3 试用一下
#python
Python 2.5.2 (r252:60911, Oct 21 2008, 19:50:08)
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
>>>
一切OK!!!
4 补记
我估计另外一种安装可能更方便。
#sudo apt-get install libmysqlclient15-dev
#sudo apt-get install python-mysqldb
一开始就apt-get安装python-mysqldb,装完后却不能用,可能是由于没有安装libmysqlclient15-dev有关。
所以就转到源码安装,也错误一堆,现在想想都是没有安装libmysqlclient15-dev引起的。按照上面的步骤安装好后,可以使用了,就没有尝试apt-get install python-mysqldb是否也好使,你可以试试apt-get安装,若不行的话,转到源码安装。
没想到一个小安装问题,花了4个小时,网上的一些类似问题眼花缭乱,但适用的不多,但有时能寻到一些蛛丝马迹,就是费时。
2008年11月16日星期日
nginx+fastcgi+django的一次尝试
早有耳闻nginx,现在试用一下。我的机器ip为10.0.40.83,就在一台机器上测试,多台机器也是一样。
1. 安装nginx
在公司的机器是win,所以就在win下安装nginx。若果你在linux下安装过如lighttpd,过程是一样的,并没有太多的差异。OS因素是次要,实际生产环境要使用linux。
到http://nginx.net/,下载nginx-0.6.32-win32-setup.exe。后面......
2. 安装django1.0以及flup1.0
下载这2个软件,找到setup.py脚本,python setup.py install或python setup.py即可安装。当然要先要安装python,并配置好python环境变量。
3.创建工程
在D:\software\django\sites\下创建一个django工程mysite,如:pwd/django-admin.py startproject mysite
在mysite里添加一个py文件first.py
from django.http import HttpResponse
def index(request):
return HttpResponse('first django page .....')
修改url.py,在patterns里添加:
(r'^mysite/$','mysite.first.index')
4. 配置nginx
在nginx安装目录下,一般在C:\nginx\conf下,修改nginx.conf文件,关键几点如下:
worker_processes 2;#开2个nginx进程,在任务管理器可以看到这2个子进程和一个nginx主进程,一般按CPU数配置,我的习惯是2*CPU(核)数
events {
worker_connections 64;#每个进程链接队列长度,可按实际设置
}
http {
... #省略其它配置
#和后端的2个fastcgi 服务通讯,注意fastcgi ,后面用到,weight是权重
upstream fastcgi {
server 10.0.40.83:8051 weight=1;
server 10.0.40.83:8052 weight=1;
}
server {
listen 80;
server_name localhost;
...#省略其它配置
location / {
# 指定 fastcgi 的主机和端口,这里的fastcgi指的是上面的upstream
fastcgi_pass fastcgi;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_pass_header Authorization;
fastcgi_intercept_errors off;
}
...#省略其它配置
}
...#省略其它内容
}
4. 运行
运行nginx(administrator用户),在开始菜单里。
运行2个fastcgi服务,开2个cmd窗口,在mysite目录下:
python manage.py runfcgi host=10.0.40.83 port=8051 method=threaded daemonize=false
python manage.py runfcgi host=10.0.40.83 port=8052 method=threaded daemonize=false
http://10.0.40.83/或http://127.0.0.1/或http://localhost/可以看到输出结果。
5. 破坏尝试
开2个fastcgi的cmd窗口,终止其中一个访问看看,其实没有任何影响。
再把运行的停止,停止的启动看看,还是能访问。
若2个都终止,发现不能访问。
在测试过程中注意C:\nginx\logs下的log的输出信息。
nginx没有多少文档,只能看一些只言片语。有几个比较不错的参考文章。
张宴的一个ppt: 使用Nginx轻松实现开源负载均衡,其blog地址为:http://blog.s135.com/index.php
http://www.ibm.com/developerworks/cn/web/wa-lo-nginx/
http://nginx.net/
http://sysoev.ru/en/
其它的在网上google吧,总会有点的。
1. 安装nginx
在公司的机器是win,所以就在win下安装nginx。若果你在linux下安装过如lighttpd,过程是一样的,并没有太多的差异。OS因素是次要,实际生产环境要使用linux。
到http://nginx.net/,下载nginx-0.6.32-win32-setup.exe。后面......
2. 安装django1.0以及flup1.0
下载这2个软件,找到setup.py脚本,python setup.py install或python setup.py即可安装。当然要先要安装python,并配置好python环境变量。
3.创建工程
在D:\software\django\sites\下创建一个django工程mysite,如:pwd/django-admin.py startproject mysite
在mysite里添加一个py文件first.py
from django.http import HttpResponse
def index(request):
return HttpResponse('first django page .....')
修改url.py,在patterns里添加:
(r'^mysite/$','mysite.first.index')
4. 配置nginx
在nginx安装目录下,一般在C:\nginx\conf下,修改nginx.conf文件,关键几点如下:
worker_processes 2;#开2个nginx进程,在任务管理器可以看到这2个子进程和一个nginx主进程,一般按CPU数配置,我的习惯是2*CPU(核)数
events {
worker_connections 64;#每个进程链接队列长度,可按实际设置
}
http {
... #省略其它配置
#和后端的2个fastcgi 服务通讯,注意fastcgi ,后面用到,weight是权重
upstream fastcgi {
server 10.0.40.83:8051 weight=1;
server 10.0.40.83:8052 weight=1;
}
server {
listen 80;
server_name localhost;
...#省略其它配置
location / {
# 指定 fastcgi 的主机和端口,这里的fastcgi指的是上面的upstream
fastcgi_pass fastcgi;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_pass_header Authorization;
fastcgi_intercept_errors off;
}
...#省略其它配置
}
...#省略其它内容
}
4. 运行
运行nginx(administrator用户),在开始菜单里。
运行2个fastcgi服务,开2个cmd窗口,在mysite目录下:
python manage.py runfcgi host=10.0.40.83 port=8051 method=threaded daemonize=false
python manage.py runfcgi host=10.0.40.83 port=8052 method=threaded daemonize=false
http://10.0.40.83/或http://127.0.0.1/或http://localhost/可以看到输出结果。
5. 破坏尝试
开2个fastcgi的cmd窗口,终止其中一个访问看看,其实没有任何影响。
再把运行的停止,停止的启动看看,还是能访问。
若2个都终止,发现不能访问。
在测试过程中注意C:\nginx\logs下的log的输出信息。
nginx没有多少文档,只能看一些只言片语。有几个比较不错的参考文章。
张宴的一个ppt: 使用Nginx轻松实现开源负载均衡,其blog地址为:http://blog.s135.com/index.php
http://www.ibm.com/developerworks/cn/web/wa-lo-nginx/
http://nginx.net/
http://sysoev.ru/en/
其它的在网上google吧,总会有点的。
2008年10月22日星期三
lighttpd & django搭建测试环境
1. 软件环境
我的机器ip为192.168.1.183。
在此机器上安装了lighttpd1.4.20、python2.5、以及django1.0、flu1.0。
注:若在安装lighttpd时缺少依赖包,直接使用sudo apt-get install lighttpd来安装试试。其它可以源码编译安装。
2.创建工程
在/work/sites下创建一个django工程mysite,如:pwd/django-admin.py startproject mysite
在mysite里添加一个py文件first.py
from django.http import HttpResponse
def index(request):
return HttpResponse('first django page .....')
修改url.py,在patterns里添加:
(r'^mysite/$','mysite.first.index')
3.在mysite下添加一个文件mysite.cgi
#!/usr/bin/python
import sys,os
sys.path.inert(0, "/work/sites/mysite")
os.environ['DJANGO_SETTING_MODULE'] = 'setting'
from django.core.servers.fastcgi import runfastcgi
runfastcgi(method='threaded', daemonize='fase', socket='/work/sites/mysite/django.sock')
4.配置lighty
server.modules= ("mod_rewrite","mod_redirect","mod_alias","mod_access","mod_fastcgi","mod_accesslog")
#添加如下信息(采用load balance),采用tcp方式通讯:
$HTTP["remoteip"] == "192.168.1.183"{
server.document-root = "/work/sites/mysite/"
fastcgi.server = (
"/mysite.fcgi" => (
("host" => "127.0.0.1",
"port" => 8100,
#"socket" => "/work/sites/mysite/django.sock",
"check-local" => "disable"),
("host" => "192.168.1.183",
"port" => 8101,
"check-local" => "disable"),
),
)
alias.url = (
"/media/" => "/work/sites/mysite/media/",
)
url.rewrite-once = (
"^(/media.*)$" => "$1",
"^/favicon.ico$" => "/media/favicon.ico",
"^(/.*)$" => "/mysite.fcgi$1",
)
}
启动lighty
5.启动2个fastcgi服务(注意host区别,在前端分发时会匹配)
sudo python manage.py runfcgi host=127.0.0.1 port=8100 method=threaded
sudo python manage.py runfcgi host=192.168.1.183 port=8101 method=threaded
6.访问
http://192.168.1.183/mysite
页面输出为:first django page .....
可观察到请求被正常分发到127.0.0.1:8100和192.168.1.183:8101上(不同的fastcgi server)。
我的机器ip为192.168.1.183。
在此机器上安装了lighttpd1.4.20、python2.5、以及django1.0、flu1.0。
注:若在安装lighttpd时缺少依赖包,直接使用sudo apt-get install lighttpd来安装试试。其它可以源码编译安装。
2.创建工程
在/work/sites下创建一个django工程mysite,如:pwd/django-admin.py startproject mysite
在mysite里添加一个py文件first.py
from django.http import HttpResponse
def index(request):
return HttpResponse('first django page .....')
修改url.py,在patterns里添加:
(r'^mysite/$','mysite.first.index')
3.在mysite下添加一个文件mysite.cgi
#!/usr/bin/python
import sys,os
sys.path.inert(0, "/work/sites/mysite")
os.environ['DJANGO_SETTING_MODULE'] = 'setting'
from django.core.servers.fastcgi import runfastcgi
runfastcgi(method='threaded', daemonize='fase', socket='/work/sites/mysite/django.sock')
4.配置lighty
server.modules= ("mod_rewrite","mod_redirect","mod_alias","mod_access","mod_fastcgi","mod_accesslog")
#添加如下信息(采用load balance),采用tcp方式通讯:
$HTTP["remoteip"] == "192.168.1.183"{
server.document-root = "/work/sites/mysite/"
fastcgi.server = (
"/mysite.fcgi" => (
("host" => "127.0.0.1",
"port" => 8100,
#"socket" => "/work/sites/mysite/django.sock",
"check-local" => "disable"),
("host" => "192.168.1.183",
"port" => 8101,
"check-local" => "disable"),
),
)
alias.url = (
"/media/" => "/work/sites/mysite/media/",
)
url.rewrite-once = (
"^(/media.*)$" => "$1",
"^/favicon.ico$" => "/media/favicon.ico",
"^(/.*)$" => "/mysite.fcgi$1",
)
}
启动lighty
5.启动2个fastcgi服务(注意host区别,在前端分发时会匹配)
sudo python manage.py runfcgi host=127.0.0.1 port=8100 method=threaded
sudo python manage.py runfcgi host=192.168.1.183 port=8101 method=threaded
6.访问
http://192.168.1.183/mysite
页面输出为:first django page .....
可观察到请求被正常分发到127.0.0.1:8100和192.168.1.183:8101上(不同的fastcgi server)。
2008年10月17日星期五
Quick start for django & apache on windows
1. 安装python2.5.2
python 请使用2.5.2版本,如使用2.6或以上,你会发现在安装mod_python和MySQLdb时需要找2.5版本,可能这几个还未跟上python的发布步伐,少一些烦恼下载安装2.5.2版本 python-2.5.2.msi http://www.python.org/download/releases/2.5.2/
点击安装,安装目录默认为c:/python25
配置环境变量,使得在任何目录运行python都会输出:
python 2.5.2 (r252:60911 .....等等信息
2. 安装django 1.0
http://www.djangoproject.com/download/
文件为Django-1.0.tar.gz
用rar或zip解压到当前目录,在解压的目录下找到setup.py,在cmd下运行:
解压目录>setup.py install
其实被安装在C:\Python25\Lib\site-packages下。
3. 安装apache
这个就不用说了,我的是2.2版本,不要低于这个版本。
4. mod_python
下载地址 http://www.modpython.org/
mod_python-3.3.1.win32-py2.5-Apache2.2.exe
点击安装,不费神。选择apache安装目录,完事后,mod_python.so已在apache的modules下。
介绍性的说明请参看:http://man.chinaunix.net/develop/python/mod_python/mod_python.html
5. MySQLdb
可选,在此没有用到,我想还是最好要装一下,文件是:
MySQL-python-1.2.2.win32-py2.5.exe
自己google一下下载即可。双击安装即可。
7. 创建一个django工程
如在D:\software\django\sites下创建mysite工程,cmd到该目录下
cmd>python C:\Python25\Lib\site-packages\django\bin\django-admin.py startproject mysite
注意自己的目录设置。
8. 配置apache
httpd.conf修改
添加一条:
LoadModule python_module modules/mod_python.so
在最后添加内容(google保存xml内容有点问题,我只能描述了):
标记Location "/mysite/"
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonPath "['D:/software/django/sites'] + sys.path"
PythonDebug On
Location标记结束
注意自己的目录设置。
9. 开发
在工程mysite下创建一个py文件为first.py,写入内容如下(return 前面有tab缩进,google不厚道剪裁掉了):
from django.http import HttpResponse
def index(request):
return HttpResponse('first django return info.')
修改该目录下文件urls.py,在patterns里添加一行:
urlpatterns = patterns('',
(r'^mysite/$', 'mysite.first.index'),
)
10. 测试
启动apache
http://localhost/mysite/
python 请使用2.5.2版本,如使用2.6或以上,你会发现在安装mod_python和MySQLdb时需要找2.5版本,可能这几个还未跟上python的发布步伐,少一些烦恼下载安装2.5.2版本 python-2.5.2.msi http://www.python.org/download/releases/2.5.2/
点击安装,安装目录默认为c:/python25
配置环境变量,使得在任何目录运行python都会输出:
python 2.5.2 (r252:60911 .....等等信息
2. 安装django 1.0
http://www.djangoproject.com/download/
文件为Django-1.0.tar.gz
用rar或zip解压到当前目录,在解压的目录下找到setup.py,在cmd下运行:
解压目录>setup.py install
其实被安装在C:\Python25\Lib\site-packages下。
3. 安装apache
这个就不用说了,我的是2.2版本,不要低于这个版本。
4. mod_python
下载地址 http://www.modpython.org/
mod_python-3.3.1.win32-py2.5-Apache2.2.exe
点击安装,不费神。选择apache安装目录,完事后,mod_python.so已在apache的modules下。
介绍性的说明请参看:http://man.chinaunix.net/develop/python/mod_python/mod_python.html
5. MySQLdb
可选,在此没有用到,我想还是最好要装一下,文件是:
MySQL-python-1.2.2.win32-py2.5.exe
自己google一下下载即可。双击安装即可。
7. 创建一个django工程
如在D:\software\django\sites下创建mysite工程,cmd到该目录下
cmd>python C:\Python25\Lib\site-packages\django\bin\django-admin.py startproject mysite
注意自己的目录设置。
8. 配置apache
httpd.conf修改
添加一条:
LoadModule python_module modules/mod_python.so
在最后添加内容(google保存xml内容有点问题,我只能描述了):
标记Location "/mysite/"
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonPath "['D:/software/django/sites'] + sys.path"
PythonDebug On
注意自己的目录设置。
9. 开发
在工程mysite下创建一个py文件为first.py,写入内容如下(return 前面有tab缩进,google不厚道剪裁掉了):
from django.http import HttpResponse
def index(request):
return HttpResponse('first django return info.')
修改该目录下文件urls.py,在patterns里添加一行:
urlpatterns = patterns('',
(r'^mysite/$', 'mysite.first.index'),
)
10. 测试
启动apache
http://localhost/mysite/
订阅:
博文 (Atom)