LAMP系列之(php-fpm模式)分布三台机器部署

LAMP系列之(php-fpm模式)分布三台机器部署

现在我们需要做一个实验,就是把apache , php-fpm , mariadb ,分别安装在3台机器上,协同工作具体如下:

192.168.42.150  apache
192.168.42.151  php-fpm
192.168.42.152  mariadb

关闭防火墙
关闭selinux

分别给这3台机器设定好IP和主机名及时间同步

1.在[192.168.42.152 mariadb]安装mariadb

yum install mariadb-server -y

1).配置server.cnf

cp /etc/my.cnf.d/server.cnf{,.back}
vim /etc/my.cnf.d/server.cnf    ##mariadb服务器端配置文件##
[mysqld]        ##以下项是优化项目可根据需要选择## 
innodb_file_per_table=1 ##使用独立表空间模式(建议使用)##
skip_name_resolve=1  ##禁止域名反向解析(可选)##

2).安装完成后安全配置

systemctl start mariadb.service     ##启动mariadb服务
systemctl enable mariadb.service    ##设置为开机启动##
mysql_secure_installation           ##安装完成后安全初始化,添加root密码,删除匿名登录账户,禁止远程使用root用户登录,删除测试数据库和使用##

我这里直接用`mysqladmin -uroot -p password "root"`更改密码了

2.在[192.168.42.151 php-fpm]安装php模块及php-fpm

yum -y install php-fpm php-mysql php-gd php-mbstring php-mcrypt

3.配置或者优化php-fpm

注意:必须创建用户apache

cp /etc/php-fpm.d/www.conf{,.back}
vim /etc/php-fpm.d/www.conf
listen = 192.168.42.151:9000  #监听本机9000端口,不能是127.0.0.1了,需要换成本机ip地址
listen.allowed_clients = 192.168.42.150 #授权允许192.168.42.150连接
pm.max_spare_servers = 15
pm.status_path = /pmstatus
ping.path = /ping
ping.response = pong
默认/var/lib/php/session目录不存在,所以我们要创建此目录
mkdir -pv /var/lib/php/session
chown  apache:apache  /var/lib/php/session

4.启动php-fpm

systemctl start php-fpm.service
ss -tnl

State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
LISTEN     0      128            *:22                         *:*                  
LISTEN     0      100    127.0.0.1:25                         *:*                  
LISTEN     0      128    127.0.0.1:9000                       *:*                  
LISTEN     0      50             *:3306                       *:*                  
LISTEN     0      128           :::22                        :::*                  
LISTEN     0      100          ::1:25                        :::*

5.安装httpd

yum install httpd -y
httpd -M 确保有 proxy_fcgi_module (shared)模块
否则无法与后端程序进行通信

6.创建应用目录和授权目录

注意:因为我们此次试验是将apache 和 php-fpm 分开部署的, 用户访问的动态资源请求会直接转到 [192.168.42.151 php-fpm]主机上, 因此我们的网站目录也需要部署到 [192.168.42.151 php-fpm]主机上 也就是说,网站目录在[192.168.42.151 php-fpm]和[192.168.42.150 apache]各有一份 那么我们怎么做呢.只需要在[192.168.42.150 apache]部署完成以后直接推送到[192.168.42.151 php-fpm]主机上

scp -rp /application  root@192.168.42.151:/    即可,原理讲完了,我们来部署吧

在 [192.168.42.150 apache]主机上

mkdir -p /applicpation/www
chown -R apache:apache /application/www
在www目录里面创建test目录,并创建一个index.php测试页
cd /application/www
mkdir test && cd test
vim index.php
<?php
   phpinfo();
?>

7.配置代理和httpd虚拟主机,并支持PHP

注意:因为我们此次试验是将apache 和 php-fpm 分开部署的,代理需要写php-fpm主机的ip地址

vim  /etc/httpd/conf.d/test.conf

<VirtualHost *:80>
    ServerName www.test.com
    DocumentRoot /application/www/test
    ProxyRequests Off #关闭正向代理
    DirectoryIndex index.php
    #反代
    ProxyPassMatch ^/(.*\.php)$  fcgi://192.168.42.151:9000/application/www/test/$1
    <Directory "/application/www/test">
        #Options None
        #使用符号链接
        Options FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>        
</VirtualHost>

8.添加hosts解析

vim /etc/hosts
#add
192.168.42.135 www.test.com

注意:因为我们此次试验是分开部署的,为了保持统一,我们需要将三台主机的hosts文件全部统一 别忘了推送网站目录哦

9.浏览器访问 www.test.com [ ok ]

10.安装phpmyadmin

