一、檢查php是否已經安裝,使用php -v,是否能夠看到版本號,或者使用rpm -qa | grep php查看是否安裝過。
# yum remove php* -y
-
Linux軟件編譯安裝都需要依賴兩個安裝包 gcc gcc-c++ make 可使用yum在線安裝
-
# yum -y install gcc gcc-c++ make
-
准備php安裝前的前置軟件,用yum install xxxx即可安裝,當然不嫌麻煩也可以自己編譯安裝,這里就不詳細說了。
1)zlib以及zlib-devel zlib提供數據壓縮的函數庫,也是nginx的前置軟件,由於zlib需要編譯php的zlib擴展,而編譯中會需要使用zlib.h這個頭文件,頭文件在zlib-devel中,因此也需要下載zlib-devel。
2)libxml2以及libxml-devel libxml2是一個c語言的xml程序庫,可以簡單的對xml進行各種操作,並且支持xpath查詢,以及部分支持xslt轉換等功能。
3)libxslt以及libxslt-devel 如果不安裝libxslt-devel會提示找不到xslt.config文件,xslt是轉換xml到其他格式的擴展。
4)openssl以及openssl-devel 安全套接字層密碼庫
5)jpeg IJG的jpeg庫,php的gd庫所需。
6)libpng 是c語言寫的比較底層的讀寫png文件的跨平台的庫,可以幫助輕松的讀寫png文件的每一行像素,php的gd庫所需。
7)freetype以及freetype-devel 免費開源的且可移植的字體引擎,提供統一的接口訪問多種字體格式,這兩個都是gd庫的依賴軟件,所以如果沒有安裝,或者版本太低,在安裝php時設定的是安裝gd庫則會報錯,另外不安裝-devel也是會報錯的,因為編譯擴展的時候會缺少ft2build.h文件,報錯如下圖。
8)gd gd是php處理圖形的擴展庫
9)curl,由於我的yum里的版本太低了,所以直接自己編譯安裝的,安裝方式很簡單,也就是wget curl下載地址后tar解壓,新建/usr/local/curl文件夾,然后進入curl解壓后的文件夾里配置./configure --prefix=/usr/local/curl即可,最后make以及make install就安裝好了。
注意:xxx-devel是xxx軟件的開發包,包含頭文件以及靜態庫甚至源碼。
- 下面是部分依賴包
-
- 為了安全保險的給make出來,先更新依賴庫以防萬一:
yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel pcre-devel
- 首先打開php官網http://php.net/點擊導航欄的Downloads進入下載頁面:http://php.net/downloads.php,選擇合適的版本並選擇對應國家鏡像進行下載wget http://php.net/get/php-7.2.10.tar.gz/from/a/mirror,我下載的是php-7.2.10.tar.gz
- tar -zxvf php-7.2.10.tar.gz
- cd php-7.2.10
- 新建待會要安裝php的文件夾:mkdir /usr/local/php
- 創建用戶useradd -s /sbin/nologin php
-
編譯安裝, 實際上這里的配置項比上述還多,可以使用 ./configure --help 命令查看所有選項,以上這些選項在正常的php開發中完全夠用了,后期如果需要,可以選擇手動開啟相應的模塊
- 注意:編譯的配置項是根據前面源碼安裝的依賴包的安裝路徑配置的路徑,如果改為yum安裝的依賴包,則無須寫路徑
- 嫌麻煩的可以從這一步起參考PHP官方安裝說明:http://php.net/manual/zh/install.unix.nginx.php
- 編譯 ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mcrypt=/usr/include --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-gd --with-iconv --with-zlib --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache --enable-gd-native-ttf[php7.2版本無須此選項]
-
直接轉到到nginx的安裝目錄sbin下,執行’./nginx -v’即可
# cd /usr/local/nginx/sbin/
# ./nginx -v
[root@Anwar01 sbin]# ./nginx -v
nginx version: nginx/1.15.4
1、在profile文件末尾添加環境變量路徑,即可對所有系統用戶生效
- # vi /etc/profile
- export PATH=$PATH:/usr/local/php/bin
- 執行命令source /etc/profile修改生效
-
通過echo $PATH命令查看是否添加成功
-
環境變量配置成功后,便可在任意目錄下執行php命令或者nginx命令了(注意下面的分號要在雙引號內部,否則會報錯)
- export PATH=$PATH:/usr/local/nginx/sbin
-
$ php -r “echo ‘hello’;”
五、它項配置,啟動配置
- 設置php.ini,使用: vim /usr/local/php/lib/php.ini 打開php配置文件找到cgi.fix_pathinfo配置項,這一項默認被注釋並且值為1,根據官方文檔的說明,這里為了當文件不存在時,阻止Nginx將請求發送到后端的PHP-FPM模塊,從而避免惡意腳本注入的攻擊,所以此項應該去掉注釋並設置為0
- 設置完畢保存並退出
- 另外注意一個地方就是php.ini配置文件的位置可以在編譯前配置參數中設置,編譯參數可以寫成:--with-config-file-path=/usr/local/php 這樣的話php就回去指定的目錄下讀取php.ini配置文件,如果不加這個參數默認位置就是php安裝目錄下的lib目錄,具體也可以在phpinfo()輸出界面查看,如果php.ini放到其他位置,php讀取不到,那么所有的配置修改后都是不生效的,這點要注意
配置php-fpm
cd /usr/local/src/php-7.2.10
cp ./php.ini-production /usr/local/php/etc/php.ini //復制php配置文件到安裝目錄
rm -rf /etc/php.ini //刪除系統自帶配置文件
ln -s /usr/local/php/etc/php.ini /etc/php.ini //添加軟鏈接到 /etc目錄
# ls -l /etc/php.ini
lrwxrwxrwx. 1 root root 26 10月 6 13:17 /etc/php.ini -> /usr/local/php/etc/php.ini
cd /usr/local/php/etc
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf //復制模板文件為php-fpm配置
cp
/usr/local/php/etc/php-fpm
.d
/www
.conf.default
/usr/local/php/etc/php-fpm
.d
/www
.conf
ln -s /usr/local/php/etc/php-fpm.conf /etc/php-fpm.conf //添加軟件鏈接到 /etc目錄
/usr/local/php/sbin/php-fpm //啟動php-fpm
編輯php配置文件
# vim /usr/local/php/etc/php-fpm.conf
pid = run/php-fpm.pid //如果這個選項在配置文件存在就取消掉注釋使用,如果不存在可以忽略,請勿手動添加,否則PHP啟動會報錯。
user = www
group = www
:wq! #保存並退出
cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf
# cp /usr/local/src/php-7.2.10/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm //添加php-fpm腳本到啟動項
# ls -l /etc/init.d/php-fpm
# chmod 755 /etc/init.d/php-fpm chmod
+x
/etc/init
.d
/php-fpm
//賦予php-fpm執行權限
# ls -l /etc/init.d/php-fpm
-rwxr-xr-x. 1 root root 2405 10月 6 13:21 /etc/init.d/php-fpm
設置php-fpm開機啟動
# chkconfig php-fpm on
# chkconfig --list php-fpm
php-fpm 0:off 1:off 2:on 3:on 4:on 5:on 6:off
/etc/init
.d
/php-fpm
start
service php-fpm start
- LNMP環境中的nginx是不支持php的,需要通過fastcgi插件來處理有關php的請求。而php需要php-fpm這個組件提供該功能。在php5.3.3以前的版本php-fpm是以一個補丁包的形式存在的,而php5.3.3以后只需在編譯安裝時使用–enable-fpm加載該模塊即可,無需另行安裝。
-
檢查www用戶和www用戶組是否存在,不存在請手動創建# cat /etc/passwd | grep www# cat /etc/group | grep www# vim /usr/local/nginx/conf/nginx.confuser www www;#首行user去掉注釋,修改Nginx運行組為www www;必須與/usr/local/php/etc/php-fpm.d/www.conf中的user,group配置相同,否則php運行出錯location / {root html;index index.html index.htm index.php; //添加index.php}location ~ \.php$ {root html;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}#取消FastCGI server部分location的注釋,注意fastcgi_param行的參數,改為$document_root$fastcgi_script_name,或者使用絕對路徑:wq! #保存並退出啟動nginx服務# /etc/init.d/nginx restart#啟動php服務# /etc/init.d/php-fpm start測試php配置進入nginx默認網站根目錄# cd /usr/local/nginx/html/# ls50x.html index.html刪除默認測試頁# rm -rf /usr/local/nginx/html/*
-
# pwd/usr/local/nginx/html新建index.php文件進行測試# vim index.php<?phpphpinfo();?>:wq! #保存並退出設置目錄所有者為 www# chown www.www /usr/local/nginx/html/ -R設置目錄權限# chmod 755 /usr/local/nginx/html/ -R打開瀏覽器輸入服務器IP地址,會看到下面的界面就是php安裝成功
-
PHP Version 7.2.10
System Linux Anwar02 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 Build Date Oct 8 2018 16:46:22 Configure Command './configure' '--prefix=/usr/local/php' '--with-config-file-path=/usr/local/php/etc' '--with-mcrypt=/usr/include' '--with-mysql=mysqlnd' '--with-mysqli=mysqlnd' '--with-pdo-mysql=mysqlnd' '--with-gd' '--with-iconv' '--with-zlib' '--enable-xml' '--enable-bcmath' '--enable-shmop' '--enable-sysvsem' '--enable-inline-optimization' '--enable-mbregex' '--enable-fpm' '--enable-mbstring' '--enable-ftp' '--enable-gd-native-ttf' '--with-openssl' '--enable-pcntl' '--enable-sockets' '--with-xmlrpc' '--enable-zip' '--enable-soap' '--without-pear' '--with-gettext' '--enable-session' '--with-curl' '--with-jpeg-dir' '--with-freetype-dir' '--enable-opcache' Server API FPM/FastCGI Virtual Directory Support disabled Configuration File (php.ini) Path /usr/local/php/etc Loaded Configuration File /usr/local/php/etc/php.ini