1. 程式人生 > >PHP 5.6.39 安裝、配置、日誌配置詳解

PHP 5.6.39 安裝、配置、日誌配置詳解

PHP軟體版本5.6.39
一、PHP的編譯安裝管理:
① : php編譯安裝,php的編譯安裝依賴的庫比較多,編譯安裝會稍微難一點
yum -y install epel-release [安裝epel源]
yum -y install gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel libxml2 libxml2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel openldap openldap-devel libmcrypt libmcrypt-devel
【安裝RZ上傳軟體:yum install lrzsz -y】XSHELL好使,putty使用後無反應。 上傳命令:rz -E
② :tar -zxf php-5.6.39.tar.gz
cd php-5.6.39
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-ctype --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --with-gettext --enable-fpm
make
make install
cp php.ini-production /usr/local/php/etc/php.ini 原始碼安裝時我們指定配置檔案放在/usr/local/php/etc,我們把預設的配置檔案改名並放到相應目錄。
【編譯安裝說明】:
--prefix=/usr/local/php #安裝路徑
--with-config-file-path=/usr/local/php/etc #配置檔案路徑
--enable-fpm #需要支援fpm,nginx是通過fpm來呼叫php程式的

③ php安裝驗證: cd /usr/local/php/bin/
./php –v

bin目錄放置PHP的程式,像nginx一樣,
etc目錄放置php的配置檔案,
include目錄放置標頭檔案,
Lib目錄放置一些包和一些依賴的庫,
sbin目錄放置php-fpm var目錄放置日誌等
④ php的管理命令
/usr/local/php/bin/php -i|grep ini #檢視配置檔案路徑
/usr/local/php/bin/php -m #檢視php的模組
/usr/local/php/bin/php -i|grep configure #檢視php的環境檢查引數,網站搬家要用到

二、PHP的日誌和動態安裝擴充套件模組:
① cd /usr/local/php/bin vim php.ini
php錯誤日誌配置:
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
記錄所有的日誌,不包含過時函式提示和php嚴格語法提示,通常也會忽略E_NOTICE的報錯。

php錯誤日誌記錄到檔案
log_errors = On
log_errors_max_len = 1024
error_log = /tmp/php_errors.log
錯誤日誌直接輸出到螢幕,注意生產環境需要關閉
display_errors = On

php需要更改時區配置
date.timezone = PRC
PRC的英文含義是 People’s Republic of China
【php的模組再說明:/usr/local/php/bin/php -m #需要gd模組才能繪圖,需要mysql相關模組才能操作mysql】

②動態安裝模組【即後期安裝所需的功能模組】
首先需要安裝動態模組的包: yum install autoconf –y
其次需要使用動態擴充套件工具: /usr/local/php/bin/phpize #php動態擴充套件模組的工具

假設php需要操作redis的話,可以動態安裝php redis模組,不需要重新編譯php。
去pecl網站下載redis的擴充套件 【網址 https://pecl.php.net/package/redis
tar -zxvf redis-4.2.0.tgz
cd redis-4.2.0
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config make && make install

③php配置檔案裡新增redis.so,並檢查redis擴充套件有沒有安裝成功
vim /usr/local/php/etc/php.ini
配置檔案新增extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/redis.so

/usr/local/php/bin/php -m

三、PHP-fpm的配置和管理:
①php-fpm作用:nginx呼叫php程式是通過php-fpm這個介面程式來的,php-fpm專門為nginx+php的架構開發。
②php-fpm的預設配置樣例檔案/usr/local/php/etc/php-fpm.conf.default
提取樣例配置檔案內容 cat /usr/local/php/etc/php-fpm.conf.default|egrep -v '^;|^$'
[global]
[www]
user = nobody
group = nobody
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
③php-fpm的預設配置檔案位置 /usr/local/php/etc/php-fpm.conf; PHP-FPH啟動時讀取該檔案,需要自己建立配置檔案,預設安裝完成後是沒有的。
vim /usr/local/php/etc/php-fpm.conf 將提取的步驟二的內容複製到該檔案中。
④ php-fpm的啟動和關閉
/usr/local/php/sbin/php-fpm -t #先檢查配置檔案
/usr/local/php/sbin/php-fpm #啟動php-fpm
pkill -9 php-fpm #閉關php-fpm
⑤ php-fpm加入systemctl管理/usr/lib/systemd/system/php-fpm.service
vim /usr/lib/systemd/system/php-fpm.service 複製以下內容:

[Unit]
Description=php-fpm
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
ExecStop=pkill -9 php-fpm

[Install]
WantedBy=multi-user.target

管理php-fpm
systemctl enable php-fpm #開機啟動php-fpm
systemctl start php-fpm #啟動php-fpm

預設啟動檢查:
ps auxf|grep php-fpm
netstat -tulnp|grep php-fpm

⑥ 預設配置說明
user、group代表php-fpm執行的使用者和組
listen表示fpm監聽的方式,預設使用的是網路的監聽方式,還有一種socket的監聽方式

socket監聽的配置方式
listen = /dev/shm/php-fpm.sock
listen.owner = www
listen.group = www

兩種監聽方式的選擇
如果nginx+php-fpm是在同一臺機器的話,建議使用sock的方式
如果nginx+php-fpm在不同機器的話,只能選擇網路方式

php-fpm的工作程序數的配置
pm = dynamic #pm可以配置php-fpm的程序管理方式,有動態dynamic或者靜態static兩種方式
pm的相關配置:可配置最大php-fpm的數量 pm.max_children = 5
啟動需要多個fpm pm.start_servers = 2
fpm最小要空閒幾個 pm.min_spare_servers = 1
fpm最大要空閒幾個 pm.max_spare_servers = 3 pm.min_spare_servers = 1

⑦nginx+fpm的兩種結合方式:
⑦->①第一種,使用網路連線的方式。php-fpm監聽在127.0.0.1:9000
[global]
[www]
user = www
group = www
listen = 127.0.0.1:9000

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
nginx使用網路的方式連線php-fpm
user www; #更改使用者 【特別注意:nginx+php-fpm整合,啟動這兩個程序的使用者名稱一定要一致!!!】
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;
}
測試nginx+fpm網路連線方式是否成功:瀏覽器訪問一個PHP頁面,如能正常顯示錶明配置成功。
⑦->②第二種,使用socket的方式。php-fpm監聽在/dev/shm/php-fpm.sock
[global]
[www]
user = www
group = www
listen = /dev/shm/php-fpm.sock
listen.owner = www listen.group = www

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

nginx使用socket的方式連線php-fpm
user www; #更改使用者 【特別注意:nginx+php-fpm整合,一】
index index.html index.htm index.php; #預設的網頁展現增加一個index.php
location ~ .php$ {
root html;
fastcgi_pass unix:/dev/shm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
測試nginx+fpm的socket方式是否成功

⑧nginx+fpm的日誌說明:
客戶訪問一個php程式的過程: 客戶 -> nginx -> php-fpm -> nginx -> 客戶

nginx的upstream_response_time觀察呼叫php程式花費的時間 $upstream_response_time $request_time
nginx的error日誌說明:error_log logs/error.log notice;

php的錯誤日誌顯示開啟的話,會直接顯示網頁上:display_errors = On 【 /usr/local/php/etc/php.ini】

php-fpm的錯誤日誌記錄 【/usr/local/php/etc/php-fpm.conf】
[global]
error_log = /tmp/fpm_error_log
log_level = notice

php-fpm的慢日誌,php只要處理超過1s就會有記錄
slowlog = /tmp/phpslow.log
request_slowlog_timeout = 1s