模塊化的php編譯amp和fpm化的php編譯amp;

編譯安裝amp

一,編譯環境前準備工作

(1) 系統環境:CentOS 6,7
    CentOS 6:apr, apr-util的版本為1.3.9,不適用于httpd-2.4;
    CentOS 7:apr, apr-util的版本為1.4+,
(2) 開發環境:
    Development Tools, Server Platform Development
(3) 各程序版本
    httpd: 2.2, 2.4
    php:5.3.x 5.4.x, 5.6.x
    mysql:5.1, 5.5, 5.6, 5.7, 5.8, 8.0
    mariadb:5.x, 10.x
(4) httpd和php結合的方式
    php的編譯選項:模塊化編譯的選項
    Modules:--with-apxs
        httpd MPM:編譯時需要考慮到httpd的mpm類型
            prefork:
            worker, event:專用選項--enable-maintainer-zts
    ftm:--enable-fpm

在CentOS7上編譯httpd-2.4, mariadb, php-5.4

安裝次序:httpd, mariadb, php

二,安裝MariaDB:安裝方式有三種

預制的包管理器格式的程序包:
    rpm包:
        os vendor:mariadb-devel 
        MariaDB官方
    通用二進制格式的程序包:有兩種版本,分別依賴于不同的glibc庫,要求版本一致
    源碼包編譯:較新版(5.5)以后的版本的mysql或mariaDB他們的項目構建工具為cmake, 而非流行的make;因此他們的編譯與傳統的make,makeinstall是有區別的
注意:無論哪種方式安裝都要安裝mariadb-devel包
通用二進制格式包的安裝配置步驟:
mget mariadb-5.5.46-linux-x86_64.tar.gz 下載mariadb包

]# yum groupinstall -y "Development Tools"," Server Platform Development" 安裝開發工具包   

]# tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local 此種方法要求安裝在/usr/local/mysql目錄下 所以直接展開至/usr/local

]# cd /usr/local/ cd到/usr/local目錄

]# ln -sv mariadb-VERSION-linux-x86_64 mysql 系統運行時有很多腳本都是指向/usr/local/mysql目錄的,為了方便以后升級將其mariadb連接至mysql.

模塊化的php編譯amp和fpm化的php編譯amp;

]# useradd -r mysql 運行程序需要一個系統用戶,這里創建一個

]# mkdir -pv /mydata/data 創建一個目錄作為數據目錄,在生產環境中數據一般都是放在一個有冗余的設備中,這里創建一個目錄作為模擬

]# chown -R mysq l.mysql /mydata/data 很顯然這個目錄對mysql用戶得有讀寫權限,此處把屬主屬組給mysql

]# cd mysql cd到mysqsl目錄,此目錄中都是服務器設定相關的文件

]# chown -R root:mysql ./* 這個目錄中的文件都應該以mysql的身份運行,為了保證安全不要讓mysql用戶可寫,所有此處改變屬主屬組root:mysql

模塊化的php編譯amp和fpm化的php編譯amp;

]# ./scripts/mysql_install_db  --user=mysql  --datadir=/mydata/data --skip_name_resolve 使用/scripts/mysql_install_db生成mysql源數據數據庫

]# ll /mydata/data/ 查看mysqk源數據庫是否已經生成

模塊化的php編譯amp和fpm化的php編譯amp;

