在CentOS6上编译安装实现LAMP(php-modules)+phpMyAdmin安装过程全记录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在CentOS6上编译安装实现LAMP(php-modules)+phpMyAdmin安装过程全记录相关的知识,希望对你有一定的参考价值。
php与apache协作有三种模式:CGI、modules、FastCGI。
在CGI模式下,用户请求php文件时,apache会启动响应进程,调用php处理器处理请求,然后将结果返回给客户端。用户响应及处理由前端apache服务器完成;
在modules模式下,php解析器作为apache的一个模块,php处理器与web服务器一起运行处理用户请求。用户响应由apache处理,请求处理由apache与php处理器协同完成;
在fastcgi模式下,apache调用proxcy模块,发挥代理作用,直接将用户请求交由后端的php处理器(php-fpm)处理,然后将从后端php-fpm传来的处理结果返回给用户。用户响应由apache处理,请求处理php-fpm完成;
本文档演示php以modules模式工作的LAMP。
安装流程:httpd--->mariadb--->php--->phpMyadmin--->Xcache
时间:2017年9月24日
一、软件环境:
IP:192.168.1.67;
Hostname:centos69-2.surmount.net;
Linux:CentOS release 6.9 (Final);
Apache:httpd-2.4.27
MariaDB:mariadb-5.5.57
PHP:php-5.6.31
其他:apr-1.6.2;apr-util-1.6.0;phpMyAdmin-4.7.4-all-languages;xcache-3.2.0
二、LAMP搭建:
2-1:环境准备:
2-1-1:配置网络yum源:
# wget -O /etc/yum.repos.d/CentOS-Base-Ali.repo http://mirrors.aliyun.com/repo/Centos-6.repo
# sed -i ‘s/$releasever/6/g‘ /etc/yum.repos.d/CentOS-Base-Ali.repo
2-1-2:配置epel源:
# vim /etc/yum.repos.d/epel.repo
[epel]
name=epel
baseurl=https://mirrors.ustc.edu.cn/epel/6Server/x86_64/
gpgcheck=0
enable=1
2-1-3:配置服务器软件环境:
# yum groupinstall "Development Tools" "Server Platform Development" -y
2-2:安装及配置Apache:
2-2-1:解决httpd依赖关系,编译安装apr及apr-util:
# tar xf apr-1.6.2.tar.bz2
# cd apr-1.6.2
# ./configure --prefix=/usr/local/apr
# make -j 2 && make install
# tar xf apr-util-1.6.0.tar.bz2
# cd apr-util-1.6.0
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
......
xml/apr_xml.c && touch xml/apr_xml.lo
xml/apr_xml.c:35:19: error: expat.h: No such file or directory
make[1]: *** [xml/apr_xml.lo] Error 1 make[1]: *** Waiting for unfinished jo
......
--->报错后,分析可能缺少expat的开发库,安装expat-devel软件包后重新编译成功。
# yum install expat-devel -y
# rm -rf apr-util-1.6.0
# tar xf apr-util-1.6.0.tar.bz2
# cd apr-util-1.6.0
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make -j 2 && make install
--->附:apache官方对APR的介绍:
The mission of the Apache Portable Runtime (APR) project is to create and maintain software libraries that provide a predictable and consistent interface to underlying platform-specific implementations. The primary goal is to provide an API to which software developers may code and be assured of predictable if not identical behaviour regardless of the platform on which their software is built, relieving them of the need to code special-case conditions to work around or take advantage of platform-specific deficiencies or features.
2-2-2:安装httpd其他依赖软件包及需要用的软件包:
# yum install pcre-devel httpd -y
--->pcre-devel提供正则模式匹配库,httpd只为提供httpd启动脚本模板,用完后删除。
2-2-3:编译安装apache:
# tar xf httpd-2.4.27.tar.bz2
# cd httpd-2.4.27
# ./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 -j 2 && make install
--->MPM模块知识补充:
(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。
2-2-4:为httpd2.4提供启停脚本:
# cd /etc/rc.d/init.d
# cp httpd httpd24
# vim httpd24
......
apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/local/apache/bin/httpd}
......
pidfile=${PIDFILE-/usr/local/apache/logs/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd24}
......
# chkconfig --add httpd24
# chkconfig --list | grep httpd24
2-2-5:配置apache:
# httpd -t
--->注:此语法检测的为rpm包安装的httpd,非编译安装的httpd。
# vim /etc/profile.d/httpd.sh
export PATH=/usr/local/apache/bin:$PATH
# . /etc/profile.d/httpd.sh
# httpd -t
# hash
hits command
1 /usr/local/apache/bin/httpd
--->注:此语法检测编译安装的httpd。
# vim /etc/httpd24/httpd.conf
......
ServerName centos69.surmount.net:80
......
LoadModule deflate_module modules/mod_deflate.so
.....
--->修改主机名,启用deflate模块(作用:允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽。),其他暂时保持默认。
# httpd -t
2-2-6:启动apache、访问测试:
# /etc/init.d/httpd24 start
# ss -tanl
# ps -ef | grep httpd
root 31142 1 0 22:46 ? 00:00:00 /usr/local/apache/bin/httpd
daemon 31144 31142 0 22:46 ? 00:00:00 /usr/local/apache/bin/httpd
# httpd -M | grep event
mpm_event_module (shared)
--->event模块已启动
http://192.168.1.69
It works!
# yum remove httpd -y
--->配置完成,删除使用完毕的httpd软件包。
2-3:安装及配置MariaDB:
2-3-1:准备数据存储的文件系统:
# fdisk /dev/sdb
n--->p--->1--->Enter--->+2G--->t--->8e--->w
# partx -a /dev/sdb
# yum install lvm2 -y
# pvcreate /dev/sdb1
# vgcreate dbvg /dev/sdb1
# lvcreate -L 2G -n dblv dbvg
# yum install xfsprogs -y
# modprobe xfs
# modinfo xfs
# mkfs.xfs /dev/dbvg/dblv
# mkdir -pv /dbdata
# vim /etc/fstab
......
/dev/dbvg/dblv /dbdata xfs defaults 0 0
# mount -a
--->划分一个2GB的分区,创建lv,便于扩展,格式化为xfs文件系统,设置开机自动挂载,用于存储数据。
2-3-2:创建数据库用户:
# mkdir -pv /dbdata/data
# groupadd -r mysql
# useradd -g mysql -r -s /sbin/nologin -M -d /dbdata/data mysql
# chown -R mysql:mysql /dbdata/data/
2-3-3:初始化安装MariaDB:
# tar xf mariadb-5.5.57-linux-x86_64.tar.gz -C /usr/local
# cd /usr/local/
# ln -sv mariadb-5.5.57-linux-x86_64 mysql
# cd mysql
# chown -R root:mysql /usr/loca/mysql/*
# /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/dbdata/data
2-3-4:为MariaDB提供启停脚本:
# ls /dbdata/data/
# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
2-3-5:配置MariaDB:
# mkdir -pv /etc/mysql
# cp /usr/local/mysql/support-files/my-large.cnf /etc/mysql/my.cnf
# vim /etc/mysql/my.cnf
......
thread_concurrency = 8
datadir = /dbdata/data
innodb_file_per_table = on
skip_name_resolve = on
......
--->thread_concurrency的值为CPU个数的2倍;/dbdata/data为数据文件存储的位置;启用InnoDB引擎独立表空间;跳过域名反解。
2-3-6:启动MariaDB,设置DB的root用户密码:
# /etc/init.d/mysqld start
# /usr/local/mysql/bin/mysql
MariaDB [(none)]> use mysql
MariaDB [mysql]> UPDATE user SET password=PASSWORD(‘jingpei‘) WHERE User=‘root‘;
MariaDB [mysql]> SELECT User,Host,Password FROM user;
MariaDB [mysql]> DROP USER ‘‘@‘localhost‘;
MariaDB [mysql]> DROP USER ‘‘@‘centos69-2.surmount.net‘;
MariaDB [mysql]> FLUSH PRIVILEGES;
2-3-7:导出man手册文件、头文件、输出库文件、路径:
# vim /etc/man.config
......
MANPATH /usr/local/mysql/man
--->输出man手册至man命令的查找路径;
# ln -sv /usr/local/mysql/include/mysql /usr/include/mysql
--->输出头文件至系统头文件路径/usr/include;
# echo ‘/usr/local/mysql/include‘ > /etc/ld.so.conf.d/mysql.conf
# ldconfig
--->输出mysql的库文件给系统库查找路径;
# vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin/:$PATH
# source /etc/profile.d/mysql.sh
--->修改PATH环境变量,让系统可以直接使用mysql的相关命令;
2-4:安装及配置PHP(PHP为apache的模块):
2-4-1:安装PHP依赖的软件包:
# yum install bzip2-devel -y
2-4-2:编译安装PHP:
# tar xf php-5.6.31.tar.bz2
# cd php-5.6.31
# ./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 --with-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
......
configure: error: xml2-config not found. Please check your libxml2 installation.
--->出现一个error,分析可能是缺失libxml2-devel软件包:
# yum install libxml2-devel -y
# ./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 --with-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
......
libtool: warning: remember to run ‘libtool --finish /root/sources/php-5.6.31/libs‘
--->出现一个warning:
# make && make install
2-4-3:为php提供配置文件:
# cp php.ini-production /etc/php.ini
--->说明:
1、这里为了支持apache的worker或event这两个MPM,编译时使用了--enable-maintainer-zts选项。
2、如果使用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
2-4-4:配置apache,使其支持php:
# cd /etc/httpd24/
# cp httpd.conf{,.bak}
# vim httpd.conf
......
LoadModule php5_module modules/libphp5.so
.....
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
......
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
......
# /etc/init.d/httpd24 restart
# httpd -M | grep php
php5_module (shared)
2-4-5:建立php页面,并测试php与DB的连接:
# vim /usr/local/apache/htdocs/index.php
<?php
$link = mysql_connect(‘localhost‘, ‘root‘, ‘jingpei‘);
if (!$link)
{
die(‘Could not connect: ‘ . mysql_error());
}
echo ‘Connected successfully‘;
mysql_close($link);
phpinfo()
?>
2-4-6:访问测试:
http://192.168.1.67/index.php
Connected successfully
PHP Version 5.6.31
三、安装phpMyAdmin:
3-1:phpMyAdmin简介:
phpMyAdmin,是MySQL或MariaDB数据库的GUI管理工具,以php为基础,以web为工作形式。
3-2:phpMyAdmin安装:
# unzip phpMyAdmin-4.7.4-all-languages.zip
# mv phpMyAdmin-4.7.4-all-languages /usr/local/apache/htdocs/pma
# cd /usr/local/apache/htdocs/pma
# cp config.sample.inc.php config.inc.php
# vim config.inc.php
......
$cfg[‘blowfish_secret‘] = ‘1qazxsw23edcvfr45tgbnhy67ujm‘;
......
3-3:访问测试:
http://192.168.1.67/pma
四、安装xcache,为php加速:
4-1:安装前压力测试:
# ab -c 20 -n 100 http://192.168.1.67/pma/index.php
--->记录每秒响应次数,便于对比。
4-2:安装及配置xcache:
# tar xf xcache-3.2.0.tar.bz2
# cd xcache-3.2.0
# /usr/local/php/bin/phpize
# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
# make && make install
......
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20131226/
# mkdir -pv /etc/php.d
# cp /root/sources/xcache-3.2.0/xcache.ini /etc/php.d/
# vim /etc/php.d/xcache.ini
extension = /usr/local/php/lib/php/extensions/no-debug-zts-20131226/xcache.so
......
xcache.admin.enable_auth = off
# /etc/init.d/httpd24 restart
http://192.168.1.67/index.php
--->在打开的页面里找到xcache功能。
4-3:安装后压力测试及对比
--->测试环境:
CPU:Intel(R) Core(TM) i3-4160 CPU @ 3.60GHz
内存:512MB
# ab -c 20 -n 100 http://192.168.1.67/pma/index.php
......
Requests per second: 49.72 [#/sec] (mean)
......
# ab -c 20 -n 500 http://192.168.1.67/pma/index.php
......
Requests per second: 195.00 [#/sec] (mean)
--->经多次压力测试比较,大约提高3-4倍响应速度。
以上是关于在CentOS6上编译安装实现LAMP(php-modules)+phpMyAdmin安装过程全记录的主要内容,如果未能解决你的问题,请参考以下文章
实验-----在centos6上编译lamp基于fpm模式的应用wordpress