LAMP基于編譯安裝方式實現(httpd與php以fastcgi方式結合)3

概述

    在某些現有rpm包不能滿足需求的時候,可能需要編譯安裝LAMP環境,本篇就介紹下php與httpd結合方式為fastcgi方式結合時的編譯安裝,同時,由于httpd與php以module方式結合時,僅是編譯選項有所差別,故也會簡單說明下編譯選項的差異

環境

    CentOS7系統,IP為10.1.32.72

    httpd:編譯安裝,httpd-2.4

    php5:編譯安裝,php-5.4

    mariadb:通用二進制格式安裝,mariadb-5.5

第一章    通用二進制格式安裝mariadb-5.5

    1、下載通用二進制格式的mariadb軟件包,解壓到/usr/local目錄,并將解壓出來的目錄以軟鏈接方式連接到mysql目錄,方便管理

    blob.png    

    2、查看解壓出來的目錄中,關于安裝指南的說明,其中INSTALL-BINARY有詳細的安裝的步驟

    1.png

    3、添加系統用戶mysql,作為mariadb運行時的用戶身份,修改mysql目錄的屬主屬組為mysql用戶,讓該mariadb程序對目錄有寫權限

    blob.png

    4、創建mariadb數據存放目錄,修改目錄屬主屬組為mysql

    blob.png

    5、為mariadb提供配置文件,修改配置文件中的數據目錄指向我們準備的數據目錄

    blob.png    

    blob.png

    6、通用二進制格式安裝時,需要執行數據庫初始化腳本

    blob.png

    7、導出PATH環境變量,庫文件,頭文件

    blob.png

    blob.png    

    blob.png

    8、提供服務腳本,利用service命令啟動數據庫服務

    blob.png

    9、執行第一次啟動數據庫時的安全初始化命令,增強其安全性,測試數據庫是否工作正常

    blob.png

    blob.png

第二章    編譯安裝httpd-2.4

    1、準備編譯安裝的環境,安裝Development Tools和Server Platform Development

    blob.png

    2、安裝httpd程序依賴的程序包

    3.png    

    3、下載httpd-2.4源碼包,解壓,執行編譯安裝

    blob.png

    4.png

    編譯選項說明:

--prefix 指明程序安裝目錄
--sysconfdir  指明配置文件存放目錄
--enable-so  表示啟用模塊的動態裝卸載功能
--enable-ssl  表示啟用ssl功能,此項可能需要先安裝openssl-devel包
--enable-cgi  表示啟用支持cgi機制的功能
--enable-rewrite  表示支持url重寫功能
--enable-modules=most  表示啟用的http模塊有哪些,most表示啟動大多數
--enable-mpms-shared=all  表示以共享方式啟用哪些MPM模塊(prefork、worker、event),
    all表示所有的,此項為httpd2.4獨有的選項,因為只有2.4才支持MPM的動態裝卸載,2.2的MPM為靜態的,只有編譯進去,才能使用
--with-pmp=prefork  表示默認啟動的MPM是哪種
--with-zlib  表示依賴zlib,用于支持壓縮功能
	沒用=等號指明zlib的路徑,則系統會自動到被依賴的文件的默認的路徑去尋找,
	如果被依賴的文件不是rpm安裝,或不放在默認路徑下,則需要手動利用=等號指明路徑
--with-pcre  表示依賴的pcre,用于支持url重寫時支持正則表達式
--with-apr  依賴的apr
--with-apr-util   依賴的apr-util

    blob.png

    4、導出PATH環境變量,頭文件,man手冊所在路徑

    blob.png

    blob.png    

    blob.png

    5、啟動,測試httpd服務是否正常

    blob.png

第三章    編譯安裝php-5.4

    php基于module方式和基于fastcgi方式與httpd結合時的區別主要在編譯安裝php時所啟用的選項的不同,本處以php-fpm的方式(fastcgi)方式為主,介紹其編譯安裝過程,對module方式,也會有相應的說明

    1、安裝php依賴的軟件包

    11.png

    2、下載php源碼包,解壓,編譯安裝

    blob.png

    1.png

    編譯選項說明:

--prefix  指明安裝路徑
--with-mysql  指明依賴的mysql的路徑
--with-openssl  指明依賴的openssl,用于支持ssl通信
--with-mysqli  指明依賴的mysqli,mysqli是mysql的另外一個訪問接口
--with-freetype-dir  用于支持顯示的字體,可能會要安裝freetype-devel
--with-png-dir  用于顯示支持png格式的圖片
--with-jpeg-dir  用于顯示支持jpeg格式的圖片
--enable-mbstring  用于讓mysql支持中文
--with-zlib  用于支持壓縮功能
--with-libxml  用于分析xml格式
--enable-xml  表示支持xml
--enable-sockets  表示支持以sockets方式進行通信
--with-apxs2  指明apxs文件的路徑,apxs文件作用是第三方模塊可以借助該文件與httpd建立關聯關系
相當于一個銜接器的作用
--with-mcrypt  表示支持加密庫
--with-config-file-path=/etc  表示配置文件的存放路徑
--with-config-file-scan-dir=/etc/php.d  表示還要掃描哪個目錄下的.ini結尾的文件作為配置文件的組成部分
--with-bz2 表示支持bz2壓縮

