CentOS 6编译安装lamp,并分别安装event模块方式和FPM方式的PHP
任务目标:
编译安装LAMP
要求(1) 安装一个模块化的PHP
要求(2) 安装一个FPM的PHP
注意PHP需要最后一个安装,因为需要前两者的支持.
所以这里的安装次序为
1.httpd
2.MariaDB
3.PHP
一、安装包组
# yum groupinstall "Development Tools" "Server Platform Development" –y
二、解决依赖关系
1.安装pcre
# yum install pcre-devel –y
2.安装apr
# tar xf apr-1.5.2.tar.bz2
# cd apr-1.5.2
# ./configure --prefix=/usr/local/apr
# make && make install
3.安装apr-util
# tar xf apr-util-1.5.4.tar.bz2
# cd apr-util-1.5.4
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make && make install
三、编译安装httpd 2.4
1.编译安装
# tar xf httpd-2.4.23.tar.bz2
# cd httpd-2.4.23
# ./configure --prefix=/usr/local/apache --sysconf=/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
各个参数解释:
--prefix=/usr/local/apache 设定安装目录为/usr/local/apache
--sysconf=/etc/httpd24 服务配置文件存放目录
--enable-so 支持DSO机制,开启模块化
--enable-ssl 支持ssl功能
--enable-cgi 支持CGI功能
--enable-rewrite 支持url重写
--with-zlib 支持传输压缩
--with-pcre 支持pcre正则表达式
--with-apr=/usr/local/apr 指明apr安装位置
--with-apr-util=/usr/local/apr-util/ 指明apr-util安装位置
--enable-modules=most 启用模块级别:most大多数
--enable-mpms-shared=all 编译所有支持的模式
--with-mpm=event 指明mpm模块为event模式
2.给新httpd提供一个脚本
# cd /etc/rc.d/init.d/
# cp httpd httpd24
# vim httpd24
大概42行
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}
保存退出
3.加入到服务列表
# chkconfig --add httpd24
4.移除hash缓存
# hash –r
5.将新的httpd添加到环境变量
# vim /etc/profile.d/httpd.sh
内容:
export PATH=/usr/local/apache/bin:$PATH
6.重读一下刚刚修改的环境变量
# . /etc/profile.d/httpd.sh
7.检查一下
# hash
8.检测配置文件语法
# httpd –t
9.先关掉2.2版本的httpd
# service httpd stop
10.启动2.4版本的httpd
# service httpd24 start
11.检查80端口
# ss -tnl
# ps aux | grep httpd
12.查看是否加载了event模块(mpm_event_module (shared))
# httpd –M
四、安装MariaDB
1.把安装包解压到/usr/local/下
# tar xf mariadb-5.5.53-linux-x86_64.tar.gz -C /usr/local
2.创建数据存放目录
# mkdir -pv /mydata/data
3.创建一个mysql用户
# useradd -r mysql
4.附加权限到数据存放目录
# chown -R mysql.mysql /mydata/data/
5.创建软连接到mysql
# cd /usr/local
# ln -sv mariadb-5.5.53-linux-x86_64/ mysql
6.更新所有文件的属主属组
# cd mysql/
# chown -R root.mysql ./*
7.初始化数据库
# scripts/mysql_install_db --datadir=/mydata/data/ --user=mysql
8.提供配置文件
# mkdir /etc/mysql
# cp support-files/my-large.cnf /etc/mysql/my.cnf
9.修改配置文件
# vim /etc/mysql/my.cnf
大概42行附近空白行添加
datadir = /mydata/data
innodb_file_per_table =on
skip_name_resolve = on
10.保存退出
11.创建服务
# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
12.启动mysql
# service mysqld start
13.检查3306
# ss –tnl
14.连接mysql测试
# /usr/local/mysql/bin/mysql
15.运行安全初始化脚本,包含root用户的密码创建
# /usr/local/mysql/bin/mysql_secure_installation
五、以模块方式编译安装php
1.解压缩安装包
# tar xf php-5.5.38.tar.bz2
2.安装依赖软件包bzip2-devel和epel源的libmcrypt-devel和libxml2-devel包
# yum install bzip2-devel libmcrypt-devel libxml2-devel –y
3.安装
# cd php-5.5.38
./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
各参数解释:
--prefix=/usr/local/php 默认安装路径
--with-mysql=/usr/local/mysql 指明mysql安装路径,如果有特定路径就使用等号"="后面跟上路径,没有则省略等号"="
--with-openssl 使用OpenSSL
--with-mysqli=/usr/local/mysql/bin/mysql_config 定义mysqli接口
--enable-mbstring 支持多字节字符串支持
--with-freetype-dir 支持各种字体
--with-jpeg-dir 支持处理jpeg格式图片
--with-png-dir 支持处理png格式图片
--with-zlib 支持压缩库
--with-libxml-dir=/usr 支持处理xml文档
--enable-xml 支持xml
--enable-sockets 使php支持以sockets方式通信
--with-apxs2=/usr/local/apache/bin/apxs (关键)表示把php编译成Apache的模块
--with-mcrypt 支持加密解密库
--with-config-file-path=/etc 定义php配置文件(php.ini)放置路径
--with-config-file-scan-dir=/etc/php.d 其他配置文件查找路径
--with-bz2 支持bz2格式加密
--enable-maintainer-zts 仅针对mpm为event和worker的情况,编译成zts模块,如果是prefork则不需要
# make && make install
4.把php的配置文件复制到/etc下
# cp php.ini-production /etc/php.ini
5.编辑httpd配置文件
# cd /etc/httpd24/
先备份
# cp httpd.conf{,.bak}
# vim httpd.conf
确保有这样一行(证明php5模块已加载):
LoadModule php5_module modules/libphp5.so
添加两行,用于支持php格式文档
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
设置默认文档页
修改 DirectoryIndex index.html
为 DirectoryIndex index.php index.html
6.已经设置完毕,下面测试一下:
6.1 重启httpd24
# service httpd24 restart
6.2 检查一下80端口
# ss -tnlp
6.3 看看是否已经有了php5_module
# httpd -M
6.4 修改一下默认页面为php格式,进行测试
# cd /usr/local/apache/htdocs/
# mv index.html index.php
# vim index.php
<?php
$conn=mysql_connect('127.0.0.1','root','');
if ($conn)
echo "Connect OK!";
else
echo "Failure.";
mysql_close();
?>
上面的数据库连接用户名和密码按照自己设置填写.
6.5 浏览器访问测试一下
OK已成功.
六、以fpm方式再安装PHP
1. 先清理掉之前解压的php目录
# rm -rf php-5.5.38
2. 重新解压
# tar xf php-5.5.38.tar.bz2
3. 编译安装
# cd php-5.5.38
# ./configure --prefix=/usr/local/php-f --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 --enable-fpm --with-mcrypt --with-config-file-path=/etc/php-f --with-config-file-scan-dir=/etc/php-f.d --with-bz2
这次与上一次配置的php最大不同就在于这个参数
--enable-fpm 表示是以fpm方式编译
所以就不能下面这个参数
--with-apxs2=/usr/local/apache/bin/apxs (表示把php编译成Apache的模块)
另外要把相关路径改一下名字,不要与刚刚安装的php目录重名,这里我们改为php-f
--prefix=/usr/local/php-f
--with-config-file-path=/etc/php-f
--with-config-file-scan-dir=/etc/php-f.d
# make -j 2 && make install
4.修改httpd配置
4.1 先停掉httpd
# service httpd24 stop
4.2我们需要一个默认的httpd.conf,先备份旧的,然后恢复到默认状态
# cd /etc/httpd24
# mv httpd.conf httpd.conf.mod_php
# cp httpd.conf.bak httpd.conf
4.3 为php提供配置文件
# mkdir /etc/php-f{,.d}
# cd
# cp php-5.5.38/php.ini-production /etc/php-f/php.ini
4.4 添加服务脚本
# cp php-5.5.38/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
4.5 添加执行权限
# chmod +x /etc/rc.d/init.d/php-fpm
# chkconfig --add php-fpm
4.6 修改配置文件
# cd /usr/local/php-f/etc
来一份默认配置文件
# cp php-fpm.conf.default php-fpm.conf
# vim php-fpm.conf
监听端口改为所有
listen = 0.0.0.0:9000
最大进程数
pm.max_children = 50
刚启动时进程数
pm.start_servers = 5
最少空闲进程数
pm.min_spare_servers = 2
最大空闲进程数
pm.max_spare_servers = 5
pid路径
pid = /usr/local/php-f/var/run/php-fpm.pid
5.启动php-fpm
# service php-fpm start
6.检查一下进程
# ps aux | grep fpm
看到已经有5个空闲进程
七.再次配置httpd2.4
1.编辑httpd24的配置文件
# cd /etc/httpd24
# vim httpd.conf
启用这两个模块
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
添加文件类型
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
找到 DirectoryIndex index.html
改为
DirectoryIndex index.php index.html
取消这一行的注释,启用虚拟主机配置文件
#Include /etc/httpd24/extra/httpd-vhosts.conf
2.配置虚拟主机
2.1 创建两个网站文件夹
# mkdir -p /web/vhosts/{pma,wp}
2.2 编辑配置文件,添加虚拟主机
# vim /etc/httpd24/extra/httpd-vhosts.conf
内容修改如下
<VirtualHost *:80>
ServerAdmin admin@buybybuy.com
DocumentRoot /web/vhosts/pma
ServerName www1.buybybuy.com
ErrorLog logs/pma.err
CustomLog logs/pma.access combined
DirectoryIndex index.html index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/web/vhosts/pma/$1
<Directory "/web/vhosts/pma">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin admin@buybybuy.com
DocumentRoot /web/vhosts/wp
ServerName www2.buybybuy.com
ErrorLog logs/wp.err
CustomLog logs/wp.access combined
DirectoryIndex index.html index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/web/vhosts/wp/$1
<Directory "/web/vhosts/wp">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
相关解释
ProxyRequests Off:关闭正向代理
ProxyPassMatch:把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://127.0.0.1:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。
八、安装phpMyadmin
1.把解压phpMyadmin后文件夹中的所有文档以及文件夹复制到/web/vhosts/pma/下
# cd
# cp -rf /phpMyAdmin-4.4.15.8-all-languages/* /web/vhosts/pma/
2.编辑phpMyadmin的配置文件
# cd /web/vhosts/pma
3.备份原始配置文件并编辑新的配置文件
# cp config.sample.inc.php config.inc.php
# vim config.inc.php
填入32位随机字码
$cfg['blowfish_secret'] = 'e2d8e1132dc737b3dc1f05cd44c0cc9e'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
4.测试
4.1重启httpd和php-fpm
# service httpd24 restart
# service php-fpm restart
4.2浏览器测试结果
5.这里可以用mysql的默认用户root直接登录测试.root账号的设置已经在前面第四节的第15部分设置.
6.另一个虚拟主机wp安装方式同理
CentOS 6编译安装lamp,并分别安装event模块方式和FPM方式的PHP的更多相关文章
- CentOS下编译搭建LAMP环境
搭建LAMP环境须知 搭建LAMP环境时,需要安装的所有软件都要按照一定的顺序安装,我们按照Apache->MySQL->PHP的顺序安装.但是在安装PHP之前,应先安装PHP5需要的最新 ...
- CentOS 7 编译部署LAMP环境
文章目录 1.需求以及环境准备 1.1.版本需求 1.2.环境准备 1.3.安装包准备 2.编译升级Openssl 2.1.查看当前Openssl版本 2.2.备份当前版本Openssl文件 2.3. ...
- CentOS 6.3下源码编译安装LAMP
一.简介 什么是LAMP LAMP是一种Web网络应用和开发环境,是Linux, Apache, MySQL, Php/Perl的缩写,每一个字母代表了一个组件,每个组件就其本身而言都是在它所代 ...
- CentOS 6.3下源码安装LAMP(Linux+Apache+Mysql+Php)环境
一.简介 什么是LAMP LAMP是一种Web网络应用和开发环境,是Linux, Apache, MySQL, Php/Perl的缩写,每一个字母代表了一个组件,每个组件就其本身而言都是在它所代 ...
- CentOS 6.3 源码安装LAMP(Linux+Apache+Mysql+Php)环境
一.简介 什么是LAMP LAMP是一种Web网络应用和开发环境,是Linux, Apache, MySQL, Php/Perl的缩写,每一个字母代表了一个组件,每个组件就其本身而>言都是在它所 ...
- CentOS 6.3下源码安装LAMP(Linux+Apache+Mysql+Php)环境【转载】
本文转载自 园友David_Tang的博客,如有侵权请联系本人及时删除,原文地址: http://www.cnblogs.com/mchina/archive/2012/11/28/2778779.h ...
- CentOS 下源码安装LAMP环境
一.简介 什么是LAMP LAMP是一种Web网络应用和开发环境,是Linux, Apache, MySQL, Php/Perl的缩写,每一个字母代表了一个组件,每个组件就其本身而言都是在它所代 ...
- CentOS 6.5下源码安装LAMP(Linux+Apache+Mysql+Php)环境
---恢复内容开始--- 一.系统环境 系统平台:CentOS 6.5 (Final) Apache版本:httpd-2.2.31.tar.gz(最新版本2015-07-16) Mysql 版本:my ...
- CentOS 6.6安装LAMP和Subversion服务器
目标:在CentOS 6.6上安装LAMP,并安装最新版1.8.*的Subversion服务器,和Subversion权限管理前端iF.svnadmin. 安装步骤: 安装新一些版本LAMP步骤 1. ...
随机推荐
- Cookbook of QUnit
本篇文章是QUnit的简介,可以作为很好的入门教程.文章原址 介绍 自动化测试时软件开发过程中必不可少的一部分,而单元测试则是自动化测试的最为基本的一块,软件的每一个组件, 每一个功能单元都需要经过不 ...
- DotNet常用排序算法总结
数据结构和算法对一个程序来说是至关重要的,现在介绍一下几种算法,在项目中较为常用的算法有:冒泡排序,简单选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等7中算法. 现在介绍选择排序算法, ...
- NET开发学习项目资源
最近在整理资料时发现自己当初学习NET的一些项目资源,一直放在硬盘里不如拿来分享给初学者学习还是不错的. 项目代码为<精通ASP.NET20+SQL Server2005项目开发>书中源码 ...
- jQuery打造智能提示插件二(可编辑下拉框)
在上一篇 jQuery打造智能提示插件 上改进,增加下拉按钮,修复点击下拉区域外不隐藏BUG 效果 下拉按钮素材: js封装,注意红色部分为BUG修复,然后传入boxwidth不带px: /* /// ...
- IO多路复用之poll总结
1.基本知识 poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制.poll和selec ...
- 项目积累html标签
今天遇到一个不太常用都标签,网上以后慢慢记下项目中用到都东西. 1.<em> 标签 告诉浏览器把其中的文本表示为强调的内容.对于所有浏览器来说,这意味着要把这段文字用斜体来显示. 在文本中 ...
- 记一个简单的sql查询
在我们做各类统计和各类报表的时候,会有各种各样的查询要求.条件 这篇主要记录一个常见的统计查询 要求如下: 统计一段时间内,每天注册人数,如果某天没有人注册则显示为0 现在建个简单的表来试试 建表语句 ...
- QRCode
这个星期, 领导要我总结项目中用到的一些技术, 然后交付文档. 嘿嘿, 奉命整理. 二维码, 相信很多项目中都会要求生成这个, 然后由手机端去扫描, 或存储一些详情信息, 或存储一条链接, 可以快捷访 ...
- roleManager与角色管理授权
总览地址 https://msdn.microsoft.com/zh-cn/library/9ab2fxh0.aspx 其中基本概述是第一篇:了解角色管理 来自 <https://msdn.mi ...
- redis主从复制 从而 数据备份和读写分离
蜗牛Redis系列文章目录http://www.cnblogs.com/tdws/tag/NoSql/ 爬虫转载注明地址本文地址—博客园蜗牛 http://www.cnblogs.com/tdws/p ...