1. 安装apache
- wget http://www.apache.org/dist//httpd/httpd-2.2.17.tar.gz # 下载安装包
- tar jxvf httpd-2.2.14.tar.bz2 #解包
- cd httpd-2.2.14 #进来准备编译安装apache
- mkdir /usr/local/apache2 #这个目录用来安装apache
- /configure --prefix=/usr/local/support/apache2 --enable-so --enable-dav --enable-dav-fs -enable-maintainer-mode #编译
- make ; make install;
- id apache # 检查是否存在apache账户
- useradd apache # 建立apache 账户
- chown -R apache.apache /usr/local/support/apache2 # 让apache用apache这个账户权限运行
- vi /usr/local/support/apache2/conf/httpd.conf
- 修改User和Group均为apache
2. 安装mysql
- wget http://download.mysql.cn/download_file/gz/5.0/mysql-5.0.22.tar.gz
- tar xfz mysql-5.0.22.tar.gz # 解压mysql 包
- cd mysql-5.0.22 # 进入mysql
- mkdir /usr/local/support/mysql # 建立mysql目录
- ./configure --prefix=/usr/local/support/mysql/
- # 这个参数可以尝试 --enable-thread-safe-client
- # 编译mysql 增加这个参数是为了Msqldb编译的时候可以找到-lmysqlclient_r
- make;make install # 安装mysql
- id mysql # 检查mysql账户是否存在
- useradd mysql
- /usr/local/support/mysql/bin/mysql_install_db --user=mysql #以用户mysql身份创建默认库
- /usr/local/support/mysql/bin/mysqld_safe & # 启动mysql
- /usr/local/support/mysql/bin/mysql -u root password jishubu #给mysql加个密码挡一下菜鸟黑客
3. Python 安装
- wget 地址自己查一下,Python-2.5.2.tgz 这个版本
- ./configure ----prefix=/usr/local/support/python # 编译
- make; make install; # 安装
4. 安装Mysqldb
- wget http://cdnetworks-kr-2.dl.sourceforge.net/project/mysql-python/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz
如果你是像前面说的,编译安装的MySQL,对于MySQLdb的安装,用vi打开MySQLdb目录中的site.cfg文件,找到“mysql_config=”,修改后面的路径到你机器中mysql_config文件的路径。
- mysql_config = /usr/local/support/mysql/bin/mysql_config # 在site.cfg 里增加这一行
一般来说这样就可以编译了。但是,如果在编译到最后时,报告链接不上libmysqlclient_r.so的话,还需要把threadsafe设置为False。
- ln -s /usr/local/support/python/bin/python2.5 /usr/bin/ #尝试使用setuptools 安装
- wget http://pypi.python.org/packages/2.5/s/setuptools/setuptools-0.6c11-py2.5.egg#md5=64c94f3bf7a72a13ec83e0b24f2749b2 # 下载支持2.5 版本的setuptools
- sh setuptools-0.6c11-py2.5.egg # 安装
- PATH=$PATH:/usr/local/support/mysql/bin/ #增加mysql_config 到系统路径
- echo "/usr/local/support/mysql/lib/mysql/" >> /etc/ld.so.conf #增加折行到/etc/ld.so.conf 配置文件
- ldconfig # 生效
- python2.5 setup.py build;python2.5 setup.py install # 尝试python2.5 编译安装
- 测试:
- # python
- >>> import MySQLdb
- >>>
- 如果没有任何输出,恭喜,安装成功!
5. 安装mod_python
- wget http://archive.apache.org/dist/httpd/modpython/mod_python-3.3.1.tgz # 下载
- ./configure --with-apxs=/usr/local/support/apache2/bin/apxs # 编译方法1
- ./configure --with-apxs=/usr/local/support/apache2/bin/apxs --with-python=/usr/local/support/python/bin/python --with-max-locks=32 --with-python-src=/root/soft/Python-2.5.2/ --with-flex=/usr/bin/flex #编译方法2
- make #
- 报错解决
- 编译mod_python不通过,
- 报错:connobject.c:142: error: request for member `next' in something not a structure or union
- 解决:
- 1、打开源码,找到:connobject.c的142行
- 2、把!(b == APR_BRIGADE_SENTINEL(b) || 改为!(b == APR_BRIGADE_SENTINEL(bb) ||
- 3、再次make clean; make ,解决。
- make install # 安装完成
- 测试:
- # python
- >>> import mod_python
- >>>
- 为Apache的http.conf 添加一行:
- LoadModule python_module modules/mod_python.so
6. 安装Django
- wget http://www.djangoproject.com/download/1.2.5/tarball/
- tar xfz Django-1.2.5.tar.gz
- cd Django-1.2.5
- python2.5 setup.py install # 安装
- # python2.5
- >>> import django
- >>>
7.测试: Source.self@gmail.com
- 下面全部在命令行中执行:
- # mkdir /htdocs
- # cd /htdocs
- # /usr/local/support/python/bin/django-admin.py startproject myproject
- # cd myproject
- # python manager.py runserver 0.0.0.0:8000
- 好了,现在访问 http://服务器IP:8000,看到“It works”了吧 ^_^
- 正常后,Ctrl + C退出来,刚才那个是Django自带的测试服务器,下面在Apache上开通虚拟主机啦。
8. 配置apache
- 54 LoadModule python_module modules/mod_python.so
- 55
- 56 <Directory "/htdocs">
- 57 AddHandler mod_python .py
- 58 PythonHandler django.core.handlers.modpython
- 59 SetEnv DJANGO_SETTINGS_MODULE myproject.settings
- 60 PythonDebug On
- 61 </Directory>
- 62 Alias /medias /htdocs/mddias
- 63 <Location "/medias/">
- 64 SetHandler None
- 65 </Location>
- 66
- 67 Alias /media /usr/local/support/python/lib/python2.5/site-packages/django/contrib/admin/media/
- 68 <Location "/media/">
- 69 SetHandler None
- 70 </Location>
- 71
- 72 <LocationMatch "(?i)/.(jpg|gif|png|txt|ico|pdf|css|jpeg)$">
- 73 SetHandler None
- 74 </LocationMatch>