Linux/Centos下源代码安装Apache.Mysql.Php. Xcache过程

Centos6.6下源代码安装apache.mysql.php. x-cache过程

软件包下载:

apr-1.5.0.tar.bz2

apr-util-1.5.3.tar.bz2

httpd-2.4.9.tar.bz2

cmake-2.8.7.tar.gz

mysql-5.5.33.tar.gz

php-5.3.27.tar.gz

xcache-3.0.1.tar.bz2

libmcrypt-2.5.7.tar.gz

===========Apache httpd-2.4.9安装============

Apache的编译安装步骤:

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

1.4+版的apr和apr-util

安装包下载:

apr-1.5.0.tar.bz2  apache的运行环境 apache的底层依赖的虚拟机

apr-util-1.5.3.tar.bz2

httpd-2.4.10.tar.bz2  

安装开发环境解决依赖关系

#yum groupinstall "Development Tools"  "Server Platfrm Development"  

httpd-2.4.9编译过程也要依赖于pcre-devel软件包,需要事先安装。此软件包系统光盘自带,因此,找到并安装即可。否则会报错:error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/

#yum install pcer-devel  安装pcer的devel组件。

(1) 编译安装apr

# tar xf apr-1.5.0.tar.bz2

# cd apr-1.5.0

# ./configure --prefix=/usr/local/apr

# make && make install

 

(2) 编译安装apr-util

# tar xf apr-util-1.5.3.tar.bz2

# cd apr-util-1.5.3

# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

# make && make install

(3)创建apache用户和组

# groupadd -r apache

# useradd -r -g apache apahce

(4)编译和安装(安装源代码包之前把自带的httpd停掉,或者卸载掉)

# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=event

# make && make install

(5) 修改httpd的主配置文件,设置其Pid文件的路径

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

PidFile  "/var/run/httpd.pid" 

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

#!/bin/bash

#

# httpd        Startup script for the Apache HTTP Server

#

# chkconfig: - 85 15

# description: Apache is a World Wide Web server.  It is used to serve \

#        HTML files and CGI.

# processname: httpd

# config: /etc/httpd/conf/httpd.conf

# config: /etc/sysconfig/httpd

# pidfile: /var/run/httpd.pid

 

# Source function library.

. /etc/rc.d/init.d/functions

 

if [ -f /etc/sysconfig/httpd ]; then

        . /etc/sysconfig/httpd

fi

 

# Start httpd in the C locale by default.

HTTPD_LANG=${HTTPD_LANG-"C"}

 

# This will prevent initlog from swallowing up a pass-phrase prompt if

# mod_ssl needs a pass-phrase from the user.

INITLOG_ARGS=""

 

# Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server

# with the thread-based "worker" MPM; BE WARNED that some modules may not

# work correctly with a thread-based MPM; notably PHP will refuse to start.

 

# Path to the apachectl script, server binary, and short-form for messages.

apachectl=/usr/local/apache/bin/apachectl

httpd=${HTTPD-/usr/local/apache/bin/httpd}

prog=httpd

pidfile=${PIDFILE-/var/run/httpd.pid}

lockfile=${LOCKFILE-/var/lock/subsys/httpd}

RETVAL=0

 

start() {

        echo -n $"Starting $prog: "

        LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS

        RETVAL=$?

        echo

        [ $RETVAL = 0 ] && touch ${lockfile}

        return $RETVAL

}

 

stop() {

  echo -n $"Stopping $prog: "

  killproc -p ${pidfile} -d 10 $httpd

  RETVAL=$?

  echo

  [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}

}

reload() {

    echo -n $"Reloading $prog: "

    if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then

        RETVAL=$?

        echo $"not reloading due to configuration syntax error"

        failure $"not reloading $httpd due to configuration syntax error"

    else

        killproc -p ${pidfile} $httpd -HUP

        RETVAL=$?

    fi

    echo

}

 

# See how we were called.

