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.www58058.com/77414

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

相關推薦

  • linux程序包管理

         首先linux軟件程序包和windows中的程序包是不兼容的,所以要在linux上使用windows上的程序,需要使用虛擬化工具。 庫級別的虛擬化:     linux : WinE     windows: Cywin 而程序開發語言有多…

    Linux干貨 2016-08-24
  • 文件通配符與命令行擴展

    * 匹配零個或多個字符 ? 匹配任何單個字符 ~ 當前用戶家目錄 ~mage 用戶mage家目錄 ~+ 當前工作目錄 ~- 前一個工作目錄 [0-9] 匹配數字范圍 [a-z] 字母 [A-Z]字母 ???????? [a-Z] 會以aAbBcC…小大小大列出,特別要注意 [wang] 匹配列表中的任何的一個字符 [^wang]匹配列表中的所有字…

    2017-11-12
  • Linux基礎知識之壓縮、解壓、歸檔工具

    壓縮、解壓、歸檔工具     壓縮格式:gz,bz2,xz,zip,Z 壓縮算法不同,壓縮比也會不同     1.compress/uncompress (.Z) compress [-dfvcVr] [-b maxbits] [file …] -d: 解壓縮,相當于 -c: 結果輸出至標準輸出, 不刪除原…

    Linux干貨 2016-08-19
  • shell腳本編程

    shell俗稱殼(用來區別于核),提供使用者使用界面(命令解析器),它接受用戶命令,然后調用相應的應用程序。 同時它還是一種程序設計語言,作為命令語言,它交互式解釋和執行用戶輸入的命令或者自動地解釋和執行預先設計好的一連串的命令。作為程序涉及語言,它定義了各種變量和參數,并提供了許多在高級語言中才具有的控制結構,包括循環和分支。 一、shell腳本基礎概念 …

    Linux干貨 2016-08-16
  • 進程的簡單概念

    什么是進程?進程是載入內存的一個指令集合。 PID代表進程號, centos7之前的第一個進程都為inet。centos7的第一個位systemd 進程優先級分為系統優先級和實時優先級,系統優先級0到139表示,值越大優先級越低。centos6用0到98表示值越大優先級越低 實時優先級用99到0表示,值越大優先級越高。 進程類型:守護進程和前臺進程。(倆者可…

    Linux干貨 2017-05-08
  • sed基礎

    sed 是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space ),接著用sed 命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出。Sed 主要用來自動編輯一個或多個文件, 簡化對文件的反復操…

    Linux干貨 2017-05-01
欧美性久久久久