如果httpd使用的MPM為worker或event,則需要啟用該選項
--enable-maintainer-zts  當啟用的MPM為worker或event時,需要啟動該選項,因為此處我們是以prefork的MPM,所以不用此項

--with  之類的選項,會到對應依賴的文件的默認安裝路徑下去尋找,如果程序不是安裝在默認路徑下,則需要用=等號指定位置,如果沒有安裝對應程序,則需要手動安裝,一般編譯時用到的程序是程序的devel包

如果httpd與php結合的方式為php-fpm,則需要將--with-apxs2=/usr/local/apache24/bin/apxs去掉,然后啟用--enable-fpm選項

    3、提供php的配置文件

        在源碼包解壓出來的目錄中,有提供php的樣例配置文件,復制到/etc/php.ini即可

    blob.png

    4、提供php-fpm的配置文件,提供php-fpm的服務腳本(如果php和httpd的結合方式為module,則無需此步驟)

        在源碼包解壓目錄下的sapi/fpm/目錄下有php-fpm.conf的配置文件樣例和php-fpm服務腳本樣例

        centos6風格的樣例為:init.d.php-fpm

        centos7風格的unit文件的樣例為:php-fpm.service

        centos7也支持使用centos6風格的init腳本

    1111.png

    

    5、根據需要,修改php-fpm配置文件和服務腳本

    blob.png

    blob.png

    

第四章    修改httpd的配置文件,讓其能支持反向代理php請求到php-fpm進行處理

    1、修改httpd配置文件,啟動反向代理相關模塊,重啟服務

    blob.png

    blob.png

    2、提供測試頁面,驗證lamp環境是否工作正常

        在httpd的配置文件中加入如下配置,將php的資源反代給php-fpm處理

        此示例中為編輯中心主機的配置,如果是虛擬主機,則可以在httpd主配置文件中啟用Include中相關虛擬主機的配置文件,然后根據實際需要編輯虛擬主機的配置文件

    blob.png

    blob.png

    blob.png

    blob.png

原創文章,作者:M20-1倪文超,如若轉載,請注明出處:http://www.www58058.com/51722

(0)
M20-1倪文超M20-1倪文超
上一篇 2016-10-17
下一篇 2016-10-17

相關推薦

  • 馬哥教育網絡21期+第八周練習博客

    馬哥教育網絡21期+第八周練習博客 # 1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 集線器:工作于ISO模型的物理層,防止由于距離遠,信號衰減; 網橋:用來連接不同網段,隔離沖突域; 二層交換機:二層交換機一般做為了三層交換機以下,利用設備mac地址進行通信,可以劃分vlan,隔離廣播域; 三層交換機:用于核心數據轉發,不…

    Linux干貨 2016-09-05
  • 從Linux小白到大牛——與狼共舞的日子9

    馬哥教育網絡班21期+第9周課程練習 1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; [root@localhost ~]# cat shell.sh  #!/bin/bash # declare…

    Linux干貨 2016-12-05
  • 系統基礎之文件管理grep練習題

    1、顯示/proc/meminfo文件中以大小s開頭的行; (要求:使用三種方式) [root@wen-7 ~]# grep -i "^s" /proc/meminfo  SwapCached:       &…

    Linux干貨 2016-08-07
  • MBR&GPT分區基本原理

    1、磁盤系統為什么要分區?     ?     優化I/O性能     ?     實現磁盤空間配額限制       &…

    Linux干貨 2016-08-30
  • SNAT,DNAT,端口轉發

    利用iptables配置NAT

    2018-03-01
  • 腳本編程之變量

    簡單跟大家介紹一下腳本編程中的變量。 大家都知道,腳本編程,主要由三個部分組成,一是命令,二是變量,三是控制語句。 變量的使用,可以讓腳本變得更加簡潔,高效。 我們主要簡單講一下變量的概念,變量的類型,變量的種類,不同種類的變量是如何定義的,變量的基本操作,以及變量的配置文件。 了解了這些,我們還可以聊一聊變量的高級操作。 首先,什么是變量? 通俗一點講:變…

    Linux干貨 2017-04-17
欧美性久久久久