case "$1" in

  start)

  start

  ;;

  stop)

  stop

  ;;

  status)

        status -p ${pidfile} $httpd

  RETVAL=$?

  ;;

  restart)

  stop

  start

  ;;

  condrestart)

  if [ -f ${pidfile} ] ; then

    stop

    start

  fi

  ;;

  reload)

        reload

  ;;

  graceful|help|configtest|fullstatus)

  $apachectl $@

  RETVAL=$?

  ;;

  *)

  echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"

  exit 1

esac

 

exit $RETVAL

(6)为此脚本赋予执行权限:

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

(7) 加入服务列表:

# chkconfig --add httpd

#service httpd start 即可启动

关于编译配置上面—with-mpm=prefork 备注解释:

(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。

============Mysql mysql-5.5.33安装============

Mysql的安装步骤:

  1. 新建一目录或者逻辑卷存在数据库的目录

[root@local ~]# mkdir /mydata/data

  1. 新建用户以安全方式运行进程

[root@local ~]# groupadd  -r mysql

[root@local ~]# useradd  -g  mysql -r -s /sbin/nologin  -M -d /mydata/data mysql

  1. 安装并修改相应权限

 [root@local src]# tar xzf cmake-2.8.7.tar.gz

[root@local cmake-2.8.7]# ./configure  && make  && make install

[root@local src]# tar xzf mysql-5.5.33.tar.gz 把下载的mysql安装包解压

[root@local src]# cd xzf mysql-5.5.33

使用cmake命令编译安装mysql(MySQL自5.5版本以后,就开始使用CMake编译工具了,所以首先安装cmake….)

[root@local mysql-5.5.33]# cmake . -DCMAKE_INSTALL_PREFIX_PREFIX=/usr/local/mysql/ -DMYSQL_DATADIR=/mydata/data -DSYSCONFIDIR=/etc/ && make&& make install

[root@local mysql]# chown  -R mysql.mysql . 或者

[root@local mysql]chown –R mysql.mysql /usr/local/mysq修改/usr/local/mysql的目录属组属主为mysql

[root@local ~]# chown -R mysql.mysql /mydata/data 修改存放数据库的目录属组属主为mysql..

  1. 为数据库提供朱配置文件

[root@local mysql-5.5.21]# cp ./support-files/my-huge.cnf /etc/my.cnf

并修改此文件中thread_concurrency的值为你的CPU个数乘以2,比如这里使用如下行:

thread_concurrency = 2

另外还需要添加如下行指定mysql数据文件的存放位置:

datadir = /mydata/data

[root@local mysql-5.5.21]# /usr/local/mysql/scripts/mysql_install_db  --user=mysql --basedir=/usr/local/mysql/ --datadir=/mydata/data/ & 指定用户,指定数据库的安装路径和数据库的存放路径,初始化数据库

  1. 为mysql提供sysv服务脚本

[root@local mysql]# cp  /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld复制脚本文件。

[root@local mysql]# chmod  +x /etc/rc.d/init.d/mysqld  给脚本文件赋予执行权限

[root@local mysql]# chkconfig  mysqld on 启动mysql

添加至服务列表:

# chkconfig --add mysqld

# chkconfig mysqld on

[root@local mysql]# service  mysqld start

Starting MySQL..                                           [  OK  ]

[root@local mysql]# ss -ntl   3306端口开启,mysql启动ok!

State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port

LISTEN     0      50                        *:3306                     *:*    

LISTEN     0      128                      :::80                      :::*    

  1. 输出mysql的man手册至man命令的查找路径
  2. mysql的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤:
  3. man配置文件,加入下面内容:

[root@local mysql]# vi  /etc/man.config

MANPATH /usr/local/mysql/man

  1. 输入mysql的头文件至系统头文件路径

[root@local mysql]# ln -sv /usr/local/mysql/include /usr/include/mysql

 

  1. 输出mysql的库文件给系统库查找路径

[root@local mysql]# echo '/usr/local/mysql/lib/' >  /etc/ld.so.conf.d/mysql.conf

而后让系统重新载入系统库:

[root@local mysql]# ldconfig

9,修改PATH环境变量,让系统可以直接运行mysql的相关命令

添加:mysql.sh加入一下内容

[root@local mysql]# vi  /etc/profile.d/mysql.sh

export PATH=/usr/local/mysql/bin:$PATH

[root@local mysql]# .  /etc/profile.d/mysql.sh 让其生效

 

=========== 安装PHP php-5.4.26让php编译为模块并启用Xcache============

Php安装步骤并启用xcache:

  1. 解决依赖关系

# yum -y groupinstall "Desktop Platform Development"

# yum -y install bzip2-devel libmcrypt-devel libxml2-devel

2,编译安装php-5.4.26

# tar xf php-5.4.26.tar.bz2

# cd php-5.4.26

[root@local php-5.4.26]# ./configure  --prefix=/usr/local/php --with-mysql=/usr/local/mysql/ --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config  --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --enable-zlib  --with-libxml-dir=/usr/ --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs  --with-mcrypt  --with-config-file-path=/etc/ --with-config-file-scan-dir=/etc/php.d  --with-bz2 --enable-maintainer-zts

########说明:#######

这里为了支持apache的worker或event这两个MPM,编译时使用了--enable-maintainer-zts选项。

######################

注意: error: mcrypt.h not found. Please reinstall libmcrypt.  libmcrypt-2.5.7.tar.gz 少这个包,下载安装即可.

出现.Thank you for using PHP 检测正常,可以继续安装了

[root@local php-5.4.26]# make  && make install

为php提供配置文件

[root@local php-5.4.26]# cp php.ini-production  /etc/php.ini

  1. 编辑apache的配置文件httpd.conf,让apache支持php

 1)

   AddType application/x-httpd-php .php

   AddType application/x-httpd-php-source .phps

