CentOS 6系统的 lamp (编译安装,模块或php-fpm)详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS 6系统的 lamp (编译安装,模块或php-fpm)详解相关的知识,希望对你有一定的参考价值。
LAMP 是指一组通常一起使用来运行动态网站或者服务器的 自由软件 名称首字母缩写:
1、Linux;操作系统;
2、Apache;网页服务器;
3、 MariaDB或mysql,数据库管理系统(或者数据库服务器);
4、php、Perl或Python,脚本语言;
实验要求:
(1) 三者分离于两台或三台主机;
(2) 一个虚拟主机用于提供phpMyAdmin;另一个虚拟主机用于提供wordpress;
(3) xcache
(4) 尝试mpm为非prefork机制;
IP | 系统 | 软件 |
192.168.1.102 | CentOS 6.7 | httpd(event) |
192.168.1.103 | CentOS 6.7 | php-fpm,xcache |
192.168.1.104 | CentOS 6.7 | mariadb |
CentOS 6:
PHP-5.3.2-:默认不支持fpm机制;需要自行打补丁并编译安装;
httpd-2.2:默认不支持fcgi协议,需要自行编译此模块;
解决方案:编译安装httpd-2.4,apr,apr-util版本为1.4+,php-5.3.3+;
实验安装版本:httpd-2.4.10 + apr-1.5.0+ apr-util-1.5.3 + php-5.4.40 + xcache-3.2.0 + mariadb-5.5.46
一、192.168.1.102主机,编译安装httpd-2.4.10 + apr-1.5.0 + apr-util-1.5.3
httpd-2.4.10需要较新版本的apr和apr-util,因此需要事先对其进行升级,这里使用源代码编译安装。
apr和apr-util的包下载地址:https://archive.apache.org/dist/apr/
httpd程序源码包下载地址:https://archive.apache.org/dist/httpd/
1、安装开发环境包组和开发程序包
# hwclock -s //将软件时间同步为硬件时间
# yum grouplist //查看包组
# yum groupinstall "Development Tools" "Server Platform Development" -y //开发环境包组
# yum install pcre-devel -y //httpd-2.4.10编译过程要依赖于pcre-devel软件包
2、编译安装apr
# tar xf apr-1.5.0.tar.bz2
# cd apr-1.5.0
# ./configure --prefix=/usr/local/apr
# make && make install
3、 编译安装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
4、编译安装并配置httpd-2.4.10
4.1 编译安装
# rpm -qa httpd
httpd-2.2.15-45.el6.centos.x86_64
# yum remove httpd -y //卸载之前rpm包安装的httpd
# tar xf httpd-2.4.10.tar.bz2
# cd httpd-2.4.10
# ./configure --prefix=/usr/local/apache24 --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-cgid --enable-rewrite --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-mpm=event --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
# make && make install
//sysconfdir=/etc/httpd24 指定配置文件安装位置
//enable-so 支持动态共享模块(DOS),如果没有这个模块PHP将无法与apache结合工作
//enable-ssl 支持ssl功能
//enable-proxy 支持代理
//enable-proxy-fcgi 支持fcgi
// enable-cgi 支持cgi
//enable-rewrite 支持URL重写
//enable-modules=most 启用哪些模块
//enable-mpms-shared=all 支持多道处理模块
//with-mpm=event 设定默认模块为prefork模块
//with-zlib 支持压缩库,便于页面压缩后的发送和接收,互联网传播时可节约带宽
//with-pcre 支持cre扩展的正则表达式,支持更强大的正则表达式分析功能
4.2 修改httpd.pid路径,默认安装时的路径在/usr/local/apache24/logs
# /usr/local/apache24/bin/apachectl start
# /usr/local/apache24/bin/apachectl stop
# vim /etc/httpd24/httpd.conf
pidfile "/var/run/httpd.pid" //在ServerRoot "/usr/local/apache24" 下面添加这一行
# /usr/local/apache24/bin/apachectl start
# ls /var/run //发现httpd.pid出现
4.3 修改PATH环境变量,让系统可以直接使用apachectl的相关命令
# vim /etc/profile.d/httpd24.sh
export PATH=/usr/local/apache24/bin:$PATH
编辑配置文件(全局有效且重启shell后依然有效)此时,环境变量不会立即生效,但是对新登录的用户有效,然后新用户登录进行验证
4.4、提供SysV服务脚本/etc/rc.d/init.d/httpd24
# vim /etc/rc.d/init.d/httpd24 //内容如下
#!/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/httpd24/httpd.conf
# config: /etc/sysconfig/httpd24
# pidfile: /var/run/httpd.pid
# Source function library.
. /etc/rc.d/init.d/functions
if [ -f /etc/sysconfig/httpd24 ]; then
. /etc/sysconfig/httpd24
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/apache24/bin/apachectl
httpd=${HTTPD-/usr/local/apache24/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
而后为此脚本赋予执行权限:
# chmod +x /etc/rc.d/init.d/httpd24
加入服务列表:
# chkconfig --add httpd24
开机自动启动
# chkconfig httpd24 on
启动服务
# service httpd24 start
# ss -tnl
附加:这里httpd编译安装时指定MPM模块类型为event,想要切换MPM中的类型可以编辑主配置文件即可。
例如:改为prefork模型
# vim /etc/httpd24/httpd.conf //编辑生成的主配置文件
Include /etc/httpd24/extra/httpd-mpm.conf //去掉注释符,启用extra模块
# LoadModule mpm_event_module modules/mod_mpm_event.so //注释掉当前模型
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so //改成要使用的MPM模块类型
重启httpd服务后发现MPM模块类型切换为prefork模型
# httpd -M
二、192.168.1.104主机,通用二进制格式安装mariadb-5.5.46
1、下载加压mariadb
下载平台对应的mysql版本至本地,下载地址为https://downloads.mariadb.com/archives/
# tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local
# cd /usr/local/
# ln -sv mariadb-5.5.46-linux-x86_64/ mysql
# cd mysql
2、创建用户以安全方式运行进程
# groupadd -r -g 306 mysql
# useradd -g 306 -r -u 306 mysql
# chown -R mysql:mysql /usr/local/mysql/*
3、准备数据存放的文件系统
新建一个逻辑卷,并将其挂载至特定目录即可。这里假设其逻辑卷的挂载目录为/mydata,而后需要创建/mydata/data目录做为mysql数据的存放目录。
# mkdir /mydata/data -pv
# chown -R mysql.mysql /mydata/data
# chmod 750 /mydata/data
4、初始化mysql-5.5.46
# cd /usr/local/mysql
# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
5、为mysql提供主配置文件
# cd /usr/local/mysql
# cp support-files/my-large.cnf /etc/my.cnf
# vim /etc/my.cnf
# cat /proc/cpuinfo //查看CPU个数
并修改此文件中thread_concurrency的值为你的CPU个数乘以2,比如这里使用如下行:
thread_concurrency = 2
另外还需要在[mysqld]下添加数据文件的存放位置:
datadir = /mydata/data
6、为mysql提供sysv服务脚本
# cd /usr/local/mysql
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld
添加至服务列表:
# chkconfig --add mysqld
# chkconfig mysqld on
7、启动mysql服务
# service mysqld start
8、修改PATH环境变量,让系统可以直接使用mysql的相关命令
此时必须指明全路径才可以进入mysql命令行界面,想要直接使用mysql进入命令行,需要编辑配置文件(全局有效且重启shell后依然有效,对当前shell无效,需要登出再登入)
# vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
为了使用mysql的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤:
9、输出mysql的man手册至man命令的查找路径
编辑/etc/man.config,添加如下行即可:
MANPATH /usr/local/mysql/man
10、输出mysql的头文件至系统头文件路径/usr/include
# ln -sv /usr/local/mysql/include /usr/include/mysql
11、输出mysql的库文件给系统库查找路径
# echo ‘/usr/local/mysql/lib‘ > /etc/ld.so.conf.d/mysql.conf
12、系统重新载入系统库
# ldconfig
13、创建和授权wordpress和phpMyAdmin用户
MariaDB [(none)]> CREATE DATABASE wpdb; //创建wordpress数据库
MariaDB [(none)]> GRANT ALL ON wpdb.* TO [email protected]‘192.168.1.%‘ IDENTIFIED BY ‘wppass‘; //授权wordpress用户
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> CREATE DATABASE pma; //创建phpMyAdmin数据库
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL ON pma.* TO [email protected]‘192.168.1.%‘ IDENTIFIED BY ‘pmapass‘;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
三、192.168.1.103主机,编译安装php-5.4.40
1、解决依赖关系
自行配置好yum源(系统安装源及epel源)后执行如下命令:
# yum groupinstall "Server Platform Development" "Development tools" -y
# yum install bzip2-devel libmcrypt-devel libxml2-devel mhash mhash-devel libmcrypt-devel libmcrypt -y
2、编译安装php-5.4.40
下载源码包至本地目录,下载位置 http://mirrors.sohu.com/php/。
# tar xf php-5.4.40.tar.bz2
# cd php-5.4.40
# ./configure --prefix=/usr/local/php --with-openssl --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts
要想支持fpm时,需要去掉 --with-apxs2=/usr/local/apache/bin/apxs , 添加 --enable-fpm ,注意两者不能同时存在。
说明:如果使用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
# make -j 4 && make install
3、为php提供配置文件:
# cp php.ini-production /etc/php.ini
4、配置php-fpm
为php-fpm提供SysV init脚本,并将其添加至服务列表:
# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
# chmod +x /etc/rc.d/init.d/php-fpm
# chkconfig --add php-fpm
# chkconfig php-fpm on
为php-fpm提供配置文件:
# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
编辑php-fpm的配置文件:
# vim /usr/local/php/etc/php-fpm.conf
配置fpm的相关选项为你所需要的值,并启用pid文件:
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pid = run/php-fpm.pid //启用
listen = 192.168.1.103:9000
listen.allowed_clients = 192.168.1.102
然后就可以启动php-fpm了,查看9000端口。
# service php-fpm start
四、192.168.1.103主机,安装xcache,为php加速:(可以支持php-5.4的xcache版本必须为2.0+)
下载地址 https://xcache.lighttpd.net/pub/Releases
1、编译安装
# tar xf xcache-3.2.0.tar.bz2
# cd xcache-3.2.0
以上是关于CentOS 6系统的 lamp (编译安装,模块或php-fpm)详解的主要内容,如果未能解决你的问题,请参考以下文章 CentOS 6系统的 lamp (编译安装,模块或php-fpm)详解