cd /application/www/
wget -c  http://192.168.42.26/install_package/down/phpMyAdmin-4.0.10.20-all-languages.tar.gz
tar xvf phpMyAdmin-4.0.10.20-all-languages.tar.gz
ln -s phpMyAdmin-4.0.10.20-all-languages  phpmyadmin
cd phpmyadmin
cp config.sample.inc.php  config.inc.php
vim config.inc.php
#更改一下配置项,在随机码后面随便添加随机码
$cfg['blowfish_secret'] = 'a8b7c6dfs433'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
$cfg['Servers'][$i]['host'] = 'mariadb'; #hosts文件有解析

注意:因为我们是将mariadb分开部署的,所以我们访问phpmyadmin是属于访问远程的数据库,需要有远程登录账号 因此我们需要在mariadb主机上创建远程用户

grant all privileges on *.* to 'srayban'@'192.168.42.%' identified by '123456' with grant option;
flush privileges ;

11.给phpmyadmin添加虚拟主机和hosts解析,最终的host文件如下

注意:别忘记了把hosts文件推送到其他两台机器上哦

********************hosts文件*****************************

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.42.150  www.test.com apache www.phpmyadmin.com
192.168.42.151  php-fpm
192.168.42.152  mariadb

********************phpmyadmin配置文件*****************************

vim  /etc/httpd/conf.d/phpmyadmin.conf

<VirtualHost *:80>
    ServerName www.phpmyadmin.com
    DocumentRoot /application/www/phpmyadmin
    ProxyRequests Off #关闭正向代理
    DirectoryIndex index.php
    #反代
    ProxyPassMatch ^/(.*\.php)$  fcgi://192.168.42.151:9000/application/www/phpmyadmin/$1
    <Directory "/application/www/phpmyadmin">
        #Options None
        #使用符号链接
        Options FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>        
</VirtualHost>

12.再次提醒

推送hosts文件到其他两台机器
scp -rp /etc/hosts root@192.168.42.151:/etc/
scp -rp /etc/hosts root@192.168.42.152:/etc/


推送application目录到php-fpm主机上
scp -rp /application root@192.168.42.151:/

13.重启apache,重启php-fpm

在浏览器访问www.phpmyadmin.com 就能访问以web界面的方式操作数据库了

原创文章,作者:srayban,如若转载,请注明出处:http://www.178linux.com/77414

(0)
sraybansrayban
上一篇 2017-06-03 14:17
下一篇 2017-06-03 15:15

相关推荐

  • 文件系统层次标准FHS

    FHS针对目录树架构仅定义出三层目录下应该放置哪些数据,分别是下面三个目录: /(根目录):与开机系统有关; /usr(unix software resource):与软件安装执行有关; /var(variable):与系统运作过程有关。   下面分别对上述三层目录进行详细的阐述。   (1) /(根目录)   根目录是整个系统最重要的一个目录,…

    Linux干货 2016-10-19
  • 使用NFS服务和samba部署wordpress

             centos 7.3主机一台   centos 6.8主机一台  使用yum安装的mysql(7以后使用yum装mysql叫mariadb)         我事先查看了一…

    2017-05-02
  • N22-第二周博客作业

    1、Linux系统上常见的文件管理类命令有哪些,其常用的使用方法及其示例演示。 常见的文件类管理命令:cp,rm,mv cp复制文件和目录: -f, –force 强制执行 -i 显示交互信息,默认cp 带-i选项 -r,-R 递归复制目录 -s 创建一个符号链接而不复制文件 -d 复制符号链接本身 cp aa.link qqq 相当于创建qqq…

    Linux干货 2016-08-22
  • shell脚本的各种循环

    For循环 For循环格式      For   变量名  in    列表    ;   do         &nb…

    Linux干货 2016-08-21
  • shell与kernel的理解

    Shell 的英文释义是外壳,与kernel 内核名词遥相呼应,一外一内,一壳一核。内核就像瑞士银行的金库,存放着客户的黄金等众多的(硬件)资产,闲杂人等(包括客户)当然是严格禁止入内的,而作为客户要存取金库中的资产则需要通过专门的特定管理人员代为操作完成,并把存取(操作)的结果呈现给客户。在Linux操作系统中,shell的职能就类似于金库的操作人员,客户…

    Linux干货 2016-02-14
  • linux启动和内核管理

    linux启动和内核管理:1. 加载BIOS 的硬件信息,获取第一个启动设备2. 读取第一个启动设备MBR 的引导加载程序(grub) 的启动信息3. 加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备4. 核心执行init 程序,并获取默认的运行信息5.init 程序执行/etc/rc.d/rc.sysinit 文件6. 启动核心的外挂模…

    Linux干货 2017-03-28