最近接了一个网站外包,为一个公司开发主业站点。正好最近也想学python,所以上网找了一下介绍LAMP架构的资料。经过一个上午的奋战,网站终于落成。只是疑点颇多,各种文章如管中窥豹,最终还是得借助官方文档。为了让自己以后方便回看,也希望能够帮到网友朋友们,所以把这次架站成功的经历胡乱记下来。
1.首先安装apache
要安装apache需要先安装apr和apr-util。笔者原本想装apache4.x的版本,但是由于4.x的版本需要1.4的apr,而在阿里云的镜像源里只有apr1.3x的版本,所以笔者最后用了2.x的版本。
安装apr:
sudo yum install apr
安装apr-devel:
sudo yum install apr-devel
安装apr-util:
sudo yum install apr-util
安装apr-util-devel:
sudo yum install apr-util-devel
apache可以使用yum或者rpm直接安装,但是此处笔者采用了源码安装方式。首先去官网下载apache的源码httpd-2.2.9.tar。然后解压到主目录,并进入apache目录:
tar xfv httpd-2.2.9.tar.gz
cd httpd-2.2.9
执行configure命令:
./configure --prefix=/home/yulin/apache2(注:prefix指定安装目录)
make
make install
安装完成之后修改一下conf/http.conf文件,主要是把服务器的根目录改成你想要指定的。笔者在修改配置的时候曾经导致403禁止访问,在网上找了一大堆资料都没有解决,最后去看了apache的官方手册,得知了各个配置段的含义才解决这个问题,这里也提醒一下大家,网上的资料可以做参考,但是由于情况不一,所以方法可能不能照搬,此时还是安安静静地去看官方文档为宜。下面是笔者修改之后的配置文件内容:
ServerRoot "/home/yulin/apache2"
Timeout 60
User yulin
Group yulin
Listen 80
ServerAdmin you@example.com
ServerName localhost
DocumentRoot "/home/yulin/my_python"
<Directory "/home/yulin/my_python">
Options Indexes FollowSymLinks
AllowOverride None
Allow from All
AddHandler mod_python .py
PythonHandler index
PythonDebug On
</Directory>
LoadModule python_module modules/mod_python.so
2.安装python以及setuptools
先安装zlib:
yum install zlib
yum install zlib-devel
安装python的命令十分简单,直接使用yum即可:
yum install python
也可采用源码安装方式(笔者正是采用这种),笔者安装的是2.7.12版本的python,即在python源码目录下执行configure && make && make install
(注:笔者第一次安装完成之后发现静态库无法打开,查阅资料之后得知要在configure命令执行时加选项enable-shared;此后再一次安装后发现有一些.o文件无法使用,查阅资料后得知python源码中本来有若干个.o文件,所以编译的时候不会再次进行编译,而后使用.o文件的时候会发现在静态库缓存中没有未经过编译的.o文件。所以笔者的方法是删除所有源码中的.o文件,重新编译安装)
安装setuptools有多种方式,这里笔者采用setuptools-0.6c11-py2.7.egg文件安装,首先下载此文件(版本号自定):
wget http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg
然后执行:
sh ./setuptools-0.6c11-py2.7.egg
ldconfig
(注:安装setuptools是因为后续安装mod_python以及MySQLdb需要用到此工具)
3.安装mod_python,让apache支持python
首先下载mod_python的源码mod_python-3.3.0b.tgz,然后解压并进入源码根目录:
tar xfz mod_python-3.3.0b.tgz
cd mod_python-3.3.0b
执行配置、编译、安装命令:
./configure --with-apxs=/home/yulin/apache2/bin/apxs --with-python=/usr/local/python/bin/python
make
注:此时可能会出现报错:
apxs:Error: Command failed with rc=65536.
make[1]: *** [mod_python.so] Error 1
make[1]: Leaving directory
`/root/soft/mod_python-3.3.1/src'
make: *** [do_dso] Error 2
解决方法是:编辑 /root/soft/mod_python-3.3.1/src/connobject.c (即包解压目录的src下的connobject.c文件)的 142 行:
!(b == APR_BRIGADE_SENTINEL(b)
改成:
!(b == APR_BRIGADE_SENTINEL(bb) 即:改成两个b
然后重新编译。
make install
安装完毕之后会在/home/yulin/apache2/modules目录下生成mod_python.so文件。
在apache的conf/http.conf文件中加入:
LoadModule python_module modules/mod_python.so
让apache加载python模块。
4.安装MySQLdb
首先安装MySQL:
yum install mysql-server mysql-client
然后安装mysql开发环境:
yum install mysql-devel
下载MySQLdb源码MySQL-python-1.2.5.zip,解压并进入源码根目录:
unzip MySQL-python-1.2.5.zip
cd MySQL-python-1.2.5
修改site.cfg文件,找到mysql_config项,修改为:
mysql_config = /usr/bin/mysql_config(具体路径看mysql_config在哪里)
然后执行:
python setup.py build
sudo python setup.py install
至此,MySQLdb安装完毕(注:python2都是用MySQLdb操作MySQL数据库,但是python3使用pymysql)
到这里所有的安装工作已经完成,剩下的就是开发了。在安装过程中出现了很多问题,笔者通过解决这些问题也学到了很多东西,尤其是对于apache配置文件的解读。另外对于LAMP的架构也有了更为清晰的理解,它们每一部分都是可以直接拆开来用的,经常把它们放在一起是因为这样的组合威力最大,所以架构并没有固定的模式,只有普遍的需求。我们在选择某一项技术框架时应该要具体情况具体分析,并且对于每一个单独的部分都十分了解,这样才能在开发过程中游刃有余。