2)

<IfModule dir_module>

    DirectoryIndex  index.php  index.html

</IfModule>

添加好之后,重新载入配置文件即可测试php是否已经可以正常使用!

新建测试页面test.php

<?php

phpinfo();

?>

http://172.16.249.75/test.php 即可打开测试页面..

===========X-cache xcache-3.0.1安装============

安装xcache为php加速,工作原理是代码重用,代码共享实现加速的效果.

  1. 下载解压安装:

[root@local src]# tar  xf xcache-3.0.1.tar.bz2

[root@local src]# cd xcache-3.0.1

[root@local xcache-3.0.1]# /usr/local/php/bin/phpize php的扩展可以生成configure

[root@local xcache-3.0.1]# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config

[root@local xcache-3.0.1]# make && make install 安装

 安装结束之后会显示:生成一个php扩展

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20100525/

[root@local xcache-3.0.1]# cp xcache.ini  /etc/php.d/ 复制xcache的配置文件

说明:xcache.ini文件在xcache的源码目录中。

2,编辑xcache.ini文件,修改xcache的路径为绝对路径

[root@local php.d]# vim xcache.ini

extension =/usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so

[root@local src]# apachectl  restart 重启apache

重新打开http;//172.16.249.75/test.php 检测xcache

[root@local etc]# ab -n 1000 -c  50 http://172.16.249.75/test.php 下图是使用xcache之前和之后的对比:

Additional .ini files parsed

/etc/php.d/xcache.ini

 

=============让php以fpm工作为独立的守护进程=======================

Php以fpm独立守护进程运行步骤:

1,其他选项和模块化安装一样。唯一不同的是把--with-apxs2=/usr/local/apache/bin/apxs选项换成--enable-fpm,然后编译安装。

[root@local php-5.4.26]# ./configure  --prefix=/usr/local/php5 --with-mysql=/usr/local/mysql/ --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config  --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --enable-zlib  --with-libxml-dir=/usr/ --enable-xml --enable-sockets  --with-mcrypt  --with-config-file-path=/etc/ --with-config-file-scan-dir=/etc/php.d  --with-bz2 --enable-maintainer-zts  --enable-fpm

