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版本的編譯安裝爲例:
下載: php
wget http://cn2.php.net/distributions/php-5.6.3.tar.gz
2.2WordPress中文版
WordPress是一個很是著名的我的博客系統,這裏用它來驗證咱們的php-fpm配置正確與否。
下載: html
wget https://cn.wordpress.org/wordpress-4.7.4-zh_CN.zip
2.3安裝依賴庫
mysql
yum install gcc automake autoconf libtool make –y yum install gcc gcc-c++ glibc –y yum install libmcrypt-devel mhash-devel libxslt-devel –y yum install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel –y yum install zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel –y yum install ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel -y yum install krb5 krb5-devel libidn libidn-devel openssl openssl-devel -y
注:上面有些依賴庫在上一篇中已經安裝了,爲省事我在這裏又一股腦列上了,在實際安裝過程當中若是本地已經安裝了就不會再次安裝和下載了。
3.編譯和設置
3.1編譯文件
假定下載的php-5.6.3.tar.gz位於/root目錄下,首先解壓文件:
nginx
tar zxvf /root/php-5.6.3.tar.gz
而後執行configure:
c++
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處理了。
接着執行:
sql
make make install
由於源代碼有點多,編譯須要一點時間,請耐性等待。成功以後在/usr/local下會新建php文件夾,其文件目錄結構以下:
數據庫
[root@localhost ~]# ls -l /usr/local/php total 0 drwxr-xr-x 2 root root 147 Jun 7 23:38 bin drwxr-xr-x 2 root root 71 Jun 12 22:13 etc drwxr-xr-x 3 root root 17 Jun 7 23:12 include drwxr-xr-x 3 root root 85 Jun 12 22:12 lib drwxr-xr-x 4 root root 28 Jun 7 23:12 php drwxr-xr-x 2 root root 21 Jun 7 23:12 sbin drwxr-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/php cp 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配置效果,此次咱們將兩個數據庫實例都啓動:
bash
/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 wordpress@localhost 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這個文件,文件內容以下:
接着檢查配置是否有語法錯誤,若是沒有語法錯誤就從新加載配置:
/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的啓動狀態:
[root@localhost ~]# netstat -lntp | grep 9000 tcp 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 localhost 192.168.60.198 www.goodapp.net 192.168.60.198 bbs.goodapp.net 192.168.60.198 wordpress.goodapp.net
注:192.168.60.198是CentOS7虛擬機的IP地址。
在瀏覽器中打開http:// wordpress.goodapp.net/test.php頁面,效果以下:
4.3安裝
在宿主機打開http://wordpress.goodapp.net/wp-admin/install.php便可看到安裝界面:
點擊「如今就開始!」就進入安裝界面,以下圖:
在本篇《4.1.2MySQL數據庫準備》中咱們已經建立了wordpress庫和wordpress用戶,其密碼爲WordPress,將上述信息填寫並提交即完成wordpress的安裝。
完成安裝後的wordpress後臺管理首頁效果以下:
至於wordpress如何使用這裏就不詳述了,感興趣的能夠去其官網看手冊,這裏主要是用wordpress來檢查nginx+php-fpm是否配置正確。
5.MySQL主從效果檢查
感興趣的朋友能夠看一下咱們上一篇講的MySQL主從配置是否正確,下面是我用HeidiSQL這個開源的數據庫管理工具查看到的主從數據庫的界面:
注:HeiDiSQL官網:https://www.heidisql.com,可免費下載使用,支持PostgreSQL、MySQL及SQL Server。
6.總結
本篇講述瞭如何編譯PHP及經過配置讓Nginx藉助php-fpm來支持php應用,最後經過一個php應用wordpress的安裝和配置來檢查nginx+php-fpm是否配置正確,而且在本篇也檢驗了上一篇所述的MySQL主從複製是否正常工做。
聲明:本文首發於本人我的微信訂閱號:zhoujinqiaoIT,其後會同時在本人的CSDN、51CTO及oschina三處博客發佈,本人會負責在此四處答疑。