在support-files/目錄下有很多樣示例性的配置文件,這些文件我們可以復制任何一個符號我們需要的到/etc/my.cnf.d/*.cnf結尾 改改就可以用了

]# cp support-files/my-large.cnf  /etc/my.cnf.d/server.cnf

]# vim /etc/my.cnf.d/server.cnf 編輯此配置文件

[mysqld]
.......
datadir = /mydata/data
skip_name_resolve = ON
innodb_file_per_table = ON

模塊化的php編譯amp和fpm化的php編譯amp;

support-files/目錄下有一個mysql.server的腳本,這是inintscript腳本,用于控制服務腳本啟動的功能.如果我們不想寫unitfile就復制這個文件就行

]# cp support-files/mysql.server  /etc/rc.d/init.d/mysqld 復制mysql.server文件

]# chmod +x /etc/rc.d/init.d/mysqld 授予執行權限

]# chkconfig --add mysqld   設置開機自動啟動

]# cp /etc/my.cnf.d/server.cnf /etc/my.cnf 復制/etc/my.cnf.d/server.cnf覆蓋/etc/my.cnf

]# service mysqld start 啟動服務

模塊化的php編譯amp和fpm化的php編譯amp;

對應的客戶端程序在/usr/local/mysql/bin/mysql,運行此程序就可以使用了

模塊化的php編譯amp和fpm化的php編譯amp;

在/usr/local/mysql/程序包的安裝目錄下是有安裝文檔的

模塊化的php編譯amp和fpm化的php編譯amp;

]#  less INSTALL-BINARY 可以看到安裝此程序大概都要什么步驟

模塊化的php編譯amp和fpm化的php編譯amp;

三,安裝httpd-2.4

一般而言當我們使用–with-PACKAGE時.都應該裝上這個PACKAGE的devel包,如果沒有devel包的話,就得編譯安裝

mget httpd-2.4.10.tar.bz2 下載包

編譯安裝的時候 如果我們要啟動支持ssl功能,支持url-rewrite,需要額外的安裝上其他幾個程序包,如下
]# yum install pcre-devel openssl-devel libevent-devel apr-devel apr-util-devel -y

]# yum groupinstall -y "Development Tools"," Server Platform Development" 安裝開發包組

]# tar xf httpd-2.4.10.tar.bz2 展開程序包

]# cd httpd-2.4.10.tar.ba2

]# ./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/httpd --enable-so --enable-ssl
    --enable-cgi --enable-rewrite --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork 
    --with-pcre --with-zlib --with-apr=/usr --with-apr-util=/usr 

指明安裝目錄在/usr/local/apache2,配置文件在/etc/httpd,--enable-so支持模塊動態裝卸載,--enable-ssl支持使用openssl,
--enable-cgi支持cgi,--enable-rewrite支持url重寫,--enable-modules=most|all支持使用模塊,--enable-mpms-shared=all將mpm編譯成可動態裝卸載,
    --with-mpm=prefork指明prefork為默認mpm,--with-pcre支持pcre正則表達式引擎,--with-zlib支持壓縮使用庫,
    --with-apr=/usr指明基于apr進行編譯別去指明apr的查找路徑是/usr,--with-apr-util=/usr指明apr-util路徑為/usr

httpd-2.4.10]# make -j 2 && make install 指明使用兩顆cpu同時進行編譯

]# echo 'export PATH=/usr/local/apache2/bin:$PATH' > /etc/profile.d/httpd.sh echo一個apachectl的控制服務的路徑的腳本

]# . /etc/profile.d/httpd.sh  重讀這個服務腳本讓其生效

]# echo $PATH

模塊化的php編譯amp和fpm化的php編譯amp;

]# apachectl start 啟動服務

模塊化的php編譯amp和fpm化的php編譯amp;

瀏覽器訪問測試

模塊化的php編譯amp和fpm化的php編譯amp;

在apache的安裝目錄下/usr/local/apache2/build/下記錄了編譯安裝的過程,cgi-bin目錄是cgi腳本的存放目錄,error目錄錯誤頁面,
htdocs網頁文件的默認存放位置,icons圖標存放位置,include頭文件,logs日志文件目錄,man幫助手冊,
manual官方文檔,modules模塊文件路徑.config.nice這個文件記錄了編譯參數.

模塊化的php編譯amp和fpm化的php編譯amp;

模塊化的php編譯amp和fpm化的php編譯amp;

模塊化的php編譯amp和fpm化的php編譯amp;

配置文件在/etc/httpd/目錄下,httpd.conf的額外配置文件在extra目錄下,
original目錄是不指定編譯選項時默認使用的配置文件,mime.types是所支持的mime類型的總體配置

模塊化的php編譯amp和fpm化的php編譯amp;

四,安裝php5.4

一般而言當我們使用–with-PACKAGE時.都應該裝上這個PACKAGE的devel包,如果沒有devel包的話,就得編譯安裝

編譯安裝php5.4依賴了各種各樣的開發包,其中包含了;

gd包:gd是一個動態繪圖庫,是讓程序實現繪圖功能的.

freetype包:能實現字體以及字體變形顯示功能的

libxml2包:能解析xml格式的文件

libmcrypt包:支持加密解密的

如果要讓php支持bzip2壓縮的話,還要安裝上bzip2-devel php還有很多依賴的包…..這里并不啟動php的所有功能所以這里就簡單演示

(1) 作為httpd的模塊安裝:
mget php-5.4.40.tar.bz2 下載程序包

]# yum install gd-devel freetype-devel libxml2-devel libmcrypt-devel -y 安裝對應包的devel包解決依賴關系

]# yum groupinstall -y "Development Tools"," Server Platform Development" 安裝開發包組

]# tar xf php-5.4.40.tar.bz2 展開程序包

]# cd php-5.4.40 進入解壓開的程序目錄

php-5.4.40]# ./configure --prefix=/usr/local/php5 --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config
 --with-openssl --enable-mbstring --enable-xml --enable-sockets --with-freetype-dir --with-gd --with-libxml-dir=/usr --with-zlib
 --with-jpeg-dir --with-png-dir --with-mcrypt --with-apxs2=/usr/local/apache2/bin/apxs --with-config-file-path=/etc/php.ini 
    --with-config-file-scan-dir=/etc/php.d/

指定安裝在/usr/local/php5目錄下,--with-mysql=/usr/local/mysql指明mysql的安裝路徑(注意:任何依賴到的程序包;如果使用rpm包安裝的而且安裝了devel包,
只需要寫上--with--PACKAGE就行,而不用帶包路徑,個別情況下:修改了默認安裝路徑時必須要在--with--PACKAGE后指定安裝路徑的).
    --with-mysqli=/usr/local/mysql/bin/mysql_config指明mysqli的接口文件(mysql_cofig提供了一個編譯mysql客戶端時使用的相關信息,并有助于連接mysql的,
    所以使用php-mysql連接至mysql需要用到mysql_config這么一個接口,來獲取客戶端的相關信息),--with-openssl支持ssl加密協議...
    --enable-sockets支持sockets通信,--with-apxs2=/usr/local/apache2/bin/apxs編譯成apx的模塊并且指明路徑,
    --with-config-file-path=/etc/php.ini指明php的配置文件路徑,
    --with-config-file-scan-dir=/etc/php.d/指定掃描/etc/php.d/目錄下以.ini結尾的文件做配置文件的組成部分   

在配置結束后會有一個提醒:httpd編譯成了mpm的動態裝載模式

模塊化的php編譯amp和fpm化的php編譯amp;

注意:如果mpm為線程模型,則需要額外使用–enable-maintainer-zts
]# make -j 2 && make install

編譯完成后提示到模塊已經裝載到了指定的路徑下/usr/local/apache2/modules/

模塊化的php編譯amp和fpm化的php編譯amp;

libphp5.soz這個模塊安裝過程會自動編輯httpd.conf的配置文件,把這個模塊裝入

模塊化的php編譯amp和fpm化的php編譯amp;

配置php與httpd結合起來工作,配置php的配置文件

編譯php為httpd的模塊后,整合php至httpd:

在php-5.4.10目錄下有兩個文件的示例我們復制php.ini-production 到/etc/php.ini

編輯httpd.conf,添加如下配置信息:

DirectoryIndex index.php index.html

AddType application/x-httpd-php .php

]# cp php.ini-production /etc/php.ini

模塊化的php編譯amp和fpm化的php編譯amp;

編輯/etc/httpd/httpd.conf配置文件

]# vim /etc/httpd/hrrpd.conf

模塊化的php編譯amp和fpm化的php編譯amp;

模塊化的php編譯amp和fpm化的php編譯amp;

]# cd /usr/local/apache2/htdocs/

]# mv index.html index.php

]# vim index.php 編寫php測試頁

模塊化的php編譯amp和fpm化的php編譯amp;

使用apachectl重啟服務后瀏覽器測試

模塊化的php編譯amp和fpm化的php編譯amp;

(2) 安裝為fpm:

為了實驗,我們先要刪除剛才編譯的模塊化amp

]# apachectl stop 先停掉服務

]# rm -rf /etc/httpd /usr/local/apache2 /etc/php.ini /usr/local/php5 
刪除web服務的配置文件,程序安裝目錄和php的配置文件,程序安裝目錄

]# make install 重新安裝http,因為事先已經編譯好了的,在我們刪除了之后,需要再次安裝的話不需要使用./configure好make了

要整合他與fcgi需要編輯配置文件/etc/httpd/httpd.conf

]# vim /etc/httpd/httpd.conf
:/LoadModule 在配置文件中找到LoadModule配置段
:/fcgi 在LoadModule配置段中找到fcgi模塊,將其和其依賴的模塊啟動

模塊化的php編譯amp和fpm化的php編譯amp;

]# tar -xf php-5.4.40 解壓php源碼包

如果安裝為fpm的話則需要–with-apxs2=/usr/local/apache2/bin/apxs改為–enable-fpm

]# ./configure --prefix=/usr/local/php5 --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config
 --with-openssl --enable-mbstring --enable-xml --enable-sockets --with-freetype-dir --with-gd --with-libxml-dir=/usr 
--with-zlib --with-jpeg-dir --with-png-dir --with-mcrypt --enable-fpm --with-config-file-path=/etc/php.ini 
--with-config-file-scan-dir=/etc/php.d/

]# make -j 2 && make install

]# cp php.ini-production /etc/php.ini

為fpm準備配置文件

]# cd /usr/local/php5/ cd到安裝路徑

]# cd etc/

]# cp php-fpm.conf.default php-fpm.conf

]# vim php-fpm.conf 編輯此配置文件

修改pid文件配置項為pid = /usr/local/php5/var/run/php-fpm.pid

模塊化的php編譯amp和fpm化的php編譯amp;

]# cp php-5.4.40/sapi/fpm/php-fpm.service /usr/lib/systemd/system

]# vim /usr/lib/systemd/system/php-fpm.service 編輯此配置文件

模塊化的php編譯amp和fpm化的php編譯amp;

]# systemctl daemon-reload 重載

]# systemctl restart php-fpm.service 重啟

]# ss -tnl

模塊化的php編譯amp和fpm化的php編譯amp;

注意:這兩種方式不可以同時使用

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

(0)
M20-1馬星M20-1馬星
上一篇 2016-10-17 10:16
下一篇 2016-10-17 20:04

相關推薦

  • N21沉舟15周作業

    1、總結sed和awk的詳細用法; 2、刪除/boot/grub/grub.conf文件中所有行的行首的空白字符; #  sed 's@^[[:space:]]@@' /boot/grub/grub.conf 3、刪除/etc/fstab文件中所有以#開頭,后跟至少一個空白字符的行的行首的#和空白字…

    Linux干貨 2016-11-14
  • keepalived+nginx部署(單主模型)

    環境準備Centos7系統,后端服務器提供web服務。地址規劃: VS1: 172.18.51.7 VS2:172.17.51.77 RS1:172.18.51.74 RS2:172.18.51.75 VirtualIP:172.18.51.82 拓撲圖: 原理:nginx是高度模塊化的應用程序,其中nginx_proxy模塊即可實現負載均衡,將前端的用戶請…

    2017-05-17
  • keepalive實驗

    實驗環境centos 7 server x2 做keepalived主備 地址分別是192.168.0.200 192.168.0.201 Centos 7 server x2 做real server 采用DR模型   yum -y install ntp#安裝ntp client ntpdate 47.95.253.33#時間同步到自己的ntp…

    2017-12-11
  • apache工作模式及虛擬主機的配置

    apache的工作模式 MPM 名詞解釋MPM   Multipath Process Module 多道處理模塊。Linux中常使用prefork worker event三種MPM 即apache常用的三種工作模式。 prefork prefork為多進程模型,每個進程響應一個請求。其工作過程簡單說來就是一個主進程:負責生成n個 子進程(子進程…

    Linux干貨 2016-07-02
  • shell編程之數組及變量的多功能用法

    數組及變量的多功能用法   一、數組: 1、數組:存儲多個元素的連續的內存空間,相當于多個變量的集合(變量:存儲單個元素的內存空間)。 2、數組名和索引 索引:編號從0開始,屬于數值索引 bash的數組支持稀疏格式(索引不連續) 注意:索引可支持使用自定義的格式,而不僅是數值格式,即為關聯索引,bash4.0版本之后開始支持。 聲明數組: decl…

    Linux干貨 2016-08-26
  • Apache、nginx 、lighttpd性能比較

    1. web服務器簡介 1. lighttpd      Lighttpd是一個德國人領導的開源軟件,其根本的目的是提供一個專門針對高性能網站,安全、快速、兼容性好并且靈活的Web server環境         Lighttpd是一個具有非常低的…

    Linux干貨 2015-04-10
欧美性久久久久