您的位置:首页 > 运维架构 > Apache

CentOS+Apache2+Python+MySQLdb

2016-12-07 11:08 204 查看
最近接了一个网站外包,为一个公司开发主业站点。正好最近也想学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的架构也有了更为清晰的理解,它们每一部分都是可以直接拆开来用的,经常把它们放在一起是因为这样的组合威力最大,所以架构并没有固定的模式,只有普遍的需求。我们在选择某一项技术框架时应该要具体情况具体分析,并且对于每一个单独的部分都十分了解,这样才能在开发过程中游刃有余。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: