使用KVM 實現apache + php-fpm + mariadb 分離部署

lamp分離部署

前面我已經寫過lamp的本機部署,可是如今生活中幾個服務是不可能部署在一臺服務器上的,因此,我接下來介紹lamp 的分離部署,下面的計劃圖
使用KVM 實現apache + php-fpm + mariadb 分離部署
如上圖,準備了三臺服務器(藍色字樣),分別運行mariadb,php-fpm,httpd,每臺機子處在不一樣的網段,他們有不一樣的網絡橋(紅色字樣)分開,這樣保證他們是互不相通的,每一個網橋之間經過堡壘機相連,實現不一樣的的網段的通訊,br0網橋能夠上網,最後由PC機訪問httpd服務器的80端口,展示在php-fpm裏的php程序,php程序讀取mariadb服務器的數據.php


實驗準備

如上圖,準備三臺虛擬機,在VMware裏運行的主機作堡壘機,在這個堡壘機裏使用kvm虛擬出三個虛擬主機,首先作出一個模板機,而後複製出三臺虛擬主機來,html

  1. 安裝所需包
    [root@centos7 ~]# yum -y install libvirt-daemon-kvm qemu-kvm virt-manager libvirt
    [root@centos7 ~]# systemctl restart libvirtd
  2. 製做虛擬磁盤文件,能夠經過基礎鏡像模板快速拷貝安裝
    [root@centos7 ~]# mkdir -pv /virtualmachines/centos7_base
    #建立qcow2鏡像文件,大小爲80G,預先配置爲元數據(metadata),兼容1.1,指定鏡像文件位置
    [root@centos7 ~]# qemu-img create -f qcow2 -o size=80G,preallocation=metadata,compat=1.1 /virtualmachines/centos7_base/centos7.img
  3. 準備鏡像,作模板機
    #提早準備好centos7 鏡像文件,這一步去VMware上去作,要求堡壘機安裝圖形化界面
    [root@localhost qemu]# virt-manager 
    #正常安裝centos7系統,把系統安裝在 /virtualmachines/centos7_base/centos7.img中便可
    #作完之後在virt-manger中,點擊運行centos7模板機,進去安裝一些必要軟件包,如nmcli,vim.base等
  4. 根據模板機作出三個虛擬主機
    [root@centos7 ~]# mkdir -pv /virtualmachines/{httpd,php,mysql}
    [root@centos7 ~]# cp /virtualmachines/centos7_base/centos7.img /virtualmachines/httpd/httpd.img
    [root@centos7 ~]# cp /virtualmachines/centos7_base/centos7.img /virtualmachines/php/php.img
    [root@centos7 ~]# cp /virtualmachines/centos7_base/centos7.img /virtualmachines/mysql/mysql.img
    [root@centos7 ~]# cd /etc/libvirt/qemu/
    #開始作虛擬主機,修改centos7.img鏡像文件便可
    [root@centos7 qemu]# cp centos7.5.xml httpd.xml
    [root@centos7 qemu]# vim httpd.xml 
    #修改以下四列選項
    <name>httpd</name>#虛擬主機名稱
    <uuid>a8dbf8ae-d691-4f00-835b-3c29ce8972a0</uuid>  #虛擬主機uuid,能夠用uuidgen生成
    <source file='/virtualmachines/httpd/httpd.img'/> #鏡像文件位置
    <mac address='52:54:00:cc:f6:d1'/>   #mac地址
    [root@centos7(nanyibo) qemu]# virsh define httpd.xml   #定義httpd.img鏡像配置文件
    [root@centos7(nanyibo) qemu]# virsh autostart httpd  #使其開機自動開啓
    [root@centos7(nanyibo) qemu]# virsh start httpd  #運行鏡像
    #剩下的兩個虛擬主機如法炮製
    [root@localhost networks]# virsh list  #查看虛擬主機的情況
    Id    Name                           State
    ----------------------------------------------------
    12    mysql                          running
    14    php                            running
    16    httpd                          running
  5. 建立http-fpm網橋
    [root@centos7 ~]# cd /etc/libvirt/qemu/networks/
    [root@centos7 networks]# cp default.xml httpfpm.xml
    [root@centos7 networks]# vim httpfpm.xml
    <network>
          <name>httpfpm</name> #修改網橋名
          <uuid>06a6d52e-6c03-4b29-bdf7-2cfe6d5e937a</uuid>  #修改uuid
          <bridge name='httpfpm' stp='on' delay='0'/>
          <mac address='52:54:00:c6:21:33'/>
          <ip address='10.0.0.1' netmask='255.255.255.0'>  #這裏使用一個網橋,設置網關和子網掩碼
            <dhcp>
              <range start='10.0.0.2' end='10.0.0.254'/>  #分配的IP地址範圍
            </dhcp>
          </ip>
        </network>
    [root@centos7 ~]# virsh net-define /etc/libvirt/qemu/networks/httpfpm.xml 
    [root@centos7 ~]# virsh net-start httpfpm #開啓網橋
    [root@centos7 ~]# virsh net-autostart httpfpm  #自啓動

    mysql -php網橋如法配置mysql

  6. 建立物理網橋,把物理網卡ens33和虛擬橋br0聯繫一塊兒,讓br0橋擁有ens33的IP,達成能夠和個人物理機相通的目的
    [root@centos7 ~]# nmcli connection add type bridge con-name br0 ifname br0  #添加網橋方案br0
    [root@centos7 ~]# nmcli connection modify br0 ipv4.method manual ipv4.addresses 172.18.254.39/16 ipv4.gateway 172.18.0.1 ipv4.dns 172.18.0.1#給橋設置IP(這個IP是堡壘機的ens33網卡的IP),網關,dns
    [root@centos7 ~]# nmcli connection up br0 #方案生效
    [root@centos7 ~]# nmcli connection add type bridge-slave ifname ens33 master br0  #設置主從方案
    [root@centos7 ~]# nmcli connection up bridge-slave-ens33 
    [root@centos7t networks]# nmcli connection show    #查看網橋是否生效
    NAME                UUID                                  TYPE      DEVICE   
    br0                 4f24bc16-320a-4fa9-9ead-fa6ff089ff2e  bridge    br0      
    bridge-slave-ens33  7a91f27a-f961-4ba4-a598-a87cc0063e6d  ethernet  ens33    
    ens38               be9e2b6b-674b-771d-7251-f3b49b3d23e0  ethernet  ens38    
    httpdfpm            bd0ca03f-071c-4422-8f1f-2231156defd0  bridge    httpdfpm 
    phpmysql            7666e396-9fc3-4a7a-8713-9566ac74147b  bridge    phpmysql 
    virbr0              7fd973b4-bf9a-453a-ad52-1e3477ff8b5b  bridge    virbr0   
    vnet0               5f89eb2d-6029-4d35-945d-4ac47b4be79c  tun       vnet0    
    [root@localhost networks]# ifconfig 
    br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.18.252.106  netmask 255.255.0.0  broadcast 172.18.255.255
        ...
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:9f:42:af  txqueuelen 1000  (Ethernet)
        ...
  7. 在httpd服務器配置
    [root@httpd ~]# yum -y install httpd
    [root@httpd conf.d]# vim /etc/httpd/conf/httpd.conf  #修改優先級
    <IfModule dir_module>
            DirectoryIndex index.php index.html
        </IfModule>
    [root@httpd conf.d]#    vim pma.conf #建立一個虛擬主機
    <VirtualHost *:80>
    DocumentRoot /vhosts/pam/htdocs
    #ProxyRequests Off
    ProxyPassMatch ^/(.*\.php)$  fcgi://10.10.0.11:9000/vhosts/pam/htdocs/$1
    <Directory /vhosts/pam/htdocs>
    Options None
    AllowOverride None
    Require all granted
    </Directory>
    </VirtualHost>
    [root@httpd conf.d]# httpd -t
    [root@httpd conf.d]#    mkdir -pv /vhosts/pam/htdocs
    [root@httpd conf.d]#    systemctl restart httpd
  8. 配置 php服務器
    [root@php ~]# yum -y install php-fpm php-mysql php-mbstring
    [root@php ~]# vim /etc/php-fpm.d/www.conf  #修改兩處便可
    listen = 0.0.0.0:9000  #是全部網卡監聽9000端口
    ;listen.allowed_clients = 127.0.0.1   #默認因此能夠鏈接
    [root@php ~]# ss -tnl |grep 9000.
    LISTEN     0      128          *:9000                     *:* 
    [root@php ~]# systemctl restart php-fpm
    [root@php ~]# mkdir -pv /vhosts/pam
    [root@php ~]# cd  /vhosts/pam
    [root@php pam]# tar xvf wordpress-4.9.4-zh_CN.tar.gz 
    [root@php pam]# ln -sv wordpress htdocs
  9. 配置mariadb服務器
    [root@mysql ~]# yum -y install mariadb-server
    [root@mysql ~]# vim /etc/my.cnf
    skip_name_resolve  #增長一條 ,關閉域名解析
    [root@mysql ~]# mysql
    MariaDB [(none)]> create database wpdb;
    MariaDB [(none)]> grant all on wpdb.* to 'wpuser'@'%' identified by 'wppass'  with grant option;#建立鏈接用戶
  10. 如今能夠訪問htppd服務器了
    在物理機瀏覽器輸入172.18.252.10就能夠訪問你的wordpress了,接着填入你的信息,完成安裝便可

至此,lamp分離部署實現.sql

相關文章
相關標籤/搜索