上篇博客安装的LAMP平台是用rpm包安装的,那么当在某些时候我们需要用到的一些功能而rpm包在制作的过程中没有把此功能做进去,那么怎么办呢,自己下载源代码进行编译安装,编译安装可以根据自己的需求配置安装软件,在企业中大多数都是编译安装的,下面将在一台默认安装有rhel5.8的系统上编译安装httpd-2.4.2和php-5.3.14和mysql-5.1.41来搭建LAMP应用平台,

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
目录
一, 编译安装httpd-2.4.1
二,给编译安装的httpd提供SysV服务启动脚本 
三, 编译安装mysql-5.1.41
四,编译安装php-5.3.14
五, 配置LAMP
六, 压力测试PHP页面的响应速度,
 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
准备以下软件包:
apr-1.4.6.tar.bz2 
apr-util-1.4.1.tar.bz2
httpd-2.4.1.tar.bz2
mysql-5.1.41.tar.gz
php-5.3.14.tar.bz2
以上软件包准备好了之后复制到/usr/src目录里

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一.编译安装apache,
1.  编译安装apr, 那么apr是什么? Apache Portable Run-time Librarie (apache的可移植运行库),我们都知道apache有很多版本,比如说w32的版本,network的版本等多种操作系统平台的版本,那么这么多的版本apache官方是不是每个操作系统平台都要新开发一个版本呢?,这个对apache官方来说不是什么难事,而对于那些开发模块的人来说,我开发一个新功能到底是跑在linux版本的apache还是跑在windows版本的apache呢?那么对于开发模块的那些人是不是也要开发不同操作系统的模块,这样岂不是很苦恼的一个事情,那么有了apr以后,对于应用程序而言.它们根本就不需要考虑具体的平台,不管是Unix .Linux还是Window的,apr类似java虚拟机,让apache跑在apr上.这样一来就方便多了.

  1. rhel5.8的系统上默认安装了apr-1.2.7-11版本的,对于httpd-2.4版本apr-1.2.7在某些功能能上是不支持的,所以我们这里要编译安装比较新版本的apr 
  2.  
  3. 首先来安装基本开发库,需要注意的是这里装的基本开发库并不是只给apr用的,像下面编译http,等等都需要用到的 
  4. #yum -y groupinstall "Development Libraries" "Development Tools" 
  5. #cd /usr/src 
  6. #tar xjvf apr-1.4.6.tar.bz2 
  7. #cd apr-1.4.6 
  8. #./buildconf 
  9. #./configure --prefix=/usr/local/apr 
  10. #make && make install 
  11. #cd /usr/src 
  12. #tar xjvf apr-util-1.4.1.tar.bz2 
  13. #cd apr-util-1.4.1 
  14. #./buildconf --with-apr=/usr/src/apr-1.4.6 这里需要注意的是指定的目录是apr的源码目录 
  15. #./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr 
  16. #make && make install 

2.编译安装apache 

  1. 解决依赖关系 
  2. #yum -y install pcre-devel 
  3. 安装apache 
  4. #cd /usr/src 
  5. #tar xjvf httpd-2.4.1.tar.bz2 
  6. #cd httpd-2.4.1 
  7. #./configure --prefix=/usr/local/apache --enable-so --enable-ssl --enable-cgi --enable-rewrite \ --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util  
  8. #make && make install 

3. 将apache的命令以及头文件添加到系统搜素路径

  1. 添加apahe命令到系统搜索路径 
  2. #vim /etc/profile   在文件的44行上面添加一行如下 
  3. PATH=/usr/local/apache/bin:$PATH 
  4.  
  5. #export PATH=/usr/local/apache/bin:$PATH 
  6. 添加头文件到系统搜索路径 
  7. #ln -sv /usr/local/apache/include /usr/include/apache 

 

二.给编译安装的apache提供SysV服务启动脚本,
SysV是Red Hat的系统上独有的服务启动脚本,我们都知道编译安装的服务程序,默认不支持service 来启动,停止等等,这样的话在某些时候需要重启服务,停止服务,等等不是很方便,那么下面提供了一个httpd的服务启动脚本
1.修改httpd主配置文件,添加pidfile文件路径

  1. #echo "pidfile "/var/run/httpd.pid"" >> /usr/local/apache/conf/httpd.conf 