#make  && make install

 

说明:如果使用PHP5.3以上版本,为了链接MySQL数据库,可以指定mysqlnd,这样在本机就不需要先安装MySQL或MySQL开发包了。mysqlnd从php 5.3开始可用,可以编译时绑定到它(而不用和具体的MySQL客户端库绑定形成依赖),但从PHP 5.4开始它就是默认设置了。

# ./configure --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd

  1. 为php提供配置文件(由于之前安装过php,所以一下的php安装路径均为php5)

[root@local php-5.4.26]# cp php.ini-production  /etc/php.ini

  1. 配置php-fpm

为php-fpm提供sysv脚本,并将其添加到系统服务列表:

[root@local php-5.4.26]# cp sapi/fpm/init.d.php-fpm  /etc/rc.d/init.d/php-fpm

[root@local php-5.4.26]# chmod  +x /etc/rc.d/init.d/php-fpm

[root@local php-5.4.26]# chkconfig  --add php-fpm

[root@local php-5.4.26]# chkconfig  php-fpm on

为php-fpm提供配置文件:

[root@local etc]# cd /usr/local/php5/etc

[root@local etc]# cp php-fpm.conf.default  php-fpm.conf  

编辑配置php-fpm配置文件:

[root@local etc]# vi php-fpm.conf

在[global]区域下面添加如下参数:

pm.max_children = 50

pm.start_servers = 5

pm.min_spare_servers = 2

pm.max_spare_servers = 8

pid = /usr/local/php5/var/run/php-fpm.pid

  1. 启动php-fpm

[root@local etc]# service php-fpm  start

验证是否启动成功。

[root@local etc]# ps -aux | grep php-fpm

[root@local etc]# ss  -tnlp |grep php-fpm

LISTEN     0      128               127.0.0.1:9000                     *:*      users:(("php-fpm",42673,9),("php-fpm",42674,0),("php-fpm",42675,0),("php-fpm",42676,0),("php-fpm",42677,0),("php-fpm",42678,0))

  1. 配置httpd2.4
  1. 启用httpd的相关模块

在Apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载,加载即就是去掉注释之后,重reload.

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

  1. 配置虚拟主机支持使用fcgi

在apache的朱配置文件中,去掉include段注释,然后# Virtual hosts

Include /etc/httpd24/extra/httpd-vhosts.conf

相对应的虚拟主机中添加类似如下两行:

[root@local etc]# vi /etc/httpd24/extra/httpd-vhosts.conf

<VirtualHost *:80>

    DocumentRoot " /usr/local/apache/htdocs"

    ServerName  1.com

    ProxyRequests Off

ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/aoache/htdoc/$1

    <Directory " /usr/local/apache/htdocs">

        Options none

        AllowOverride none

        Require all granted

    </Directory>

</VirtualHost>

 

#说明#

ProxyRequests Off:关闭正向代理

ProxyPassMatch:把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://127.0.0.1:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。

  1. 编辑apache配置文件httpd.conf

[root@local 1.com]# vi /etc/httpd24/httpd.conf

 A:添加如下两行

    AddType application/x-httpd-php  .php

AddType application/x-httpd-source .phps

 B: 定位至DirectoryIndex index.html

   修改为:

DirectoryIndex  index.php  index.html

#补充#:Apache httpd 2.4以前的版本中,要么把PHP作为Apache的模块运行,要么添加一个第三方模块支持PHP-FPM实现。

=============#自带的httpd重命令httpd24#=============

[root@local init.d]# cp httpd  httpd24 把系统自带的脚本命令修改成源码安装的

apachectl=/usr/local/apache/bin/apachectl

httpd=${HTTPD-/usr/local/apache/bin/httpd}

prog=httpd

pidfile=${PIDFILE-/usr/local/apache/log/httpd.pid}

lockfile=${LOCKFILE-/var/lock/subsys/httpd24}

RETVAL=0

#chkconfig –add httpd24

====================================================


发表评论

登录 后发表评论.