LAMP环境的源码包搭建

实验环境:

CentOS6.4 32位系统

VMware workstation 10

利用php平台搭建的一些网站和论坛是非常出色的,网站的性能出色与他后台的数据库关系密切,而工作原理大致都是先同过web服务器来调用或加载有关的模块工能来实现的,从安装顺序及服务的调用上来看,我们应该先安装MySQL后安装Apache。最后才是模块的加载


首先我们挂载光驱,并且安装有关的开发环境软件包

预编译环境的搭建,在开始源码包安装之前一定要确认我们的预编译环境是否完善,如图安装如下的软件包

LAMP环境的源码包搭建_啥玩意




数据库的源码安装:


 准备要安装的软件包并将数据库源码包解压缩到/usr/local目录下


LAMP环境的源码包搭建_啥玩意_02


LAMP环境的源码包搭建_啥玩意_03


LAMP环境的源码包搭建_啥玩意_04

因为我们要用到cmake命令,但是大部分时候我们都没装这个名令,所以我们要先装一下这个命令:


LAMP环境的源码包搭建_啥玩意_05

然后重新执行该命令

LAMP环境的源码包搭建_啥玩意_06


在cmake 完成之后,你会发现又出错的信息,具体信息如图所示,

报错的提示信息是要我们去安装一个库,因为这个库的缺失才造成刚才的报错

意为告诉我们进行一个库的安装


LAMP环境的源码包搭建_啥玩意_07


删除缓存文件,安装相应的软件包


LAMP环境的源码包搭建_啥玩意_08

完成之后在返回执行cmake,(这就是编译,只要出错就要想办法解决,并重新执行)


LAMP环境的源码包搭建_啥玩意_09



然后执行make 命令(你也可以一块执行)


LAMP环境的源码包搭建_啥玩意_10

LAMP环境的源码包搭建_啥玩意_11

数据库的安装与其他软件有不同的地方,因为在系统安装的时候本身有一套完善的控制及路径,所以


一些文件需要用新数据库的support-file文件去,所以

接下来就是文件的覆盖及路径选择了,对于MySQL来说这是很重要的,如图信息是在告诉我们,已经有了一个MySQL的有关文件存在,在使用时默认使用的配置文件可能是它,所以要么删除,要么覆盖


LAMP环境的源码包搭建_啥玩意_12

进行覆盖操作



LAMP环境的源码包搭建_啥玩意_13

然后执行以下命令,把权限改为如下内容:

LAMP环境的源码包搭建_啥玩意_14

并且要用我们支持文件下的有关文件(覆盖)去修改MySQL的脚本控制,并给予可执行权限


