实验拓扑

【Linux】以分层架构方式搭建LAMP_第1张图片

实验需求

要求php以FastCGI模式和httpd协同工作并且能够链接MySQL数据库

访问静态页面内容直接有httpd处理

访问动态页面交由PHP处理


实验规划

所有linux系统使用:CentOS 2.6.32-431.el6.x86_64

Apache版 本 号 为:httpd-2.4.16.tar.gz

PHP   版 本 号 为:php-5.6.11.tar.bz2

MySQL 版 本 号 为:mysql-5.5.24.tar.gz


httpd服务器地址为:192.168.10.150/24

PHP  服务器地址为:192.168.10.200/24

MySQL服务器地址为:192.168.10.250/24


实验步骤


为了实验方便建议关闭防火墙和selinux

[root@CentOS-1 ~]# service iptables stop

[root@CentOS-1 ~]# setenforce 0


安装httpd服务


安装编译工具以及依赖包

wKiom1amO7XzNDi4AAAPBBRL85c360.png

编译安装apr和apr-util

创建apr和apr-util的安装目录

wKiom1amNuvzOBxBAAAW7oy5mRs924.png

将apr和apr-util解压

wKioL1amN9DRu3uDAAAla3sxVKA890.png

切换至apr源码目录并配置apr安装路径

wKiom1amN-mDVxBAAAAaP_XK0Z0281.png配置完成后如果最后几行没有报错即可“make && make install”编译并安装了

【Linux】以分层架构方式搭建LAMP_第2张图片

切换至apr-util源码目录并配置相关参数,由于apr-util依赖于apr所以要指定apr所在目录

【Linux】以分层架构方式搭建LAMP_第3张图片如果配置无报错即可编译并安装

wKioL1amOiLjLwwGAAAPW4eERpA654.png

创建apache安装目录,并解压其压缩包,切换路径到源码包所在目录

wKiom1amOpazS3jBAAA1eVsckzc830.png配置httpd相关参数

【Linux】以分层架构方式搭建LAMP_第4张图片

./configure 

--prefix=/usr/local/apache \     //指定安装路径

--enable-so \               //支持动态共享模块

--enable-rewirte \            //支持URL重写

--enable-cgi \    //支持CGI

--enable-cgid \   //使用event或者worker的mpm模式要启用cgid

--enable-modules=most \ 

--enable-mods-shared=most \         //启动共享模块

--enable-mpms-shared=all \         //支持所有mpm模式

--with-apr=/usr/local/apr \    //指定apr位置

--with-apr-util=/usr/local/apr-util      //指定apr-util位置


如果配置没有报错则直接编译并安装

wKiom1amPkSyoOqwAAANCGviui0054.png将httpd加入到service管理中

wKiom1amP1jSSFqrAAAlipBvX1g160.png

编辑httpd的service启动脚本在开头添加如下2行内容

wKioL1amP-vgAw2VAAAPiBv8OmU834.png【Linux】以分层架构方式搭建LAMP_第5张图片

将httpd的service启动脚本添加执行权限

wKiom1amQHziz_t0AAAbcmC5N1s123.png

将httpd加入到chkconfig设置开机自启动

wKiom1amQDzx3tAOAAAmQj6wNsU847.png

启动httpd服务

【Linux】以分层架构方式搭建LAMP_第6张图片由于没有定义域名所以会报一个警告这个是正常的,可以通过netstat命令过滤一下80端口发现是正在监听


访问页面测试httpd是否工作正常

【Linux】以分层架构方式搭建LAMP_第7张图片


安装MySQL数据库


安装cmake等编译工具以及相关依赖包

【Linux】以分层架构方式搭建LAMP_第8张图片

创建mysql用户并指定shell为“/sbin/nologin”

wKiom1amQ87CSpRaAAAPTOzaYNE554.png

创建mysql安装目录,解压mysql并切换至源码目录

wKioL1amRS2hQsr-AAAOuFNOR7M188.pngwKiom1amRFbSvlgaAAAnTPqjM14128.png

使用cmake配置mysql参数

【Linux】以分层架构方式搭建LAMP_第9张图片

cmake . \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \        //安装路径  

-DMYSQL_DATADIR=/home/mysql \           //数据文件路径,如果不指定就是安装目录下的data

-DSYSCONFDIR=/etc \                        //配置文件路径

-DWITH_INNOBASE_STORAGE_ENGINE=1 \        //安装INNOBASE存储引擎

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \            //安装ARCHIVE存储引擎

-DWITH_BLCAKHOLE_STORAGE_ENGINE=1 \            //安装BLACKHOLE存储引擎

-DWITH_READLINE=1 \                        //能够使用localinfile来批量导入mysql数据

-DWITH_SSL=system \                       //支持基于SSL的会话 

-DWITH_SSL=bundled \

-DWITH_ZLIB=system \                    //压缩库

-DWITH_LIBWRAP=0 \                        

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \        //默认套接字文件路径

-DEXTRA_CHARSETS=all \                        //支持的字符集

-DDEFAULT_CHARSET=utf8 \                    //默认的字符集

-DDEFAULT_COLLATION=utf8_general_ci         //字符集排序规则



如果配置无误即可编译安装

wKioL1amSCWSgzvvAAANCISW-vg789.png


将mysql所有文件属主修改为mysql组

