內容:php
第一部分:編譯安裝LAMP(php以模塊的方式工做)html
第二部分:編譯安裝LAMP(php以fpm的方式工做)前端
第一部分:mysql
前面介紹咱們知道,linux
apache + php結合的方式大概幾種:web
第一種:把php編譯時直接編譯成apache的模塊、module模塊化的方式進行工做sql
第二種:CGI、通用網關接口、apache基於CGI跟hph通訊數據庫
第三種:fastcgi方式,他也是一種協議,在這種模塊下他們兩個是這樣結合的:apache
原本php是作爲一個模塊或都是php解析器運行的,不是監聽在某個套接字上接收別人的請求的,而是讓別人調用爲一個進程使用的,多是作爲別人的子進程在運行,可是工做在fastcgi這種模塊下的hph自行啓用爲一個服務進程,vim
他監聽在某個套接字上,隨時能夠接受來自客戶端的請求的,他也是有一個主進程的,爲了能夠響應多個用戶的請求,他會啓用多個子進程,這些子進程咱們也能夠稱爲工做進程,
他也是有空閒進程的,一但有客戶請求他立刻使用空閒的進程響應客戶端的請求,將結果返回給前端的調用者,在php5.3.3版本以前他是沒有這個能力了,只能工做在模塊和CGI的方式下,而在5.3.3以後這個模塊直接被收進php模塊中,這種模塊就叫php-fpm。
因此在之後編譯php時,要想跟apache結合,就要編譯成php-fpm,這是基於fastcgi工做的模式,並啓動這服務進程,也就意味着他是經過套接字跟前端的調用者通訊,既然基於套按字通訊了,那麼前端的web服務器和後面的php服務器徹底能夠工做在不一樣的主機上,實現了所謂的分層機制。
apache不會跟數據庫打交道,他是個靜態web服務器,跟數據庫打交道的是應用程序,做爲應用程序的源驅動可以基於某個API跟服務器之間創建會話,然後他會經過咱們的mysql語句發送給數據庫,數據庫再將結果返回給應用程序,不是php進程,而是php進程中所執行的代碼。
編譯安裝LAMP
一、準備乾淨的操做系統,而且編譯環境準備
二、相關的編譯源碼包準備
三、選擇編譯安裝的版本(centos6.8+httpd2.4.10+mariadb5.5.46+php5.6.4)
四、編譯安裝以及測試LAMP
一、編譯安裝的環境準備:
# yum groupinstall "Development Tools" "Server Platform Development" -y
二、準備相關的源碼包:
下載地址:
apache編譯相關
apr="http://mirrors.aliyun.com/apache/apr/apr-1.5.2.tar.bz2"
aprutil="http://mirrors.aliyun.com/apache/apr/apr-util-1.5.4.tar.bz2"
HTTPD="http://mirrors.aliyun.com/apache/httpd/httpd-2.4.23.tar.gz"
PHP編譯相關:
PHP="http://mirrors.sohu.com/php/php-5.4.28.tar.gz"
libmytRPM="http://mirrors.aliyun.com/epel/6/x86_64/libmcrypt-2.5.8-9.el6.x86_64.rpm"
libdelRPM="http://mirrors.aliyun.com/epel/6/x86_64/libmcrypt-devel-2.5.8-9.el6.x86_64.rpm"
mariadb編譯相關:
MYSQL="http://cdn.mysql.com//archives/mysql-5.5/mysql-5.5.41-linux2.6-x86_64.tar.gz"
這裏操做的編譯安裝順序:apache--mariadb--PHP
1、編譯安裝apache
一、解決依賴關係
httpd-2.4.10須要較新版本的apr和apr-util,所以須要事先對其進行升級。apr能夠理解是中間的轉換器,是的apache能運行在windows、linux、MAC等多平臺上,升級方式有兩種,一種是經過源代碼編譯安裝,一種是直接升級rpm包。
(1) 編譯安裝apr
# tar xf apr-1.5.2.tar.bz2
# cd apr-1.5.2
# ./configure --prefix=/usr/local/apr
# make && make install
(2) 編譯安裝apr-util
# 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
(3) httpd-2.4.10編譯過程也要依賴於pcre-devel軟件包,須要事先安裝。此軟件包系統光盤自帶,所以,找到並安裝便可。
# yum install pcre-devel -y
二、編譯安裝httpd-2.4.10
# 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
三、啓動httpd:
[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
2、安裝mariadb-5.5.46
一、mysql的安裝有三種方式:
rpm包安裝
二進制的通用包安裝
源碼的編譯安裝
這裏演示的是二進制的通用包安裝,注意:二進制的通用包和源碼包命名是有區別的,千萬不要混淆,二進制包通常帶有linux字樣,如mariadb-5.5.46-linux-x86_64.tar.gz是二進制包,而mariadb-5.5.46.tar.gz則是源碼包!
這裏演示把數據庫文件存放在一個目錄中
這裏假設掛載目錄爲/mydata,然後須要建立/mydata/data目錄作爲mysql數據的存放目錄。
二、新建用戶以安全方式運行進程:
# groupadd -r mysql
# useradd -g mysql -r -s /sbin/nologin
# mkdir -pv /mydata/data
# chown -R mysql:mysql /mydata/data
三、安裝並初始化mysql-5.5.46
# 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
四、爲mysql提供主配置文件:
# cd /usr/local/mysql
# cp support-files/my-large.cnf /etc/my.cnf
修改配置:
thread_concurrency = 2 #並修改此文件中thread_concurrency的值爲你的CPU個數乘以2
datadir = /mydata/data #須要添加以下行指定mysql數據文件的存放位置
五、爲mysql提供sysv服務腳本:
# 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
然後就能夠啓動服務測試使用了。
爲了使用mysql的安裝符合系統使用規範,並將其開發組件導出給系統使用,這裏還須要進行以下步驟:
六、輸出mysql的man手冊至man命令的查找路徑:
編輯/etc/man.config,添加以下行便可:
MANPATH /usr/local/mysql/man
七、輸出mysql的頭文件至系統頭文件路徑/usr/include:
這能夠經過簡單的建立連接實現:
# ln -sv /usr/local/mysql/include /usr/include/mysql
八、輸出mysql的庫文件給系統庫查找路徑:
# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
然後讓系統從新載入系統庫:
# ldconfig
九、修改PATH環境變量,讓系統能夠直接使用mysql的相關命令。
#vim /etc/profile.d/mysql.sh export PATH=/usr/local/mysql/bin:$PATH source /etc/profile.d/mysql.sh
3、編譯安裝php-5.6.4
一、解決依賴關係:
若是想讓編譯的php支持mcrypt擴展,須要安裝兩個rpm包:
# rpm -ivh libmcrypt-2.5.8-9.el6.x86_64.rpm # rpm -ivh libmcrypt-devel-2.5.8-9.el6.x86_64.rpm
二、編譯安裝php-5.6.4
# 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
注意:若是httpd使用線程模型MPM,須要額外的--enable-maintainer-zts選項;
注意:若是要以fpm方式運行php,須要編譯時移除--with-apxs選項,額外添加--enable-fpm選項;
爲php提供配置文件(位於解壓的源碼包目錄):
# cp php.ini-production /etc/php.ini
三、 編輯apache配置文件httpd.conf,以apache支持php
# vim /etc/httpd/httpd.conf
添加以下二行
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
定位至DirectoryIndex index.html
修改成:
DirectoryIndex index.php index.html
然後從新啓動httpd,或讓其從新載入配置文件便可測試php是否已經能夠正常使用。
四、這裏安裝phpMyAdmin進行測試驗證:
一、解壓phpMyAdmin-4.4.14.1-all-languages.zip
二、講phpMyAdmin-4.4.14.1-all-languages移至web站點的根目錄,並命名爲pma目錄:/usr/local/apache2/htdocs/pma
三、進入pma目錄,啓用默認到配置文件
cp libraries/config.default.php config.inc.php
四、編輯該配置文件,設置相應的數據庫賬號和密碼
五、測試打開該目錄的web站點,只要能登陸上數據庫,說明,A+M+P已經結合工做成功。
測試正常,至此,LAMP已經編譯成功,並能工做。
第二部分、編譯安裝LAMP(php以fpm的方式工做)
1、編譯安裝LAMP
一、編譯安裝:
和前面的步驟同樣,只不過在編譯安裝PHP時,移除--with-apxs選項,額外添加--enable-fpm選項;
#./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
二、爲php提供配置文件:
# cp php.ini-production /etc/php.ini
三、配置php-fpm
爲php-fpm提供Sysv init腳本,並將其添加至服務列表:
# 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
四、爲php-fpm提供配置文件:
# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
五、編輯php-fpm的配置文件:
# vim /usr/local/php/etc/php-fpm.conf
配置fpm的相關選項爲你所須要的值,並啓用pid文件(以下最後一行):
pid = /usr/local/php/var/run/php-fpm.pid
六、接下來就能夠啓動php-fpm了:
# service php-fpm start
使用以下命令來驗正(若是此命令輸出有中幾個php-fpm進程就說明啓動成功了):
[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]#
默認狀況下,fpm監聽在127.0.0.1的9000端口,也可使用以下命令驗正其是否已經監聽在相應的套接字。
2、配置httpd
一、啓用httpd的相關模塊
在Apache httpd 2.4之後已經專門有一個模塊針對FastCGI的實現,此模塊爲mod_proxy_fcgi.so,它實際上是做爲mod_proxy.so模塊的擴充,所以,這兩個模塊都要加載
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
同時把libphp5.so的模塊註釋
#LoadModule php5_module modules/libphp5.so
二、配置中心主機支持使用fcgi(也能夠配置虛擬主機,配置差很少,這裏就不演示了)
在相應的虛擬主機中添加相似以下兩行。
ProxyRequests Off #關閉正向代理 ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache2/htdocs/$1 #把以.php結尾的文件請求發送到php-fpm進程,php-fpm至少須要知道運行的目錄和URI,因此這裏直接在fcgi://127.0.0.1:9000後指明瞭這兩個參數,其它的參數的傳遞已經被mod_proxy_fcgi.so進行了封裝,不須要手動指定。
三、編輯apache配置文件httpd.conf,讓apache能識別php格式的頁面,並支持php格式的主頁
# vim /etc/httpd/httpd.conf AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
定位至DirectoryIndex index.html
修改成:
DirectoryIndex index.php index.html
測試成功,已經能訪問php頁面
3、測試phpMyAdmin:
這裏再次安裝phpMyAdmin進行測試驗證:
一、解壓phpMyAdmin-4.4.14.1-all-languages.zip
二、將phpMyAdmin-4.4.14.1-all-languages移至web站點的根目錄,並命名爲pma目錄:/usr/local/apache2/htdocs/pma
三、進入pma目錄,啓用默認到配置文件
cp libraries/config.default.php config.inc.php
四、編輯該配置文件,設置相應的數據庫賬號和密碼
$cfg['Servers'][$i]['user'] = 'nihao'; $cfg['Servers'][$i]['password'] = '123456';
五、測試打開該目錄的web站點,只要能登陸上數據庫,說明,A+M+P已經結合工做成功。
測試正常,至此,LAMP已經編譯成功,並能工做。
OK,更多文章請關注個人博客。