[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld

[root@localhost mysql]# chmod a+x /etc/init.d/mysqld


然后启动MySQL数据库看是否正常


[root@localhost mysql]# service mysqld start

Starting MySQL......... SUCCESS!

[root@localhost mysql]# netstat -tupln |grep 3306

tcp        0      0 :::3306                     :::*                        LISTEN      29649/mysqld        


然后将它们加入到开机启动项中

[root@localhost mysql]# chkconfig --add mysqld

[root@localhost mysql]# chkconfig mysqld on

然后修改系统的环境变量PATH并重新读取该文件


[root@localhost mysql]# vim /etc/profile

LAMP环境的源码包搭建_啥玩意_15

(这是一张出错的图,这个一时手急的错误折腾了我好长时间,特意留下这张图提醒自己吧。。。注意,此处的正确改法应为PATH=$PATH:/usr/local/mysql/bin)

[root@localhost mysql]# . /etc/profile



安装Apache的可移植工具:apr


[root@localhost ~]# tar -zxvf apr-1.4.6.tar.gz -C /usr/local/src

[root@localhost ~]# cd /usr/local/src/

[root@localhost src]# cd ./apr-1.4.6/

[root@localhost apr-1.4.6]# ./configure --prefix=/usr/local/apr

(编译配置的详细步骤及解释可参阅Apache的源码安装全过程

[root@localhost apr-1.4.6]# make && make install


然后安装apr的一个支持工具 apr-util-1.5.1.tar.gz


[root@localhost ~]tar -zxvf apr-util-1.5.1.tar.gz -C /usr/local/src

[root@localhost apr-1.4.6]# cd ..

[root@localhost src]# cd ./apr-util-1.5.1/

[root@localhost apr-util-1.5.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/bin/apr-1-config


[root@localhost ~]# cd /usr/local/src/apr-util-1.5.1/

[root@localhost apr-util-1.5.1]# make && make install


安装httpd服务器

[root@localhost ~]tar -jxvf httpd-2.4.4.tar.bz2 -C /usr/local/src

[root@localhost httpd-2.4.4]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so  --enable-rewrite --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --with-pcre --with-z --enable-mpms-shared=all

在这里可以体现源码包安装的一个好处就是可以指定具体的路径,工具,要加载的模块,要实现及支持的功能都可以在这实现,具体的命令介绍大家可以用./configure --help 来查看


你会在这发现一个报错的地方,我们要按要求进行解决

checking for pcre-config... false

configure: error: pcreconfig for libpcre not found. PCRE is required and available from http://pcre.org/

[root@localhost httpd-2.4.4]#

在查证会看到已经安装该包

[root@localhost httpd-2.4.4]# mount /dev/cdrom /media/cdrom

mount: block device /dev/sr0 is write-protected, mounting read-only

[root@localhost httpd-2.4.4]# rpm -qa |grep pcre

pcre-7.8-6.el6.i686

很可能是有关的devel包没装,把它装上去

[root@localhost httpd-2.4.4]# yum --disablerepo=\* --enablerepo=c6-media install pcre-devel


Complete!

[root@localhost httpd-2.4.4]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-rewrite --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --with-pcre --with-z --enable-mpms-shared=all



configure: WARNING: OpenSSL version is too old

no

checking whether to enable mod_ssl... configure: error: mod_ssl has been requested but can not be built due to prerequisite failures

[root@localhost httpd-2.4.4]# yum --disablerepo=\* --enablerepo=c6-media install mod_ssl




LAMP环境的源码包搭建_啥玩意_16

Installed:

 mod_ssl.i686 1:2.2.15-26.el6.centos                                                  


Complete!

[root@localhost httpd-2.4.4]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-rewrite --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --with-pcre --with-z --enable-mpms-shared=all


可以看到没有提到依赖安装httpd ,我们可以安装完成,然后接着./configure

[root@localhost httpd-2.4.4]# rpm -qa |grep mod_ssl

mod_ssl-2.2.15-26.el6.centos.i686


[root@localhost httpd-2.4.4]# yum --disablerepo=\* --enablerepo=c6-media list all |grep mod_ssl

mod_ssl.i686                               1:2.2.15-26.el6.centos      @c6-media

[root@localhost httpd-2.4.4]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so  --enable-rewrite --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --with-pcre --with-z --enable-mpms-shared=all


继续提示安装的话就把--enable=ssl 取消掉,这个对该实验不会有影响


完成后继续执行make makeinstall


config.status: creating build/pkg/pkginfo

config.status: creating build/config_vars.sh

config.status: creating include/ap_config_auto.h

config.status: executing default commands

[root@localhost httpd-2.4.4]# make && make install


在我们指定的有关目录下应该会看到/usr/local下会有个Apache的目录,在/etc/httpd/下应该有配置文件的产生,包括  conf.d 和  extra开头的扩展的配置文件

LAMP环境的源码包搭建_啥玩意_17

改下下配置文件中的servername选项,不然会在启动时有一个小的“报错”

LAMP环境的源码包搭建_啥玩意_18


然后去启动这个服务试试,注意,如果这是你的系统上一不小心安装的有Apache服务器,那就得想办法去卸载它了,如果你不确定你是用什么工具装的(rpm . yum)就只能两个都试一下了,小编在此错了好长时间,主要是锁文件,脚本文件,和加入开机启动项的缘故,有时间小编再把它写出来分享吧


[root@localhost conf]# cd /usr/local/apache/bin

[root@localhost bin]# ls

ab         checkgid   envvars-std   htdbm     httpd       rotatelogs

apachectl  dbmmanage  fcgistarter   htdigest  httxt2dbm

apxs       envvars    htcacheclean  htpasswd  logresolve

[root@localhost bin]# httpd -k start

httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName

httpd (pid 17080) already running

[root@localhost bin]# netstat -tupln |grep 80

tcp        0      0 :::80                       :::*                        LISTEN      17080/httpd        

tcp        0      0 :::443                      :::*                        LISTEN      17080/httpd        



事实上我们在做完这些之后要进行脚本的编写,和头文件库文件以及man手册的链接,并加入chkconfig的管理(参见本文链接文件)


(注意,在修改/etc/profile 文件下的命令路径(改了但是无效(路径先后的缘故)),如果修改无效,之后要想启动源码安装的Apache的服务要在httpd脚本前加全路径./usr/local/apachme/bin(本例))


[root@localhost bin]# pkill httpd

[root@localhost bin]# /usr/local/apache/bin/httpd -k start

[root@localhost bin]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/root/bin:/usr/local/mysql/bin:/usr/local/apache/bin

以上为无效的修改,注意,是因为添加的路径在最后,而系统在执行时有先后顺序


安装php-5.5.8

用tar命令将包解压缩到目录中


-rw-r--r--. 1 root root 32794954 Jan 20 19:09 mysql-5.6.15.tar.gz

-rw-r--r--. 1 root root 13005675 Jan 21 00:22 php-5.5.8.tar.bz2

[root@localhost ~]# tar -jxvf php-5.5.8.tar.bz2 -C /usr/local/src

然后接下还是编译配置


--with-apxs2=FILE  该参数指明了要将php建立成Apache2的一个共享模块文件

在php和web(Apache)的结合中主要有两种方式,一是靠Apache模块,一种靠fastcgi这种将Apache看作独立服务器的一种方法,参数为 --enable-fpm



[root@localhost local]# cd /usr/local/src/php-5.5.8/

[root@localhost php-5.5.8]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring=all



checking for xml2-config path...

configure: error: xml2-config not found. Please check your libxml2 installation

出错了,继续解决吧


[root@localhost php-5.5.8]# rpm -qa |grep libxml2

libxml2-python-2.7.6-8.el6_3.4.i686

libxml2-2.7.6-8.el6_3.4.i686

[root@localhost php-5.5.8]# mount

[root@localhost php-5.5.8]# yum --disablerepo=\* --enablerepo=c6-media install libxml2-devel


安装完成我们继续编译


Installed:

 libxml2-devel.i686 0:2.7.6-8.el6_3.4                                                


Dependency Installed:

 zlib-devel.i686 0:1.2.3-29.el6                                                      


Complete!

[root@localhost php-5.5.8]# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring=all


为了便于看到平台的搭建结果我们有必要编写一下httpd的脚本文件,内容如下


#!/bin/bash

prog=/usr/local/apache/bin/httpd

lockfile=/var/lock/subsys/httpd


# chkconfig: 2345 88 44  这的#不是注释

# description: the httpd server

start () {

       if [ -e $lockfile ]; then

       echo "the httpd is started"

       else

       echo "the httpd is starting..."

       sleep 1

       $prog -k start &>/dev/null  && echo "ok" && touch $lockfile || echo "fail"

       fi

}

stop () {

       if [ ! -e $lockfile ] ; then

       echo "the httpd is stoped"

        else

       echo "the httpd is stoping...."

       sleep 1

       $prog -k stop &>/dev/null && echo "ok" && rm -rf $lockfile || echo "file"

       fi

}

status () {

         if [ -e $lockfile ]; then

         echo "the http is runing....."

         else

         echo "the httpd is stop"

         fi

}

case "$1" in

start)

      start

       ;;

stop)

    stop

     ;;

restart)

      stop

      start

       ;;

