在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
enabled=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-2.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上利用PXE+Kickstart+Apache+DHCP实现无人值守安装
在CentOS6上利用PXE+Kickstart+Apache+DHCP实现无人值守安装 1.PXEServer:OS:CentOS6.9IP:172.16.25.69: (1)apache:# mo ...
- 在CentOS7上通过RPM安装实现LAMP+phpMyAdmin过程全记录
在CentOS7上通过RPM安装实现LAMP+phpMyAdmin过程全记录 时间:2017年9月20日 一.软件环境: IP:192.168.1.71 Hostname:centos73-2.sur ...
- 在CentOS6上配置MHA过程全记录
在CentOS6上配置MHA过程全记录 MHA(Master High Availability)是一款开源的MariaDB or MySQL高可用程序,为MariaDB or MySQL主从复制架构 ...
- SAP S4HANA1610/Fiori安装过程全记录
经历各种坑,从硬件到文件,终于安装成功. 有需要安装或使用S4HANA(含Fiori)的同学可以参考. 安装文件分享给大家 链接:http://pan.baidu.com/s/1mi7LfIS 密码: ...
- CentOS 6.5系统使用yum方式安装LAMP环境和phpMyAdmin详细过程
介绍如何在CentOs6.2下面使用YUM配置安装LAMP环境,一些兄弟也很喜欢使用编译的安装方法,个人觉得如果不是对服务器做定制,用yum安装稳定简单,何必去download&make&am ...
- C#打包制作安装程序过程全记录
该文是根据网上的文章并结合自己实际打包的过程而整理的. 开发平台:VisualStudio2005中文版. 步骤如下: 1. 创建一个安装向导项目或安装部署项目 新建项目-〉其他项目类型-〉安装与部署 ...
- 源码编译mysql 5.5+ 安装过程全记录
前言:从mysql 5.5版本开始,mysql源码安装开始使用cmake了,编译安装跟以前的版本有点不一样了. 一,安装步骤: 1.安装前准备工作 a.下载mysql源代码包,到mysql下载页面选择 ...
- 000 上传本地库到Github远程库过程全记录
20220613 Github上新创建了一个CsImage库,之后本地创建了一个对应名称的目录,并创建本地库,进行了上传操作,记录一下过程 1.Github上CsImage库创建完成 Github上创 ...
- 在centos6上实现编译安装lamp和wordpress,并编译xcache
author:JevonWei 版权声明:原创作品 软件环境: centos6.9 httpd-2.4.27.tar.bz2 apr-1.5.2.tar.bz2 apr-util-1.5.4.tar. ...
随机推荐
- HDU 6184 Counting Stars 经典三元环计数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6184 题意: n个点m条边的无向图,问有多少个A-structure 其中A-structure满足V ...
- 那么 Appium 到底是怎么工作的呢?
因为官网文档写的没有梯度,作为新手的我花了好几个小时硬是没看明白它是怎么工作的. 网上教程也基本都是翻译,所以结构很复杂.和其他技术耦合度很高,且没有说明. 我自己总结了一份超简单 Appium 自动 ...
- java锁机制
2.4 锁机制 临界区是指,使用同一个锁控制的同一段代码区或多段代码区之间,在同一时间内最多只能有一个线程在执行操作.这个概念与传统的临界区有略微的差别,这里不想强调这些概念上的差别,临 ...
- 交换机的Ethernet Channel
端口聚合也叫做以太通道(ethernet channel),主要用于交换机之间连接.由于两个交换机之间有多条冗余链路的时候,STP会将其中的几条链路关闭,只保留一条,这样可以避免二层的环 路产生.但是 ...
- 自制STP配置实验
本图使用Gns模拟器 实验需求: 1.要求利用vtp实现vlan同步设置 2.要求vtp server实现备份冗余 3.创建vlan 1~10要求MLSW1 是奇数vlan主根 MLSW2 是偶数vl ...
- 【C++】关于pow函数的用法
在C++中,pow有多个重载函数: 在dev中,pow(int,int)可以执行,但是在别的地方是不可以被编译的:会提示 :error C2668: “pow”: 对重载函数的调用不明确 可以看见,是 ...
- 201521123048 《Java程序设计》第4周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 1.多态:使用单一接口操作多种类型的对象. 2.private修饰属性,public修饰方法 ...
- 201521123069 《Java程序设计》第1周学习总结
1. 本章学习总结 Java语言的发展.特点(面向对象.简单性.平台无关性) 认识并区分JVM(Java虚拟机),JRE(Java执行环境),JDK(Java开发工具包) 安装好JDK,设置Path变 ...
- 201521123092《java程序设计》第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...
- eclipse 项目引入第三方jar包 3种方法
我们在用Eclipse开发程序的时候,经常要用到第三方jar包.引入jar包不是一个小问题,由于jar包位置不清楚,而浪费时间.下面配图说明3种Eclipse引入jar包的方式. 1.最常用的普通操作 ...