wKiom1amSfeAL6BnAAAaiRCxU3M966.png初始化数据库

wKioL1amSszjmg5TAAAqak9fkFg964.png

创建配置文件,如果已有则直接覆盖

wKiom1amSsiyd1ktAAAltwVV0EY946.png添加service启动脚本并赋予执行权限

加入chkconfig设置开机启动

wKiom1amS0KDiSRhAAAiu_nU6ao411.png

将mysql加入到$PATH路径中

wKiom1amXt_DAFr2AAAS9m7By4k903.png

wKiom1amXrTxcOU0AAAMEMakMU0317.png

wKiom1amXxnAknYuAAAZ0OJ6-OA426.png

启动mysql数据库,默认监听在TCP的3306端口

wKioL1amS7WiMEvaAAA_XJcNWkM086.png



安装php


安装编译工具

wKioL1amSXDhyU2KAAAQDC7AXLI997.png

安装GD库

【Linux】以分层架构方式搭建LAMP_第10张图片

创建php安装目录,并将压缩包解压然后切换至源码包所在目录

wKioL1amTIzTzUAnAABB2XCzjZ4202.png配置php参数

【Linux】以分层架构方式搭建LAMP_第11张图片


./configure --prefix=/usr/local/php \            //指定安装路径

--enable-fpm \                            //启用fpm模式

--with-mysql=mysqlnd \                     //如果要想连接数据库就需要加上这三项

--with-mysqli=mysqlnd \

--with-pdo-mysql=mysqlnd \

--with-openssl \//开启openssl功能

--enable-mbstring \

--with-freetype-dir \//加载freetype字体库

--with-jpeg-dir \//支持图片

--with-png-dir \

--with-zlib \//让数据文件先压缩在传送

--with-libxml-dir=/usr \       //指定xml库目录

--enable-xml \//开启xml支持

--enable-sockets \//让PHP支持套接字

--with-config-file-path=/etc \//PHP配置文件位置

--with-config-file-scan-dir=/etc/php.d \//关联子配置文件的位置

--with-bz2 


如果配置过程没有任何报错则可以编译并安装了

wKioL1amTnWh8oggAAAVrL4g6eQ061.png


创建PHP配置文件

wKioL1amUGmg4M1vAAAXdAlPjFk073.png

为php-fpm提供service启动脚本,并添加到chkconfig管理

【Linux】以分层架构方式搭建LAMP_第12张图片为php-fpm提供配置文件

wKioL1amU4jy8Kj7AAAdopki9Zw703.png编辑php-fpm配置文件

wKiom1amU6TRMyKYAAAO5gzyyTE342.png修改以下内容

wKiom1amU-Kj1MmQAAAbXqFbRko522.png【Linux】以分层架构方式搭建LAMP_第13张图片将监听的地址该为本机网卡IP

【Linux】以分层架构方式搭建LAMP_第14张图片


启动php-fpm

wKioL1amVf7A5pRVAABVfowHEIE621.png


配置httpd支持php


编辑httpd的配置文件

wKiom1amVi6i0n5eAAASUYbGz8U434.png搜索/AddType在此处添加如下两行内容

【Linux】以分层架构方式搭建LAMP_第15张图片搜索/DirctoryIndex,插入如下内容

【Linux】以分层架构方式搭建LAMP_第16张图片

将此行的注释#号去掉开启虚拟主机

【Linux】以分层架构方式搭建LAMP_第17张图片

将这2个模块启用,将其前面注释去掉

【Linux】以分层架构方式搭建LAMP_第18张图片将默认的网页文档路径注释掉

【Linux】以分层架构方式搭建LAMP_第19张图片

编辑虚拟主机配置文件

wKiom1amWWOQYq50AAAQWquLY5A706.png

输入如下内容

【Linux】以分层架构方式搭建LAMP_第20张图片

ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.10.200:9000/opt/www/$1

//匹配以/开头“.php”结尾的文件交有192.168.10.200:9000(PHP服务器)处理,$1表示调用前面括号中的内容“(.*\.php)$”


重启httpd服务

wKiom1amXCKDmeHxAAAKi_b94vU600.png


在PHP服务器中创建php测试页

wKioL1amXLbQFrdYAAAcrHPEPzQ845.png

输入如下内容

【Linux】以分层架构方式搭建LAMP_第21张图片


访问测试是否能够工作正常


由此可见PHP页面工作正常

【Linux】以分层架构方式搭建LAMP_第22张图片

测试httpd自身的静态页面

【Linux】以分层架构方式搭建LAMP_第23张图片

切换至数据库服务器授权一个用户


进入数据库

wKioL1amX7Owt8HHAAAJZSnkzBk916.png

添加tom账号,拥有所有权限,允许从任意主机登录(%表示任意IP),刷新授权信息

【Linux】以分层架构方式搭建LAMP_第24张图片



编辑PHP服务器的网页文件,测试数据库链接是否正常

wKioL1amYKyQpRkPAAARzxpaUb0162.png

输入一下内容

【Linux】以分层架构方式搭建LAMP_第25张图片

测试数据库是否链接正常

【Linux】以分层架构方式搭建LAMP_第26张图片


使用php-fpm模式和模块方式安装的区别在于模块安装用到php时直接将模块加载进来而php-fpm模式则是需要启动一个新的进程