手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

CentOS 5.9下编译安装LAMP(Apache 2.2.44+MySQL 5.6.10+PHP 5.4.12)

[日期:2013-03-04] 来源:Linux社区  作者:zhangjianjian [字体: ]

二、安装Apache

 

1、httpd-2.4.4需要较新版本的apr和apr-util,因此需要事先对其进行升级。升级方式有两种,一种是通过源代码编译安装,一种是直接升级rpm包。这里选择使用编译源代码的方式进行。

 

(1) 编译安装apr

  1. # tar xf apr-1.4.6.tar.gz
  2. # cd apr-1.4.6
  3. # ./configure --prefix=/usr/local/apr \\指定安装目录
  4. # make && make install

 

(2) 编译安装apr-util

  1. # tar xf apr-util-1.5.1.tar.gz
  2. # cd apr-util-1.5.1
  3. # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
  4. # make && make install

 

(3) httpd-2.4.4编译过程也要依赖于pcre-devel软件包,需要事先安装。此软件包系统光盘自带,因此,找到并安装即可。

  1. #yum -y install pcre-devel

 

2、编译安装httpd-2.4.4

  1. # tar xf httpd-2.4.4.tar.gz
  2. # cd httpd-2.4.4
  3. # ./configure --prefix=/usr/local/apache \ \\指定安装目录
  4. --sysconfdir=/etc/httpd \ \\配置文件目录
  5. --enable-so --enable-ssl \ \\基于ssl的加密传输
  6. --enable-cgi \
  7. --enable-rewrite \ \\允许URL地址重写
  8. --with-zlib \ \\支持压缩
  9. --with-pcre \ \\支持perl的正则表达式
  10. --with-apr=/usr/local/apr \
  11. --with-apr-util=/usr/local/apr-util \ \\关联apr-util的目录
  12. --enable-mpms-shared=all \ \\实现mpm的动态切换
  13. --with-mpm=event \\默认加载的mpm
  14. # make && make install

apache的便宜选项比较多,可以使用configure --help命令查看所支持的编译选项及简要说明,不过都是英文的,想要详细了解每个选项的意义和作用可以查看一下官方的文档,下面的php编译也是一样的,都可以使用该命令查看支持的编译选项,这里就不再详细说明了。

补充:(1)构建MPM为静态模块

 

在全部平台中,MPM都可以构建为静态模块。在构建时选择一种MPM,链接到服务器中。如果要改变MPM,必须重新构建。为了使用指定的MPM,请在执行configure脚本 时,使用参数 --with-mpm=NAME。NAME是指定的MPM名称。编译完成后,可以使用 ./httpd -l 来确定选择的MPM。 此命令会列出编译到服务器程序中的所有模块,包括 MPM。

(2)构建 MPM 为动态模块

 

在Unix或类似平台中,MPM可以构建为动态模块,与其它动态模块一样在运行时加载。 构建 MPM 为动态模块允许通过修改LoadModule指令内容来改变MPM,而不用重新构建服务器程序。在执行configure脚本时,使用--enable-mpms-shared选项即可启用此特性。当给出的参数为all时,所有此平台支持的MPM模块都会被安装。还可以在参数中给出模块列表。默认MPM,可以自动选择或者在执行configure脚本时通过--with-mpm选项来指定,然后出现在生成的服务器配置文件中。编辑LoadModule指令内容可以选择不同的MPM。

 

3、修改httpd的主配置文件,设置其Pid文件的路径

 

编辑/etc/httpd/httpd.conf,添加如下行即可:

 

PidFile "/var/run/httpd.pid"

 

4、提供SysV服务脚本/etc/rc.d/init.d/httpd,内容如下:

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

 

而后为此脚本赋予执行权限:

 

# chmod +x /etc/rc.d/init.d/httpd

 

加入服务列表:

 

# chkconfig --add httpd

为了方便更新PATH,省的每次都绝对路径启动服务,并添加帮助文档

  1. #echo "export PATH=$PATH:/usr/local/apache/bin" > /etc/profile.d/httpd.sh  //添加PATH路径
  2. # source /etc/profile.d/httpd.sh //重读配置文件
  3. #vi /etc/man.config //添加man文档

接下来就可以启动服务进行测试了。

由于在上面的编译过程中把mpm编译成了动态模块,要更换其他模块时只需在配置文件中修改即可。

linux
相关资讯       lamp  CentOS 5.9 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款