2.在其它安装有rpm包的httpd 的RHEL的系统上复制两个文件到本地,并加以修改

  1. 服务启动脚本配置文件,位于/etc/sysconfig/httpd  复制到本地相同目录下即可 
  2. 服务启动脚本, 位于/etc/init.d/httpd  复制到本地相同目录下 
  3. 至于怎么复制自己想办法, 
  4.  
  5. 下面来修改服务启动脚本 
  6. #vim /etc/init.d/httpd  内容如下 
  7. #!/bin/bash 
  8. # httpd        Startup script for the Apache HTTP Server 
  9. # chkconfig: - 85 15 
  10. # description: Apache is a World Wide Web server.  It is used to serve \ 
  11. #          HTML files and CGI. 
  12. # processname: httpd 
  13. # config: /etc/httpd/conf/httpd.conf 
  14. # config: /etc/sysconfig/httpd 
  15. # pidfile: /var/run/httpd.pid 
  16.  
  17. # Source function library. 
  18. . /etc/rc.d/init.d/functions 
  19.  
  20. if [ -f /etc/sysconfig/httpd ]; then 
  21.         . /etc/sysconfig/httpd 
  22. fi 
  23.  
  24. # Start httpd in the C locale by default. 
  25. HTTPD_LANG=${HTTPD_LANG-"C"} 
  26.  
  27. # This will prevent initlog from swallowing up a pass-phrase prompt if 
  28. # mod_ssl needs a pass-phrase from the user. 
  29. INITLOG_ARGS="" 
  30.  
  31. # Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server 
  32. # with the thread-based "worker" MPM; BE WARNED that some modules may not 
  33. # work correctly with a thread-based MPM; notably PHP will refuse to start. 
  34.  
  35. # Path to the apachectl script, server binary, and short-form for messages. 
  36. apachectl=/usr/local/apache/bin/apachectl 
  37. httpd=${HTTPD-/usr/local/apache/bin/httpd} 
  38. prog=httpd 
  39. pidfile=${PIDFILE-/var/run/httpd.pid} 
  40. lockfile=${LOCKFILE-/var/lock/subsys/httpd} 
  41. RETVAL=0 
  42.  
  43. start() { 
  44.         echo -n $"Starting $prog: " 
  45.         LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS 
  46.         RETVAL=$? 
  47.         echo 
  48.         [ $RETVAL = 0 ] && touch ${lockfile} 
  49.         return $RETVAL 
  50.  
  51. stop() { 
  52.     echo -n $"Stopping $prog: " 
  53.     killproc -p ${pidfile} -d 10 $httpd 
  54.     RETVAL=$? 
  55.     echo 
  56.     [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile} 
  57. reload() { 
  58.     echo -n $"Reloading $prog: " 
  59.     if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then 
  60.         RETVAL=$? 
  61.         echo $"not reloading due to configuration syntax error" 
  62.         failure $"not reloading $httpd due to configuration syntax error" 
  63.     else 
  64.         killproc -p ${pidfile} $httpd -HUP 
  65.         RETVAL=$? 
  66.     fi 
  67.     echo 
  68.  
  69. # See how we were called. 
  70. case "$1" in 
  71.   start) 
  72.     start 
  73.     ;; 
  74.   stop) 
  75.     stop 
  76.     ;; 
  77.   status) 
  78.         status -p ${pidfile} $httpd 
  79.     RETVAL=$? 
  80.     ;; 
  81.   restart) 
  82.     stop 
  83.     start 
  84.     ;; 
  85.   condrestart) 
  86.     if [ -f ${pidfile} ] ; then 
  87.         stop 
  88.         start 
  89.     fi 
  90.     ;; 
  91.   reload) 
  92.         reload 
  93.     ;; 
  94.   graceful|help|configtest|fullstatus) 
  95.     $apachectl $@ 
  96.     RETVAL=$? 
  97.     ;; 
  98.   *) 
  99.     echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}" 
  100.     exit 1 
  101. esac 
  102.  
  103. exit $RETVAL 

3,给脚本执行权限,并添加系统服务,及下次开机自启

  1. #chmod a+x /etc/init.d/httpd 
  2. #chkconfig --add httpd 
  3. #chkconfig httpd on 
  4. #service httpd start 

上面脚本中默认有个chack13的函数,那个函数是检查一系列文件是否存在的, 我们可以不要那个函数,我已经将其删掉了,需要注意的是start函数中有调用chack13函数的,有需要将调用函数那行删掉,其他改动的地方就两个变量apachectl=/usr/local/apache/bin/apachectl httpd=${HTTPD-/usr/local/apache/bin/httpd}
   
三.编译安装mysql数据库
1 .安装mysql

  1. #cd /usr/src  
  2. #tar xzvf mysql-5.1.41.tar.gz  
  3. #cd mysql-5.1.41  
  4. #./configure --prefix=/usr/local/mysql --sysconfdir=/usr/local/mysql/etc --with-ssl \ 
  5. --localstatedir=/usr/local/mysql/database --enable-assembler --with-readline \ 
  6. --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables \ 
  7. --with-embedded-server --enable-local-infile  --with-plugins=innobase  
  8. #make && make install 

2. 添加mysql命令,库文件,及头文件为系统搜素路径

  1. 添加mysql命令为系统搜索路径 
  2. #vim /etc/porfile   在文件的44行修改如下 
  3. PATH=/usr/local/apache/bin:/usr/local/mysql/bin:$PATH 
  4. #export PATH=/usr/local/mysql/bin:$PATH 
  5. 添加库文件为系统搜索路径 
  6. #echo "/usr/local/mysql/lib/mysql" > /etc/ld.so.conf.d/mysql.conf 
  7. #ldconfig 
  8. 添加头文件为系统搜索路径 
  9. ln -sv /usr/local/mysql/include/mysql /usr/include/mysql 