*)

    echo "usage {start|stop|restart}"

esac


启动服务查看端口及锁文件的存在


[root@localhost htdocs]# service httpd restart

the httpd is stoping....

ok

the httpd is starting...

ok


[root@localhost htdocs]ll /var/lock/subsys/http*

-rw-r--r--. 1 root root 0 Jan 21 22:08 /var/lock/subsys/httpd


[root@localhost init.d]# chkconfig --list |grep httpd

httpd          0:off1:off2:off3:off4:off5:off6:off

[root@localhost init.d]# ll /etc/rc.d/rc3.d/ |grep http

lrwxrwxrwx. 1 root root 15 Jan 21 01:49 K15httpd -> ../init.d/httpd 我们的脚本放置处


可以查看有没有下图中的那个模块,这个关于php的共享库文件是Apache上实现加载php功能用的,

[root@localhost http]# cd /usr/local/apache/modules/

[root@localhost modules]# ll |grep php*

-rwxr-xr-x. 1 root root 23326394 Jan 21 21:59 libphp5.so

然后编写一个小的php页面文件测试一下


[root@localhost htdocs]# vim index.php

[root@localhost htdocs]# ll

total 8

-rw-r--r--. 1 root root 45 Jun 11  2007 index.html

-rw-r--r--. 1 root root 24 Jan 21 23:42 index.php

