重慶分公司,新征程啟航
為企業(yè)提供網站建設、域名注冊、服務器等服務
為企業(yè)提供網站建設、域名注冊、服務器等服務
內容:
創(chuàng)新互聯建站專注為客戶提供全方位的互聯網綜合服務,包含不限于網站建設、成都網站設計、雁峰網絡推廣、微信小程序、雁峰網絡營銷、雁峰企業(yè)策劃、雁峰品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯建站為所有大學生創(chuàng)業(yè)者提供雁峰建站搭建服務,24小時服務熱線:18982081108,官方網址:www.cdcxhl.com
第一部分:編譯安裝LAMP(php以模塊的方式工作)
第二部分:編譯安裝LAMP(php以fpm的方式工作)
第一部分:
前面介紹我們知道,
apache + php結合的方式大概幾種:
第一種:把php編譯時直接編譯成apache的模塊、module模塊化的方式進行工作
第二種:CGI、通用網關接口、apache基于CGI跟hph通信
第三種:fastcgi方式,他也是一種協(xié)議,在這種模塊下他們兩個是這樣結合的:
本來php是做為一個模塊或都是php解析器運行的,不是監(jiān)聽在某個套接字上接收別人的請求的,而是讓別人調用為一個進程使用的,可能是做為別人的子進程在運行,但是工作在fastcgi這種模塊下的hph自行啟用為一個服務進程,
他監(jiān)聽在某個套接字上,隨時可以接受來自客戶端的請求的,他也是有一個主進程的,為了可以響應多個用戶的請求,他會啟用多個子進程,這些子進程我們也可以稱為工作進程,
他也是有空閑進程的,一但有客戶請求他馬上使用空閑的進程響應客戶端的請求,將結果返回給前端的調用者,在php5.3.3版本之前他是沒有這個能力了,只能工作在模塊和CGI的方式下,而在5.3.3之后這個模塊直接被收進php模塊中,這種模塊就叫php-fpm。
所以在以后編譯php時,要想跟apache結合,就要編譯成php-fpm,這是基于fastcgi工作的模式,并啟動這服務進程,也就意味著他是通過套接字跟前端的調用者通信,既然基于套按字通信了,那么前端的web 這里操作的編譯安裝順序:apache--mariadb--PHP 一、編譯安裝apache 1、解決依賴關系 httpd-2.4.10需要較新版本的apr和apr-util,因此需要事先對其進行升級。apr可以理解是中間的轉換器,是的apache能運行在windows、linux、MAC等多平臺上,升級方式有兩種,一種是通過源代碼編譯安裝,一種是直接升級rpm包。 (1) 編譯安裝apr (2) 編譯安裝apr-util (3) httpd-2.4.10編譯過程也要依賴于pcre-devel軟件包,需要事先安裝。此軟件包系統(tǒng)光盤自帶,因此,找到并安裝即可。 2、編譯安裝httpd-2.4.10 3、啟動httpd: 二、安裝mariadb-5.5.46 1、mysql的安裝有三種方式: rpm包安裝 二進制的通用包安裝 源碼的編譯安裝 這里演示的是二進制的通用包安裝,注意:二進制的通用包和源碼包命名是有區(qū)別的,千萬不要混淆,二進制包一般帶有l(wèi)inux字樣,如mariadb-5.5.46-linux-x86_64.tar.gz是二進制包,而mariadb-5.5.46.tar.gz則是源碼包! 這里演示把數據庫文件存放在一個目錄中 這里假設掛載目錄為/mydata,而后需要創(chuàng)建/mydata/data目錄做為mysql數據的存放目錄。 2、新建用戶以安全方式運行進程: 3、安裝并初始化mysql-5.5.46 4、為mysql提供主配置文件: 修改配置: 5、為mysql提供sysv服務腳本: 添加至服務列表: 而后就可以啟動服務測試使用了。 為了使用mysql的安裝符合系統(tǒng)使用規(guī)范,并將其開發(fā)組件導出給系統(tǒng)使用,這里還需要進行如下步驟: 6、輸出mysql的man手冊至man命令的查找路徑: 編輯/etc/man.config,添加如下行即可: 7、輸出mysql的頭文件至系統(tǒng)頭文件路徑/usr/include: 這可以通過簡單的創(chuàng)建鏈接實現: 8、輸出mysql的庫文件給系統(tǒng)庫查找路徑: 而后讓系統(tǒng)重新載入系統(tǒng)庫: 9、修改PATH環(huán)境變量,讓系統(tǒng)可以直接使用mysql的相關命令。 三、編譯安裝php-5.6.4 1、解決依賴關系: 如果想讓編譯的php支持mcrypt擴展,需要安裝兩個rpm包: 2、編譯安裝php-5.6.4 注意:如果httpd使用線程模型MPM,需要額外的--enable-maintainer-zts選項; 注意:如果要以fpm方式運行php,需要編譯時移除--with-apxs選項,額外添加--enable-fpm選項; 為php提供配置文件(位于解壓的源碼包目錄): 3、 編輯apache配置文件httpd.conf,以apache支持php 添加如下二行 定位至DirectoryIndex index.html 修改為: 而后重新啟動httpd,或讓其重新載入配置文件即可測試php是否已經可以正常使用。 4、這里安裝phpMyAdmin進行測試驗證: 1、解壓phpMyAdmin-4.4.14.1-all-languages.zip 2、講phpMyAdmin-4.4.14.1-all-languages移至web站點的根目錄,并命名為pma目錄:/usr/local/apache2/htdocs/pma 3、進入pma目錄,啟用默認到配置文件 cp libraries/config.default.php config.inc.php 4、編輯該配置文件,設置相應的數據庫帳號和密碼 5、測試打開該目錄的web站點,只要能登錄上數據庫,說明,A+M+P已經結合工作成功。 測試正常,至此,LAMP已經編譯成功,并能工作。 第二部分、編譯安裝LAMP(php以fpm的方式工作) 一、編譯安裝LAMP 1、編譯安裝: 和前面的步驟一樣,只不過在編譯安裝PHP時,移除--with-apxs選項,額外添加--enable-fpm選項; 2、為php提供配置文件: 3、配置php-fpm 為php-fpm提供Sysv init腳本,并將其添加至服務列表: 4、為php-fpm提供配置文件: # cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf 5、編輯php-fpm的配置文件: 配置fpm的相關選項為你所需要的值,并啟用pid文件(如下最后一行): 6、接下來就可以啟動php-fpm了: 使用如下命令來驗正(如果此命令輸出有中幾個php-fpm進程就說明啟動成功了): 默認情況下,fpm監(jiān)聽在127.0.0.1的9000端口,也可以使用如下命令驗正其是否已經監(jiān)聽在相應的套接字。 二、配置httpd 1、啟用httpd的相關模塊 在Apache httpd 2.4以后已經專門有一個模塊針對FastCGI的實現,此模塊為mod_proxy_fcgi.so,它其實是作為mod_proxy.so模塊的擴充,因此,這兩個模塊都要加載 同時把libphp5.so的模塊注釋 2、配置中心主機支持使用fcgi(也可以配置虛擬主機,配置差不多,這里就不演示了) 在相應的虛擬主機中添加類似如下兩行。 3、編輯apache配置文件httpd.conf,讓apache能識別php格式的頁面,并支持php格式的主頁 定位至DirectoryIndex index.html 修改為: 測試成功,已經能訪問php頁面 三、測試phpMyAdmin: 這里再次安裝phpMyAdmin進行測試驗證: 1、解壓phpMyAdmin-4.4.14.1-all-languages.zip 2、將phpMyAdmin-4.4.14.1-all-languages移至web站點的根目錄,并命名為pma目錄:/usr/local/apache2/htdocs/pma 3、進入pma目錄,啟用默認到配置文件 4、編輯該配置文件,設置相應的數據庫帳號和密碼 5、測試打開該目錄的web站點,只要能登錄上數據庫,說明,A+M+P已經結合工作成功。 測試正常,至此,LAMP已經編譯成功,并能工作。 OK,更多文章請關注我的博客。# tar xf apr-1.5.2.tar.bz2
# cd apr-1.5.2
# ./configure --prefix=/usr/local/apr
# make && make install
# tar xf apr-util-1.5.4.tar.bz2
# cd apr-util-1.5.4
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make && make install
# yum install pcre-devel -y
# tar xf httpd-2.4.10.tar.bz2
# cd httpd-2.4.10
# ./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/local/apr --with-apr-util=/usr/local/apr-util/
# make && make install
[root@localhost php-5.6.4]# echo "export PATH=/usr/local/apache2/bin:$PATH" > /etc/profile.d/httpd.sh
[root@localhost php-5.6.4]# source /etc/profile.d/httpd.sh
# groupadd -r mysql
# useradd -g mysql -r -s /sbin/nologin
# mkdir -pv /mydata/data
# chown -R mysql:mysql /mydata/data
# tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local
# cd /usr/local/
# ln -sv mariadb-5.5.46-linux-x86_64 mysql
# cd mysql
# chown -R mysql:mysql .
# scripts/mysql_install_db --user=mysql --datadir=/mydata/data
# cd /usr/local/mysql
# cp support-files/my-large.cnf /etc/my.cnf
thread_concurrency = 2 #并修改此文件中thread_concurrency的值為你的CPU個數乘以2
datadir = /mydata/data #需要添加如下行指定mysql數據文件的存放位置
# cd /usr/local/mysql
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
# chkconfig mysqld on
MANPATH /usr/local/mysql/man
# ln -sv /usr/local/mysql/include /usr/include/mysql
# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
# ldconfig
#vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
source /etc/profile.d/mysql.sh
# rpm -ivh libmcrypt-2.5.8-9.el6.x86_64.rpm
# rpm -ivh libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
# yum install -y libxml2-devel
# tar xf php-5.6.4.tar.xz
# cd php-5.6.4
#./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache2/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-maintainer-zts
# make
# make intall
# cp php.ini-production /etc/php.ini
# vim /etc/httpd/httpd.conf
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php index.html
#./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-maintainer-zts --enable-fpm
# cp php.ini-production /etc/php.ini
# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
# chmod +x /etc/rc.d/init.d/php-fpm
# chkconfig --add php-fpm
# chkconfig php-fpm on
# vim /usr/local/php/etc/php-fpm.conf
pid = /usr/local/php/var/run/php-fpm.pid
# service php-fpm start
[root@localhost fpm]# ss -tanl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 50 *:3306 *:*
LISTEN 0 32 *:21 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 100 127.0.0.1:25 *:*
[root@localhost fpm]# service php-fpm start
Starting php-fpm done
[root@localhost fpm]# ss -tanl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 127.0.0.1:9000 *:*
LISTEN 0 50 *:3306 *:*
LISTEN 0 32 *:21 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 100 127.0.0.1:25 *:*
[root@localhost fpm]#
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
#LoadModule php5_module modules/libphp5.so
ProxyRequests Off #關閉正向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache2/htdocs/$1 #把以.php結尾的文件請求發(fā)送到php-fpm進程,php-fpm至少需要知道運行的目錄和URI,所以這里直接在fcgi://127.0.0.1:9000后指明了這兩個參數,其它的參數的傳遞已經被mod_proxy_fcgi.so進行了封裝,不需要手動指定。
# vim /etc/httpd/httpd.conf
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php index.html
cp libraries/config.default.php config.inc.php
$cfg['Servers'][$i]['user'] = 'nihao';
$cfg['Servers'][$i]['password'] = '123456';
分享題目:編譯安裝LAMP(php-fpm)步驟詳解
本文鏈接:http://www.xueling.net.cn/article/ppsiei.html