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 [email protected]
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的安装步骤:
- 新建一目录或者逻辑卷存在数据库的目录
[[email protected] ~]# mkdir /mydata/data
- 新建用户以安全方式运行进程
[[email protected] ~]# groupadd -r mysql
[[email protected] ~]# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql
- 安装并修改相应权限
[[email protected] src]# tar xzf cmake-2.8.7.tar.gz
[[email protected] cmake-2.8.7]# ./configure && make && make install
[[email protected] src]# tar xzf mysql-5.5.33.tar.gz 把下载的mysql安装包解压
[[email protected] src]# cd xzf mysql-5.5.33
使用cmake命令编译安装mysql(MySQL自5.5版本以后,就开始使用CMake编译工具了,所以首先安装cmake….)
[[email protected] mysql-5.5.33]# cmake . -DCMAKE_INSTALL_PREFIX_PREFIX=/usr/local/mysql/ -DMYSQL_DATADIR=/mydata/data -DSYSCONFIDIR=/etc/ && make&& make install
[[email protected] mysql]# chown -R mysql.mysql . 或者
[[email protected] mysql]chown –R mysql.mysql /usr/local/mysq修改/usr/local/mysql的目录属组属主为mysql
[[email protected] ~]# chown -R mysql.mysql /mydata/data 修改存放数据库的目录属组属主为mysql..
- 为数据库提供朱配置文件
[[email protected] mysql-5.5.21]# cp ./support-files/my-huge.cnf /etc/my.cnf
并修改此文件中thread_concurrency的值为你的CPU个数乘以2,比如这里使用如下行:
thread_concurrency = 2
另外还需要添加如下行指定mysql数据文件的存放位置:
datadir = /mydata/data
[[email protected] mysql-5.5.21]# /usr/local/mysql/scripts/mysql_install_db –user=mysql –basedir=/usr/local/mysql/ –datadir=/mydata/data/ & 指定用户,指定数据库的安装路径和数据库的存放路径,初始化数据库
- 为mysql提供sysv服务脚本
[[email protected] mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld复制脚本文件。
[[email protected] mysql]# chmod +x /etc/rc.d/init.d/mysqld 给脚本文件赋予执行权限
[[email protected] mysql]# chkconfig mysqld on 启动mysql
添加至服务列表:
# chkconfig –add mysqld
# chkconfig mysqld on
[[email protected] mysql]# service mysqld start
Starting MySQL.. [ OK ]
[[email protected] 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 :::*
- 输出mysql的man手册至man命令的查找路径
- mysql的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤:
- man配置文件,加入下面内容:
[[email protected] mysql]# vi /etc/man.config
MANPATH /usr/local/mysql/man
- 输入mysql的头文件至系统头文件路径
[[email protected] mysql]# ln -sv /usr/local/mysql/include /usr/include/mysql
- 输出mysql的库文件给系统库查找路径
[[email protected] mysql]# echo '/usr/local/mysql/lib/' > /etc/ld.so.conf.d/mysql.conf
而后让系统重新载入系统库:
[[email protected] mysql]# ldconfig
9,修改PATH环境变量,让系统可以直接运行mysql的相关命令
添加:mysql.sh加入一下内容
[[email protected] mysql]# vi /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
[[email protected] mysql]# . /etc/profile.d/mysql.sh 让其生效
=========== 安装PHP php-5.4.26让php编译为模块并启用Xcache============
Php安装步骤并启用xcache:
- 解决依赖关系
# 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
[[email protected] 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 检测正常,可以继续安装了
[[email protected] php-5.4.26]# make && make install
为php提供配置文件
[[email protected] php-5.4.26]# cp php.ini-production /etc/php.ini
- 编辑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加速,工作原理是代码重用,代码共享实现加速的效果.
- 下载解压安装:
[[email protected] src]# tar xf xcache-3.0.1.tar.bz2
[[email protected] src]# cd xcache-3.0.1
[[email protected] xcache-3.0.1]# /usr/local/php/bin/phpize php的扩展可以生成configure
[[email protected] xcache-3.0.1]# ./configure –enable-xcache –with-php-config=/usr/local/php/bin/php-config
[[email protected] xcache-3.0.1]# make && make install 安装
安装结束之后会显示:生成一个php扩展
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20100525/
[[email protected] xcache-3.0.1]# cp xcache.ini /etc/php.d/ 复制xcache的配置文件
说明:xcache.ini文件在xcache的源码目录中。
2,编辑xcache.ini文件,修改xcache的路径为绝对路径
[[email protected] php.d]# vim xcache.ini
extension =/usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so
[[email protected] src]# apachectl restart 重启apache
重新打开http;//172.16.249.75/test.php 检测xcache
[[email protected] 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,然后编译安装。
[[email protected] 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
- 为php提供配置文件(由于之前安装过php,所以一下的php安装路径均为php5)
[[email protected] php-5.4.26]# cp php.ini-production /etc/php.ini
- 配置php-fpm
为php-fpm提供sysv脚本,并将其添加到系统服务列表:
[[email protected] php-5.4.26]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
[[email protected] php-5.4.26]# chmod +x /etc/rc.d/init.d/php-fpm
[[email protected] php-5.4.26]# chkconfig –add php-fpm
[[email protected] php-5.4.26]# chkconfig php-fpm on
为php-fpm提供配置文件:
[[email protected] etc]# cd /usr/local/php5/etc
[[email protected] etc]# cp php-fpm.conf.default php-fpm.conf
编辑配置php-fpm配置文件:
[[email protected] 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
- 启动php-fpm
[[email protected] etc]# service php-fpm start
验证是否启动成功。
[[email protected] etc]# ps -aux | grep php-fpm
[[email protected] 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))
- 配置httpd2.4
- 启用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
- 配置虚拟主机支持使用fcgi
在apache的朱配置文件中,去掉include段注释,然后# Virtual hosts
Include /etc/httpd24/extra/httpd-vhosts.conf
相对应的虚拟主机中添加类似如下两行:
[[email protected] 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进行了封装,不需要手动指定。
- 编辑apache配置文件httpd.conf
[[email protected] 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#=============
[[email protected] 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
====================================================