注意这时我们的web目录下有两个页面文件,而系统默认的.html结尾的是页面文件,所以在开始时会把.php的认为是一个目录,需要我们手动去点进去,如图:

LAMP环境的源码包搭建_啥玩意_19



解决办法是先删除一个文件,然后留下php的文件,并把Apache中的读取.php的配置文件项改写为.php,如图:

[root@localhost htdocs]# rm index.html

rm: remove regular file `index.html'? y


LAMP环境的源码包搭建_啥玩意_20

页面内容如下


<? php

phpinfo() ;


?>


然后测试:

LAMP环境的源码包搭建_啥玩意_21



前面我们说过在处理php请求时会调用上面的这一个模块进行phpd的页面处理,当然我们还要另外加一道指令让他完成基于php的请求,如下图所示(一定要注意空格,这都错了两次)


LAMP环境的源码包搭建_啥玩意_22


我们可以用浏览器测试一下和数据库之间的联通性,是否正常,(php)页面内容如图所示


LAMP环境的源码包搭建_啥玩意_23


然后在浏览器中测试,注意浏览器缓存的影响,记得清一下缓存

LAMP环境的源码包搭建_啥玩意_24


关闭MySQL数据库后结果,正常;

LAMP环境的源码包搭建_啥玩意_25




最后我们具体用wordpress来测试一下我们的平台工作是否正常

如下解压并复制到有关目录:


-rw-r--r--. 1 root root 13005675 Jan 21 00:22 php-5.5.8.tar.bz2

-rw-r--r--. 1 root root  6806135 Jan 22 00:07 wordpress-3.8-zh_CN.zip

[root@localhost ~]# unzip wordpress-3.8-zh_CN.zip

[root@localhost ~]# mv  wordpress-3.8-zh_CN.zip  /usr/local/apache/htdocs/



按照安装文件的有关内容完成安装后可以看到论坛建立完成后有关页面及效果(具体安装步骤请参阅lamp平台下安装wordpress及phpadmin全过程)



论坛后台页面:

LAMP环境的源码包搭建_啥玩意_26


论坛的前台浏览器效果页面(无主题环境下)


LAMP环境的源码包搭建_啥玩意_27