源码安装搭建LAMP环境---实现更新版本的服务
有的时候我们会想用最新版本:最新版本总体来说会比以前的性能要优越一些,并且能够按照我们的意愿来自定义参数。
我们选择的跟新版本:httpd 2.4 、mysql-5.6、php-5.4
首先我们也知道,拆包:
源码包一般都会有这些内容:
Development Libraries
Development Tools
X Software Development
Legacy Software Development
1:、拆包: 那么搭建LAMP环境有没有先后顺序呐?
当然,首先是安装Apache、再安装mysql,这两个安装好以后,才能安装php。
搭建yum服务器: 这个前面已经谈到过yum服务的安装以及用处。
先把我们下载的安装包拷贝到虚拟机固定目录下:
Apache的源码安装包及附属文件包:
Mysql的源码安装包:mysql-5.6.10.tar
再次是php的源码安装包:php-5.4.13.tar.bz2
先来看一下我们拷贝到linux内的软件包的用处:
接下来拆包:这个安装包有先后顺序:
先安装apache源码包:先解压那两个可移植运行库:
[root@Blue ~]# tar -zxvf apr-1.4.6.tar.gz -C /usr/local/src
[root@Blue ~]# tar -zxvf apr-util-1.5.1.tar.gz -C /usr/local/src
[root@Blue ~]# cd /usr/local/src/apr-1.4.6/
[root@Blue apr-1.4.6]# ll
同样有配置文件和说明文件README
先打开README文件查看说明,可能用example:
[root@Blue apr-1.4.6]# less README
那我们按照example案例做就可以了哦:
[root@Blue apr-1.4.6]# ./configure --help |less #查看.configure 命令的用法#
[root@Blue apr-1.4.6]# ./configure --prefix=/usr/local/apr #安装到指定目录,方便查找卸载#
[root@Blue apr-1.4.6]# make && make install #执行make 安装#
查看安装后的目录:
[root@Blue apr-1.4.6]# cd /usr/local/apr/
[root@Blue apr]# ll #都是一些二进制的类文件、头文件#
total 32
drwxr-xr-x 2 root root 4096 Aug 30 15:21 bin
drwxr-xr-x 2 root root 4096 Aug 30 15:21 build-1
drwxr-xr-x 3 root root 4096 Aug 30 15:21 include
drwxr-xr-x 3 root root 4096 Aug 30 15:21 lib
我们可以查看各个文件的详细目录,lib目录下是一些库文件。
我们在系统的库文件下新建我们的apr.conf的配置文件:(导入我们解压后的可移植运行库lib目录)
[root@Blue apr]# vim /etc/ld.so.conf.d/apr.conf
1 /usr/local/apr/lib#我们所导入的库文件目录#
[root@Blue apr]# ll /etc/ld.so.cache #想要看库文件是否导入,可以查看此文件大小变化#
-rw-r--r-- 1 root root 57177 Aug 29 09:15 /etc/ld.so.cache
[root@Blue apr]# ldconfig #执行刷新库文件缓存指令#
[root@Blue apr]# ll /etc/ld.so.cache
-rw-r--r-- 1 root root 57339 Aug 30 15:35 /etc/ld.so.cache #对比是不是变的比较大了些#
也可以执行这个指令进行查看是否加载了lib目录下的类文件。
[root@Blue apr]# ldconfig -pv |grep apr
libgstdataprotocol-0.10.so.0 (libc6) => /usr/lib/libgstdataprotocol-0.10.so.0
libaprutil-1.so.0 (libc6) => /usr/lib/libaprutil-1.so.0
libapr-1.so.0 (libc6) => /usr/local/apr/lib/libapr-1.so.0
libapr-1.so.0 (libc6) => /usr/lib/libapr-1.so.0
libapr-1.so (libc6) => /usr/local/apr/lib/libapr-1.so
安装的apr的头文件include 应该让系统能够自动加载:我们该放到哪里类?
我们系统能自动加载的头文件目录有:/usr/include /usr/local/include /
我们可以复制到此目录,也可以做链接:
[root@Blue apr]# ln -s /usr/local/apr/include /usr/include/apr #建立软连接#
再去安装apache工具:这个我们已经解压完成了:
[root@Blue ~]# cd /usr/local/src/apr-util-1.5.1/
查看目录详情:也会有配置目录和说明目录README.
然后按照example来完成安装:
我们可以这样来查看./configure 的指令用法,关于apr 的用法:
[root@Blue apr-util-1.5.1]# ./configure --help |less
[root@Blue apr-util-1.5.1]# ./configure --help |grep apr
--with-apr=PATH prefix for installed APR or the full path to
apr-config
--with-apr-iconv=DIR relative path to apr-iconv source
[root@Blue apr-util-1.5.1]# ./configure --prefix=/usr/local/apr-util
--with-apr=/usr/local/apr/bin/apr-1-config
[root@Blue apr-util-1.5.1]# make && make install #编译and安装#
查看形成的文件:
[root@Blue apr-util-1.5.1]# cd /usr/local/apr-util/
[root@Blue apr-util]# ls
bin include lib
可见和前面的一样把库文件和头文件导入系统。
[root@Blue apr-util]# ll bin
total 12
-rwxr-xr-x 1 root root 6453 Aug 30 16:05 apu-1-config那么我们想经常使用这个工具,那么这个工具所在路径又不在这个系统环境变量指定路径中:
[root@Blue apr-util]# vim /etc/ld.so.conf.d/apr-util.conf #导入类文件#
1 /usr/local/apr-util/lib
[root@Blue apr-util]# ldconfig #刷新缓存#
[root@Blue apr-util]# ldconfig -pv |grep apr-util #查看链接库#
libaprutil-1.so.0 (libc6) => /usr/local/apr-util/lib/libaprutil-1.so.0
libaprutil-1.so (libc6) => /usr/local/apr-util/lib/libaprutil-1.so
[root@Blue apr-util]# ln -s /usr/local/apr-util/include /usr/include/apr-util #建立基于目录的链接库#
现在我们再把apu-1-config 工具文件放到系统环境变量中,这样系统的任何人都可以使用该工具。
先来查看一些系统的变量:[root@Blue apr-util]# ll /etc/profile /etc/bashrc
然后查看一下只作用于个人的环境变量文件目录:
只需编辑系统中的加载环境变量的文件添加上我们这个工具的完整路径:
[root@Blue apr-util]# vim /etc/profile
那么编辑完成之后,在我们下一次登陆系统是就会生效了。
这时我们源码安装Apache的前续工作可移植工具就算搞定了。
开始安装源码:httpd 源代码。
[root@Blue ~]# tar -jxvf httpd-2.4.4.tar.bz2 -C /usr/local/src/
[root@Blue ~]# cd /usr/local/src/httpd-2.4.4/
[root@Blue httpd-2.4.4]# ls
看到也有同样的INSTALL安装说明文件:我们可以查看一下安装样例:
[root@Blue httpd-2.4.4]# less INSTALL
开始安装:我们可以先查看一下安装说明:./configure --help :这个选项比较多:
[root@Blue httpd-2.4.4]# ./configure \
> --prefix=/usr/local/apache \
> --sysconfdir=/etc/httpd \
> --enable-so \
> --enable-mods-shared=most \
> --enable-ssl \
> --enable-mpms-shared=all \
> --enable-rewrite \
> --with-apr=/usr/local/apr/bin/apr-1-config \
> --with-apr-util=/usr/local/apr-util/bin/apu-1-config \
> --with-z \
我们按下enter,会出现一个叫pcre 的文件出错误:这时我们开始用yum查找pcre的所有安装包,那一个么有安装:
[root@Blue httpd-2.4.4]# yum list all |grep pcre
This system is not registered with RHN.
RHN support will be disabled.
file:///mnt/cdrom/Server/repodata/repomd.xml: [Errno 5] OSError: [Errno 2] No such file or directory: '/mnt/cdrom/Server/repodata/repomd.xml'
Trying other mirror.
pcre.i386 6.6-2.el5_1.7 installed
pcre-devel.i386 6.6-2.el5_1.7 rhel-server
我们会发现那个包含共享库的pcre-devel.i386包没有安装:
[root@Blue httpd-2.4.4]# yum install pcre-devel
然后再来重新配置Apache源码包:后面加上我们刚安装的pcre的包配置信息:
[root@Blue httpd-2.4.4]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-mods-shared=most --enable-ssl --enable-mpms-shared=all --enable-rewrite --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --with-z --with-pcre
配置完后再来测试和安装:
[root@Blue httpd-2.4.4]# make && make install #时间会长点#
[root@Blue httpd-2.4.4]# cd /usr/local/apache/ #查看我们安装完成目录内容#
[root@Blue apache]# ll
total 96
drwxr-xr-x 2 root root 4096 Aug 22 22:07 bin
drwxr-xr-x 2 root root 4096 Aug 22 22:07 build
drwxr-xr-x 2 root root 4096 Aug 22 22:07 cgi-bin
drwxr-xr-x 3 root root 4096 Aug 22 22:07 error
drwxr-xr-x 2 root root 4096 Aug 22 21:12 htdocs #网站源文件目录#
drwxr-xr-x 3 root root 4096 Aug 22 22:07 icons
drwxr-xr-x 2 root root 4096 Aug 22 22:07 include #头文件#
drwxr-xr-x 2 root root 4096 Aug 22 22:07 logs #网站日志#
drwxr-xr-x 4 root root 4096 Aug 22 22:07 man #apache手册#
drwxr-xr-x 14 root root 12288 Feb 19 2013 manual
drwxr-xr-x 2 root root 4096 Aug 22 22:07 modules
[root@Blue apache]# ll /etc/httpd #可以查看到形成的目录包括配置文件#
先来把apache的bin目录输入到系统的环境变量中去:
[root@Blue apache]# vim /etc/profile
45 PATH=$PATH:/usr/local/apr-util/bin:usr/local/apr/bin:/usr/local/apache/bin #追加路径#
再对头文件建立软连接到系统头文件目录:
[root@Blue apache]# ln -s include /usr/include/apache
再把man文件加入到系统可识别的文件中:
[root@Blue apache]# vim /etc/man.config
[root@Blue apache]# man htpasswd #现在这个man都能找到用法说明#
[root@Blue apache]# cd /etc/init.d
在这里书写可执行脚本文件:
其他的都已经配置完成:
[root@Blue init.d]# touch httpd
[root@Blue init.d]# chmod a+x httpd
[root@Blue init.d]# vim httpd
写配置文件:
[root@Blue init.d]# vim httpd
#!/bin/bash
# chkconfig: 2345 85 98 #这两行命令是允许执行chkconfig on 命令 #
# description: OpenSSH server daemon #这是一个描述优先级、on、off 的端口#
lockfile=/var/lock/subsys/httpd
prog=/usr/local/apache/bin/httpd
configfile=/etc/httpd/httpd.conf
. /etc/init.d/functions
start(){
[ -f $lockfile ] && echo "httpd is started" && exit
echo -n "httpd is starting...."
sleep 1
$prog -f $configfile && echo "ok" && touch $lockfile || echo "fail"
}
stop(){
[ ! $lockfile ] && echo "httpd is stoped" && exit
echo -n "httpd is stoping...."
sleep 1
killproc httpd && echo "ok" && rm -rf $lockfile || echo "fail"
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "USAGE:stop|start|restart"
esac
Httpd的配置文件写好后保存测试下其正确性:
[root@Blue init.d]# service httpd start
[root@Blue init.d]# netstat -tupln | grep httpd
tcp 0 0 :::80 :::* LISTEN 3777/httpd
现在在客户机访问一下我们搭建好的apache站点网页:
[root@Blue init.d]# service httpd stop
可见可以完成服务功能的:
查看关于httpd服务的进程:
[root@Blue init.d]# ps aux |grep httpd
root 3917 0.0 0.2 4800 2380 ? Ss 23:00 0:00 /usr/local/apache/bin/httpd -f /etc/httpd/httpd.conf
daemon 3918 0.0 0.2 281436 2064 ? Sl 23:00 0:00 /usr/local/apache/bin/httpd -f /etc/httpd/httpd.conf
daemon 3920 0.0 0.2 281436 2068 ? Sl 23:00 0:00 /usr/local/apache/bin/httpd -f /etc/httpd/httpd.conf
daemon 3922 0.0 0.2 281436 2068 ? Sl 23:00 0:00 /usr/local/apache/bin/httpd -f /etc/httpd/httpd.conf
root 4015 0.0 0.0 1844 496 pts/2 R+ 23:05 0:00 grep httpd
黄色标记的为父进程:其他为子进程。
接下来我们查看我们的chkconfig 命令是否可被调用:
[root@Blue init.d]# chkconfig --add httpd
[root@Blue init.d]# chkconfig --list |grep httpd
httpd 0:off1:off2:on3:on4:on5:on6:off #优先级为234的东打开了#
接下来再来安装mysql源码。
首先下载mysql:官网:www.mysql.com
[root@Blue ~]# tar -zxvf mysql-5.6.10.tar.gz -C /usr/local/src/
[root@Blue src]# ln -s mysql-5.6.10 mysql
[root@Blue src]# cd mysql
[root@Blue mysql]# ls
查看INSTALL-SOURCE
[root@Blue mysql]# vim INSTALL-SOURCE
这个文件有点大:有时间慢慢研究:直接我们切入正题。
先来看一下二进制的安装方法说明:
[root@Blue mysql]# cd support-files/
[root@Blue support-files]# ls
这里都是支持该服务的配置文件:
接下来再来看一下源代码安装说明:
接下来是一些源码安装的具体步骤说明:
先来解压我们下载的cmake工具:
[root@Blue ~]#tar -zxvf cmake-2.8.10.2.tar.gz -C /usr/local/src/
[root@Blue cmake-2.8.10.2]# ls
CMakeCPackNaNake CTestCustom.ctest.in Docs Utilities
CMakeCPackOptionsNaNake.in ChangeLog.manual Example bootstrap
CMakeGraphVizOptionsNaNake ChangeLog.txt Modules cmake_uninstallNaNake.in
CMakeLists.txt CompileFlagsNaNake Readme.txt configure
CMakeLogo.gif Copyright.txt Source doxygen.config
CTestConfigNaNake DartConfigNaNake Templates
CTestCustomNaNake.in DartLocal.conf.in Tests
这解压过的文件目录里有个configure 配置文件:
[root@Blue cmake-2.8.10.2]# ./configure --help |less #查看配置帮助,对于这个跨平台工具只需配置安装路径就行了#
[root@Blue cmake-2.8.10.2]# ./configure --prefix=/usr/local/cmake #安装cmake跨品太工具#
[root@Blue cmake-2.8.10.2]# make #编译(时间比较长)#
[root@Blue cmake-2.8.10.2]# make install #安装#
[root@Blue local]# cd cmake/
[root@Blue cmake]# ls
bin doc man share #这里的bin工具文件路径不是系统识别路径修改变量#
[root@Blue cmake]# vim /etc/profile
45PATH=$PATH:/usr/local/apr-util/bin:usr/local/apr/bin:/usr/local/apache/bin:/usr/local/cmake/bin
还有man文件路径也得加到系统可识别的文件里:
[root@Blue ~]# vim /etc/man.config
MANPATH /usr/local/cmake/man
现在就可以查到cmake的用法了。
[root@Blue cmake]# man cmake
编译过后我们得重新登录一下才能使我们的编译的环境变量生效。
再来按照说明步骤来继续走。
[root@Blue ~]# groupadd mysql
[root@Blue ~]# useradd -r -g mysql mysql
[root@Blue ~]# cd /usr/local/src/mysql
[root@Blue mysql]# cmake . #表示用默认参数#
[root@Blue mysql]#make #编译mysql(时间长)#
[root@Blue mysql]#make install
安装完成之后我们来到默认安装的路径:
[root@Blue local]# cd mysql
[root@Blue mysql]# ls
当然也是有bin文件,也要加入系统环境变量中,能够让系统识别:
[root@Blue mysql]# vim /etc/profile45ATH=$PATH:/usr/local/apr-util/bin:usr/local/apr/bin:/usr/local/apache/bin:/usr/local/cmake/bin:/usr/local/mysql/bin
我们可以重新登录或者执行这个文件,使环境变量生效:
也得对mysql的include头文件、lib库文件、man说明文件、等一些文件都要进行操作。
[root@Blue mysql]# vim /etc/man.config
MANPATH /usr/local/mysql/man
[root@Blue mysql]# vim /etc/ld.so.config.d/mysql.conf #添加库文件到系统可识别目录#
/usr/local/mysql/lib
[root@Blue mysql]# ldconfig #清除缓存#
[root@Blue mysql]# ldconfig -pv |grep mysql
libmysqlclient_r.so.15 (libc6) => /usr/lib/mysql/libmysqlclient_r.so.15
libmysqlclient.so.18 (libc6) => /usr/local/mysql/lib/libmysqlclient.so.18
libmysqlclient.so.15 (libc6) => /usr/lib/mysql/libmysqlclient.so.15
libmysqlclient.so (libc6) => /usr/local/mysql/lib/libmysqlclient.so
加载一下是否有这些链接库:
头文件include链接到/usr/include/mysql
[root@Blue mysql]# ln -s include /usr/include/mysql
这时已经安装完成,现在来执行后安装设置:#postinstallation setup
[root@Blue mysql]# chown -R mysql . #改变该目录的所属用户,-R递归#
[root@Blue mysql]# chgrp -R mysql . #改变该目录所属组为mysql #
[root@Blue mysql]# scripts/mysql_install_db --user=mysql #数据库初始化#
然后把所属组和所有者修改成root:
[root@Blue mysql]# chown -R mysql data #改变目录所属用户#
[root@Blue support-files]# cp my-default.cnf /etc/my.cnf #拷贝这个文件到etc下,是mysql配置文件,可以修改mysql的其他特性#
[root@Blue support-files]# cp mysql.server /etc/init.d/mysqld #mysql的启动控制脚本#
[root@Blue support-files]# service mysqld start
[root@Blue support-files]# netstat -tupln |grep mysqld
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 3037/mysql
[root@Blue support-files]# mysql
mysql> show databases; #查看其数据库#
[root@Blue support-files]# chkconfig --add mysqld #设置开机自启动#
[root@Blue support-files]# chkconfig --list |grep mysqld #查看mysql各级别开还是关闭#
mysqld 0:off1:off2:on3:on4:on5:on6:off
到这里mysql也安装配置完毕:
接下来安装php源码:
[root@Blue ~]# tar -jxvf php-5.4.13.tar.bz2 -C /usr/local/src
[root@Blue ~]# cd /usr/local/src/php-5.4.13/
[root@Blue php-5.4.13]# ls
查看其中的说明文件并./configure + 各种参数:
[root@Blue php-5.4.13]# ./configure \
> --prefix=/usr/local/php \
> --sysconfdir=/etc/php \
> --with-apxs2=/usr/local/apache/bin/apxs \
> --with-gd \
> --with-jpeg-dir \
> --with-png-dir \
> --with-zlib-dir \
> --enable-mbstring \
> --with-mysql=/usr/local/mysql \
> --with-mysqli=/usr/local/mysql/bin/mysql_config \
>
安装完成之后编译并安装:
[root@Blue php-5.4.13]# make && makeinstall
编译安装完成之后来到安装目录:查看所有文件:
[root@Blue php-5.4.13]# cd /usr/local/php
[root@Blue php]# ll
total 32
drwxr-xr-x 2 root root 4096 Aug 27 17:57 bin #指令和工具文件#
drwxr-xr-x 3 root root 4096 Aug 27 17:57 include #include头文件#
drwxr-xr-x 3 root root 4096 Aug 27 17:56 lib #库文件#
drwxr-xr-x 3 root root 4096 Aug 27 17:56 php
怎样查看php是不是与我们的mysql相结合呐?
[root@Blue php]# bin/php -m #直接调用bin下的php文件,-m 参数#
再来系统可识别的目录/etc/profile下添加安装php形成的bin目录路径:
45PATH=$PATH:/usr/local/apr-util/bin:/usr/local/apr/bin:/usr/local/apache/bin:/usr/local/cmake/bin:/usr/local/mysql/bin:/usr/local/php/bin
[root@Blue php]# . /etc/profile #重新执行该文件,使其改动生效#
############源码php安装不需要把库文件和头文件加入到相应目录文件#############
一般的库文件也要使系统能够自主识别:
[root@Blue php]# vim /etc/ld.so.conf.d/php.conf
1 /usr/local/php/lib
[root@Blue php]# ldconfig #刷新缓存#
[root@Blue php]# ldconfig -pv |grep php #查看是否添加成功#
查看php是否形成相应模块:
[root@Blue php]# vim /etc/httpd/httpd.conf
有这莫一行:
147 LoadModule php5_module modules/libphp5.so
查看apache安装目录下的modules下是否形成相关php的模块:
[root@Blue modules]# ll |grep php
-rwxr-xr-x 1 root root 22256942 Aug 27 17:56 libphp5.so
发现是存在的。
[root@Blue modules]# vim /etc/httpd/httpd.conf #修改首页名为index.php#
告诉apache服务能够处理php页面:
[root@Blue modules]# cd /usr/local/src/php-5.4.13/
[root@Blue php-5.4.13]# ll
找到该目录下的INSTALL 文件找到应该添加的相应代码到Apache配置文件:
[root@Blue php-5.4.13]# vim /etc/httpd/httpd.conf
[root@Blue php-5.4.13]# service httpd restart
查看网页内容并加入一些内容来测试php的连接状态:
[root@Blue php-5.4.13]# cd /usr/local/apache/htdocs/
[root@Blue htdocs]# ll
total 8
-rw-r--r-- 1 root root 45 Jun 12 2007 index.html
[root@Blue htdocs]# mv index.html index.php
<html><body><h1>It works!
welcome Bluesky web!
</h1></body></html>
<?php
phpinfo();
?>
我们在客户机上访问一下我们的站点:
再来测试一下数据库mysql与apache的连接状态:
修改index.php插入mysql的连接函数:
[root@Blue htdocs]# vim index.php
<html><body><h1>It works!
welcome Bluesky web!
</h1></body></html>
<?php
$link=mysql_connect('127.0.0.1','root','123');
if ($link)
echo "ok";
else
echo "NOT";
phpinfo();
?>
再在客户机上做下测试:
就会看到页面上出现“ok”这说明我们的mysql连接成功。