最近要在aws上搭建一个小站,需要的环境是python环境,主要是面对的海外用户,在aws选的是新加坡节点,因为之前是写过一段时间的php程序,对lamp部署环境还是比较熟悉的,部署前先学习了下,有了个大概了解,就开始上手部署了,首先下载所用的安装包:
1、httpd-2.2.31.tar.bz2
2、mod_python-3.3.1.tgz
第一个包是apache源码包,第一个是mod_python模块,用来支持解析python 程序的,这里要说一下,apache不管是跟php或者python,其实原理是基本一样的,php是需要安装php源码包,安装完后用来解析php程序,python也是一样,apache需要加载一个模块来支持python解析。
正式开始安装:
1 2 3 |
下载源码包: #wget ftp://mirrors.sohu.com/apache/httpd-2.2.31.tar.bz2 #wget http://archive.apache.org/dist/httpd/modpython/mod_python-3.3.1.tgz |
首先安装apache
1 2 3 4 5 |
#tar -jxvf httpd-2.2.31.tar.bz2 #cd httpd-2.2.31 #./configure --prefix=/usr/local/apache2 --enable-cgi --enable-modules=all --enable-mods-shared=all --enable-cache --enable-mem-cachec --enable-headers --enable-ssl --enable-http --enable-rewrite --enable-so #make #make install |
安装mod_python
1 2 3 4 5 |
#tar -zxvf mod_python-3.3.1.tgz #cd mod_python-3.3.1 #./configure --with-apxs=/usr/local/apache2/bin/apxs --with-python=/usr/bin/python #make #make install |
在安装mod_python时报错,
1 |
make[1]: *** [mod_python.so] Error 1 |
最终从度娘那里找到了解决方案,真是感谢呀,呵呵,解决如下:
1 2 3 4 5 |
解决方法: 编辑 /root/soft/mod_python-3.3.1/src/connobject.c 的 142 行: !(b == APR_BRIGADE_SENTINEL(b) 改成: !(b == APR_BRIGADE_SENTINEL(bb) 即:改成两个b |
到这里都安装完了,开始编辑 httpd.conf加入mod_python模块支持:
1 2 3 4 5 6 |
在加载模块段加入 LoadModule python_module libexec/mod_python.so 在网站主目录加入<Directory "/usr/loacl/apache2/htdocs"> AddHandler mod_python .py PythonHandler index PythonDebug On |
开始启动apache
1 2 |
#/usr/loacl/apache2/bin/apachectl start httpd: Syntax error on line 118 of /home/dantezhu/apache/conf/httpd.conf: Cannot load /home/dantezhu/apache/libexec/mod_python.so into server: /home/dantezhu/apache/libexec/mod_python.so: cannot open shared object file: No such file or directory |
又是报错,真是多灾多难呀,根据报错提示是说libexec下没有这个mod_python.so模块,我ls 看了下,别说模块,我连这个鸟目录都没发现,不知道不是我版本问题,不管那么多了,新建目录,然后拷贝mod_python.so到这个目录下:
1 2 |
#mkdir libexec #cp modules/mod_python.so libexec/ |
然后再启动apache ,就OK了,看下进程都已经启动了,登录测试页,一切显示正常,大功告成,今天就学习到这里,睡觉了。