標籤:centos linux nginx mysql php-fpm
1.前言
上一篇講述了如何編譯安裝MySQL,雖然可以通過yum install 或者rpm來安裝,但是yum install和rpm安裝有一個特點,就是有些參數是別人根據福士需求定製的,如果需要進行自己的特定參數指定,這個是比較難做到的,因此有一定Linux基礎的人都是編譯安裝或者根據公司的具體環境製作適合環境的安裝包。上一篇的例子中講述了如何編譯安裝和如何配置多執行個體,並在最後講述了如何配置主從複製配置。
以前開源開發經常將LAMP,就是Linux+Apache+MySQL+PHP,對於一些起步型的公司來說LAMP可以滿足他們的所有幻想:既可以響應一定規模的使用者,對硬體的要求也很小。現在隨著Nginx的興起,LAMP變成了LNMP,即Linux+Nginx+MySQL+PHP,因此本篇將講述如何編譯安裝PHP並且使用php-fpm來讓Nginx支援PHP。
2.準備
2.1下載PHP5.6.3源碼
考慮到很多開源PHP還在用PHP5版本,因此這裡以PHP5.6.3版本的編譯安裝為例:
下載:
wget http://cn2.php.net/distributions/php-5.6.3.tar.gz
2.2WordPress中文版
WordPress是一個非常著名的個人部落格系統,這裡用它來驗證我們的php-fpm配置正確與否。
下載:
wget https://cn.wordpress.org/wordpress-4.7.4-zh_CN.zip
2.3安裝依賴庫
yum install gcc automake autoconf libtool make –yyum install gcc gcc-c++ glibc –yyum install libmcrypt-devel mhash-devel libxslt-devel –yyum install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel –yyum install zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel –yyum install ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel -yyum install krb5 krb5-devel libidn libidn-devel openssl openssl-devel -y
註:上面有些依賴庫在上一篇中已經安裝了,為省事我在這裡又一股腦列上了,在實際安裝過程中如果本地已經安裝了就不會再次安裝和下載了。
3.編譯和設定
3.1編譯檔案
假定下載的php-5.6.3.tar.gz位於/root目錄下,首先解壓檔案:
tar zxvf /root/php-5.6.3.tar.gz
然後執行configure:
cd /root/php-5.6.3./configure --prefix=/usr/local/php --enable-fpm --with-mcrypt --enable-mbstring --disable-pdo --with-curl --disable-debug --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli --with-gd --with-jpeg-dir -with-gettext --enable-xml --enable-freetype
如果依賴庫都安裝了就不會報錯,如果提示缺少依賴庫就用yum install 來安裝。在上面的參數中:
--prefix=/usr/local/php:表示將來程式安裝在/usr/local/php目錄;
--enable-fpm:表示啟用php-fpm模組,不啟用這個nginx就沒辦法將php頁面請求轉寄個nginx處理了。
接著執行:
makemake install
因為原始碼有點多,編譯需要一點時間,請耐性等待。成功之後在/usr/local下會建立php檔案夾,其檔案目錄結構如下:
[[email protected] ~]# ls -l /usr/local/phptotal 0drwxr-xr-x 2 root root 147 Jun 7 23:38 bindrwxr-xr-x 2 root root 71 Jun 12 22:13 etcdrwxr-xr-x 3 root root 17 Jun 7 23:12 includedrwxr-xr-x 3 root root 85 Jun 12 22:12 libdrwxr-xr-x 4 root root 28 Jun 7 23:12 phpdrwxr-xr-x 2 root root 21 Jun 7 23:12 sbindrwxr-xr-x 4 root root 28 Jun 7 23:12 var
3.2配置
3.2.1php.ini配置
首先將剛才解壓的檔案夾中將php.ini-development拷貝到/usr/local/php/lib目錄並命名為php.ini:
cp /root/php-5.6.3/php.ini-development /usr/local/php/lib/php.ini
注意:在程式開發伺服器將php.ini-development改為php.ini,如果是生產伺服器建議將php.ini-production改為php.ini, php.ini-production與php.ini-development相比是關閉了一些調試輸出,這在生產環境中可以減少記錄檔的體積和提高效能,在開發環境中建議還是開啟以便於調試。在接下來的講解中是基於開發環境配置的。
對php.ini做如下更改:
error_reporting = E_ALL & ~E_NOTICE ;輸出調試資訊和通知
error_log = /usr/local/php/var/log/error-log.log ;錯誤記錄檔存放位置
date.timezone = "Asia/Shanghai"; 這句原本是” ;date.timezone =”,需要去掉其注釋並設定為中國時區
3.2.2php-fpm.conf配置
首先將/usr/local/php/ etc/php-fpm.conf.default拷貝一份並命名為php-fpm.conf:
cd /usr/local/phpcp etc/php-fpm.conf.default etc/php-fpm.conf
接著對php-fpm.conf做如下更改:
;pid = run/php-fpm.pid這一句取消注釋,並改為:pid = /usr/local/php/var/run/php-fpm.pid;
;error_log = log/php-fpm.log這一句取消注釋,並改為:error_log = /usr/local/php/var/log/error-log.log
user = nobody改為:user = nginx
group = nobody改為:group = nginx
;catch_workers_output = yes這一句取消注釋,改為:catch_workers_output = yes
php-fpm可執行檔在/usr/local/php/sbin目錄下,可以通過/usr/local/php/sbin來執行監聽,預設是監聽9000連接埠。
4.安裝WordPress
4.1資料庫準備
4.1.1啟動MySQL資料庫
為了觀察上一篇我們的Master-slave配置效果,這次我們將兩個資料庫執行個體都啟動:
/usr/local/mysql-5.7.18/data/3306/mysql start/usr/local/mysql-5.7.18/data/3307/mysql start
4.1.2MySQL資料庫準備
為了資訊安全,專門在主要資料庫執行個體上建立一個名為wordpress的庫,並為wordpress庫配置一個資料庫賬戶,命令如下:
create database wordpress;grant all privileges on wordpress.* to [email protected] identified by ‘WordPress‘;flush privileges;
即建立wordpress庫,同時建立wordpress資料庫帳號,賬戶密碼為WordPress,擁有對wordpress庫的全部許可權。
4.2WordPress網站及網域名稱解析配置
4.2.1解壓縮WordPress
假設wordpress-4.7.4-zh_CN.zip在/root目錄下,執行以下命令來解壓檔案:
cd ~tar zxvf ./wordpress-4.7.4-zh_CN.tar.gz
將wordpress放入nginx目錄下:
mv ./wordpress /usr/local/nginx-1.12.0/html
4.2.2在nginx中增加網站
首先在/usr/local/nginx-1.12.0/conf/vhosts增加一個檔案,名為wordpress.goodapp.net.conf,其內容如下:
server { listen 80; server_name wordpress.goodapp.net; access_log logs/wordpress.access.log main; error_log logs/wordpress.error.log; #root html; #index index.html index.htm index.jsp index.php; location /{ root html/wordpress; index index.htm index.html index.php; } location ~* \.php$ { root html/wordpress; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
然後在/usr/local/nginx-1.12.0/conf/nginx.conf中include這個檔案,檔案內容如下:
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/98/C0/wKioL1k_8wuwnIqcAABjd0dN1K8390.png-wh_500x0-wm_3-wmp_4-s_1676208085.png" title="PHP_FPM02_nginx_config.png" alt="wKioL1k_8wuwnIqcAABjd0dN1K8390.png-wh_50" />
接著檢查配置是否有語法錯誤,如果沒有語法錯誤就重新載入配置:
/usr/local/nginx-1.12.0/sbin/nginx –t
4.2.3啟動應用
首先啟動nginx:
systemctl reload nginx.service
註:見本系列前面章節,因nginx已配置為隨系統啟動了,可以通過上述命令重新啟動。
接著啟動php-fpm:
/usr/local/php/sbin/php-fpm
這是可以觀察php-fpm的啟動狀態:
[[email protected] ~]# netstat -lntp | grep 9000tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 5498/php-fpm: maste
如果結果不是上述,可以查看錯誤記錄檔:
tail /usr/local/php/var/log/error-log.log
4.2.4配置檢測
我們可以在/usr/local/nginx-1.12.0/html/wordpress中建立一個測試php頁面,檔案名稱為test.php,檔案內容如下:
<?php phpinfo();?>
為了能在Windows宿主機中能通過網域名稱觀察結果,需要對hosts檔案做修改,hosts檔案位於C:\Windows\System32\drivers\etc目錄,修改後的內容如下:
# Copyright (c) 1993-2009 Microsoft Corp.## This is a sample HOSTS file used by Microsoft TCP/IP for Windows.## This file contains the mappings of IP addresses to host names. Each# entry should be kept on an individual line. The IP address should# be placed in the first column followed by the corresponding host name.# The IP address and the host name should be separated by at least one# space.## Additionally, comments (such as these) may be inserted on individual# lines or following the machine name denoted by a ‘#‘ symbol.## For example:## 102.54.94.97 rhino.acme.com # source server# 38.25.63.10 x.acme.com # x client host# localhost name resolution is handled within DNS itself.# 127.0.0.1 localhost# ::1 localhost192.168.60.198 www.goodapp.net192.168.60.198 bbs.goodapp.net192.168.60.198 wordpress.goodapp.net
註:192.168.60.198是CentOS7虛擬機器的IP地址。
在瀏覽器中開啟http:// wordpress.goodapp.net/test.php頁面,效果如下:
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M01/98/C0/wKioL1k_81_xyBaFAAEe2whxVEE767.png-wh_500x0-wm_3-wmp_4-s_3288184065.png" title="PHP_FPM03_phpinfo.png" alt="wKioL1k_81_xyBaFAAEe2whxVEE767.png-wh_50" />
4.3安裝
在宿主機開啟http://wordpress.goodapp.net/wp-admin/install.php即可看到安裝介面:
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M00/98/C0/wKiom1k_827wwpVrAAC46GUzWMw687.png-wh_500x0-wm_3-wmp_4-s_1847534256.png" title="PHP_FPM04_wordpress_setup.png" alt="wKiom1k_827wwpVrAAC46GUzWMw687.png-wh_50" />
點擊“現在就開始!”就進入安裝介面,如:
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M00/98/C0/wKioL1k_832DevzJAACR0jPoQB8376.png-wh_500x0-wm_3-wmp_4-s_3627726029.png" title="PHP_FPM05_wordpress_config.png" alt="wKioL1k_832DevzJAACR0jPoQB8376.png-wh_50" />
在本篇《4.1.2MySQL資料庫準備》中我們已經建立了wordpress庫和wordpress使用者,其密碼為WordPress,將上述資訊填寫並提交即完成wordpress的安裝。
完成安裝後的wordpress後台管理首頁效果如下:
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M01/98/C0/wKiom1k_85DiVgjjAAG329sOVpw885.png-wh_500x0-wm_3-wmp_4-s_3998878669.png" title="PHP_FPM01_wordpress.png" alt="wKiom1k_85DiVgjjAAG329sOVpw885.png-wh_50" />
至於wordpress如何使用這裡就不詳述了,感興趣的可以去其官網看手冊,這裡主要是用wordpress來檢查nginx+php-fpm是否配置正確。
5.MySQL主從效果檢查
感興趣的朋友可以看一下我們上一篇講的MySQL主從配置是否正確,下面是我用HeidiSQL這個開源的資料庫管理工具查看到的主從資料庫的介面:
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/98/C0/wKiom1k_86LQPtpjAAG329sOVpw570.png-wh_500x0-wm_3-wmp_4-s_2447225924.png" title="PHP_FPM01_wordpress.png" alt="wKiom1k_86LQPtpjAAG329sOVpw570.png-wh_50" />
註:HeiDiSQL官網:https://www.heidisql.com,可免費下載使用,支援PostgreSQL、MySQL及SQL Server。
6.總結
本篇講述了如何編譯PHP及通過配置讓Nginx藉助php-fpm來支援php應用,最後通過一個php應用wordpress的安裝和配置來檢查nginx+php-fpm是否配置正確,並且在本篇也檢驗了上一篇所述的MySQL主從複製是否正常工作。
本文出自 “周公(周金橋)的專欄” 部落格,請務必保留此出處http://zhoufoxcn.blog.51cto.com/792419/1935159
開發人員學Linux(7):CentOS7編譯安裝PHP並配置PHP-FPM