【Linux】以分層架構方式搭建LAMP

實驗拓撲
php

wKioL1amL82xUFFBAAAw0lSsKzI218.png

實驗需求mysql

要求php以FastCGI模式和httpd協同工做而且可以連接MySQL數據庫linux

訪問靜態頁面內容直接有httpd處理sql

訪問動態頁面交由PHP處理shell


實驗規劃數據庫

全部linux系統使用:CentOS 2.6.32-431.el6.x86_64apache

Apache版 本 號 爲:httpd-2.4.16.tar.gz服務器

PHP   版 本 號 爲:php-5.6.11.tar.bz2socket

MySQL 版 本 號 爲:mysql-5.5.24.tar.gzide


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」編譯並安裝了

wKiom1amOMyzFU0zAAG1693f5I0565.png

切換至apr-util源碼目錄並配置相關參數,因爲apr-util依賴於apr因此要指定apr所在目錄

wKiom1amOZDwVQbSAAApdcWcesg335.png若是配置無報錯便可編譯並安裝

wKioL1amOiLjLwwGAAAPW4eERpA654.png

建立apache安裝目錄,並解壓其壓縮包,切換路徑到源碼包所在目錄

wKiom1amOpazS3jBAAA1eVsckzc830.png配置httpd相關參數

wKiom1amPfeCVq1GAAAxJJvRnjY706.png

./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.pngwKiom1amP-7RMUndAADBy3Pu0-E231.png

將httpd的service啓動腳本添加執行權限

wKiom1amQHziz_t0AAAbcmC5N1s123.png

將httpd加入到chkconfig設置開機自啓動

wKiom1amQDzx3tAOAAAmQj6wNsU847.png

啓動httpd服務

wKioL1amQXSB4eQkAAESWDdp6Ic841.png因爲沒有定義域名因此會報一個警告這個是正常的,能夠經過netstat命令過濾一下80端口發現是正在監聽


訪問頁面測試httpd是否工做正常

wKioL1amQgGhydxbAABk6YE-7z8530.png


安裝MySQL數據庫


安裝cmake等編譯工具以及相關依賴包

wKiom1amR6LSDhAiAAAZmZBWSmQ822.png

建立mysql用戶並指定shell爲「/sbin/nologin」

wKiom1amQ87CSpRaAAAPTOzaYNE554.png

建立mysql安裝目錄,解壓mysql並切換至源碼目錄

wKioL1amRS2hQsr-AAAOuFNOR7M188.pngwKiom1amRFbSvlgaAAAnTPqjM14128.png

使用cmake配置mysql參數

wKioL1amR4Wj5BRxAABOgARlRnU684.png

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啓動腳本並賦予執行權限

wKioL1amS0yBu5VaAAAvJ***OcU817.png加入chkconfig設置開機啓動

wKiom1amS0KDiSRhAAAiu_nU6ao411.png

將mysql加入到$PATH路徑中

wKiom1amXt_DAFr2AAAS9m7By4k903.png

wKiom1amXrTxcOU0AAAMEMakMU0317.png

wKiom1amXxnAknYuAAAZ0OJ6-OA426.png

啓動mysql數據庫,默認監聽在TCP的3306端口

wKioL1amS7WiMEvaAAA_XJcNWkM086.png



安裝php


安裝編譯工具

wKioL1amSXDhyU2KAAAQDC7AXLI997.png

安裝GD庫

wKioL1amSc2ACeM5AAAqddXOVpc830.png

建立php安裝目錄,並將壓縮包解壓而後切換至源碼包所在目錄

wKioL1amTIzTzUAnAABB2XCzjZ4202.png配置php參數

wKioL1amUtXQMtKUAABBNZotOMs339.png


./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管理

wKioL1amUO3Ahrs2AAAy3MseY1Y051.png爲php-fpm提供配置文件

wKioL1amU4jy8Kj7AAAdopki9Zw703.png編輯php-fpm配置文件

wKiom1amU6TRMyKYAAAO5gzyyTE342.png修改如下內容

wKiom1amU-Kj1MmQAAAbXqFbRko522.pngwKiom1amVMqRcWjUAAC8Jk5s6SU566.png將監聽的地址該爲本機網卡IP

wKioL1amVXrC5lVjAACBWCBRxPs988.png


啓動php-fpm

wKioL1amVf7A5pRVAABVfowHEIE621.png


配置httpd支持php


編輯httpd的配置文件

wKiom1amVi6i0n5eAAASUYbGz8U434.png搜索/AddType在此處添加以下兩行內容

wKiom1amVuPCXaHJAACjW3na9Wk335.png搜索/DirctoryIndex,插入以下內容

wKioL1amV5TjtLaeAABv-8iJ56g379.png

將此行的註釋#號去掉開啓虛擬主機

wKiom1amV6rzNjRhAACNAKKEUUg439.png

將這2個模塊啓用,將其前面註釋去掉

wKiom1amWKWDEldxAABeBwN4noo201.png將默認的網頁文檔路徑註釋掉

wKioL1amWUzjqemPAACgQDrvqP4360.png

編輯虛擬主機配置文件

wKiom1amWWOQYq50AAAQWquLY5A706.png

輸入以下內容

wKioL1amW5LT_yzmAAB1XGQOTxk305.png

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

輸入以下內容

wKiom1amXKeCoGo9AAAYQ0UH0EI247.png


訪問測試是否可以工做正常


因而可知PHP頁面工做正常

wKiom1amXVaijg10AAEj0ieUzKc843.png

測試httpd自身的靜態頁面

wKioL1amXd7QkLW4AAA91WwDkXo409.png

切換至數據庫服務器受權一個用戶


進入數據庫

wKioL1amX7Owt8HHAAAJZSnkzBk916.png

添加tom帳號,擁有全部權限,容許從任意主機登陸(%表示任意IP),刷新受權信息

wKiom1amX-jBCCgUAACXq8MNIYA640.png



編輯PHP服務器的網頁文件,測試數據庫連接是否正常

wKioL1amYKyQpRkPAAARzxpaUb0162.png

輸入一下內容

wKioL1amYNnwv4BAAAAks-n8v98913.png

測試數據庫是否連接正常

wKiom1amYOKRInPiAAB2bXe9zsU123.png


使用php-fpm模式和模塊方式安裝的區別在於模塊安裝用到php時直接將模塊加載進來而php-fpm模式則是須要啓動一個新的進程

相關文章
相關標籤/搜索