3.给mysql提供配置文件及启动服务

  1. 创建mysql用户 
  2. #useradd -s /sbin/nologin mysql 
  3. #chown -R mysql:mysql /usr/local/mysql 
  4. 复制配置文件 
  5. #cp /usr/src/mysql-5.1.41/support-files/my-innodb-heavy-4G.cnf /etc/my.cnf 
  6. 复制服务启动脚本 
  7. #cp /usr/src/mysql-5.1.41/support-files/mysql.server /etc/init.d/mysqld 
  8. #chmod a+x /etc/init.d/mysqld 
  9. 初始化数据库 
  10. #/usr/local/mysql/bin/mysql_install_db --user=mysql 
  11. 添加为系统服务并启动 
  12. #chkconfig --add mysqld 
  13. #chkconfig mysqld on 
  14. #service mysqld restart 
  15. 为mysql数据库管理员设置密码 
  16. #mysqladmin -u root password redhat 


四.编译安装php
1. 安装基本开发库,因为在很多程序开发的时候需要依赖系统上的开发库

  1. #yum -y groupinstall "X Software Development" 

2.安装php

  1. #cd /usr/src 
  2. #tar xjvf  php-5.3.14.tar.bz2 
  3. #cd php-5.3.14 
  4. #./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl \
  5. --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir \
  6. --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml \
  7. --with-apxs2=/usr/local/apache/bin/apxs  --with-config-file-path=/etc  \
  8. --with-config-file-scan-dir=/etc/php.d --with-bz2 
  9. #make && make install

3.给php提供配置文件

  1. #cp /usr/src/php-5.3.14/php.ini-production /etc/php.ini 

php的配置基本已经结束了,下面来让httpd支持php

五,配置LAMP
    其实也就是编辑下httpd的主配置文件让其支持php
1.编辑httpd的主配置文件让其支持php

  1. #vim /usr/local/apache/conf/httpd.conf 修改以下内容 
  2. AddType application/x-httpd-php  .php  新加此行 
  3. AddType application/x-httpd-php-source  .phps  新加次行 
  4. DirectoryIndex  index.php  index.html   找到次行添加index.php 

2.重启httpd服务

  1. #service httpd restart 

六,压力测试PHP页面的响应速度,
1.  使用httpd自带压力测试命令ab来测试

  1. #ab -n 10000 -c 100 http://192.168.0.53/index.php  这里的IP是服务器的IP地址 
  2. This is ApacheBench, Version 2.3 <$Revision: 1178079 $> 
  3. Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ 
  4. Licensed to The Apache Software Foundation, http://www.apache.org/ 
  5.  
  6. Benchmarking 192.168.0.53 (be patient) 
  7. Completed 1000 requests 
  8. Completed 2000 requests 
  9. Completed 3000 requests 
  10. Completed 4000 requests 
  11. Completed 5000 requests 
  12. Completed 6000 requests 
  13. Completed 7000 requests 
  14. Completed 8000 requests 
  15. Completed 9000 requests 
  16. Completed 10000 requests 
  17. Finished 10000 requests 
  18.  
  19.  
  20. Server Software:        Apache/2.4.1 
  21. Server Hostname:        192.168.0.53 
  22. Server Port:            80 
  23.  
  24. Document Path:          /index.php 
  25. Document Length:        46500 bytes 
  26.  
  27. Concurrency Level:      100 
  28. Time taken for tests:   10.322 seconds 
  29. Complete requests:      10000 
  30. Failed requests:        0 
  31. Write errors:           0 
  32. Total transferred:      466660000 bytes 
  33. HTML transferred:       465000000 bytes 
  34. Requests per second:    968.81 [#/sec] (mean) 
  35. Time per request:       103.219 [ms] (mean) 
  36. Time per request:       1.032 [ms] (mean, across all concurrent requests) 
  37. Transfer rate:          44151.01 [Kbytes/sec] received 
  38.  
  39. Connection Times (ms) 
  40.               min  mean[+/-sd] median   max 
  41. Connect:        0   15  16.9      8     101 
  42. Processing:     5   88  29.6     88     270 
  43. Waiting:        0   36  27.9     30     218 
  44. Total:          8  103  28.7    105     278 
  45.  
  46. Percentage of the requests served within a certain time (ms) 
  47.   50%    105 
  48.   66%    114 
  49.   75%    119 
  50.   80%    122 
  51.   90%    130 
  52.   95%    145 
  53.   98%    173 
  54.   99%    195 
  55.  100%    278 (longest request) 

ok到这里基本已经配置完成了.编译安装软件的时候可以根据自己的需求,配置自己的编译参数,



 

本文出自 “小蚂蚁” 博客,请务必保留此出处http://ant595.blog.51cto.com/5074217/920996