1. 程式人生 > 實用技巧 >PHP5.6.40安裝

PHP5.6.40安裝

一.PHP5.6.40編譯安裝

1、安裝依賴
yum install libxml2-devel openssl openssl-devel libcurl-devel libjpeg-devel libpng-devel libxslt-devel postgresql-devel libmcrypt-devel freetype-devel gcc* autoconf -y
2、編譯安裝PHP
./configure --prefix=/usr/local/php/ --enable-fpm --with-pgsql --with-gd --with-jpeg-dir --with-png-dir
--with-zlib-dir --with-openssl \
--with-pdo_pgsql --enable-opcache --with-curl --with-mcrypt --enable-mbstring --with-iconv --enable-calendar --with-xsl --with-gettext \
--with-mhash --with-xmlrpc --enable-zip --with-mysql=shared,mysqlnd --enable-sockets --with-gd --with-freetype-dir --enable-bcmath
make
&& make install

3.配置檔案

cp /usr/local/src/php-5.6.40/php.ini-development /usr/local/php/lib/php.ini
sed -i 's/^;\(date.timezone\).*/\1 = PRC/' /usr/local/php/lib/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
sed -i 's/nobody/www/' /usr/local/php/etc/php-fpm.conf
cp /usr/local/src/php-5.6.40
/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod +x /etc/init.d/php-fpm

二.PHP擴充套件安裝

1、Mosquitto 擴充套件

#安裝rdkafka擴充套件
wget https://liquidtelecom.dl.sourceforge.net/project/re2c/0.13.6/re2c-0.13.6.tar.gz
tar re2c-0.13.6.tar.gz
./configure
make && make install
git clone https://github.com/edenhill/librdkafka.git
cd librdkafka
./configure
make && make install
wget http://pecl.php.net/get/rdkafka-3.1.2.tgz
tar xvf rdkafka-3.1.2.tgz
cd rdkafka-3.1.2
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
#安裝swoole擴充套件
wget http://pecl.php.net/get/swoole-1.8.12.tgz
cd swoole-1.8.12
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
#安裝phalcon擴充套件
git clone git://github.com/phalcon/cphalcon.git
cd cphalcon/ext
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
#安裝imagick擴充套件
yum install -y libtool-ltdl libtool-ltdl-devel libzstd-devel
wget https://imagemagick.org/download/ImageMagick.tar.gz
tar xzvf ImageMagick.tar.gz
cd ImageMagick-7.0.8-64
./configure --prefix=/usr/local/imagemagick
make && make install
wget http://pecl.php.net/get/imagick-3.4.3.tgz
tar xvf imagick-3.4.3.tgz
cd imagick-3.4.3
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-imagick=/usr/local/imagemagick
make && make install
#安裝mongo擴充套件
https://pecl.php.net/get/mongodb-1.6.0.tgz
tar xvf mongodb-1.6.0.tgz
cd mongodb-1.6.0
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
#安裝redis擴充套件
wget https://pecl.php.net/get/redis-4.3.0.tgz
tar xvf redis-4.3.0.tgz
cd redis-4.3.0
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

2. 修改配置檔案
vi /usr/local/php/lib/php.ini 新增以下配置
extension=swoole.so
extension=redis.so
extension=mosquitto.so
extension=phalcon.so
extension=imagick.so
extension=rdkafka.so
extension=mongo.so
3.更新配置
/etc/init.d/php-fpm reload

####php-fpm.conf幾個重要的引數說明如下
pm = dynamic #指定程序管理方式,有3種可供選擇:static、dynamic和ondemand。
pm.max_children = 16 #static模式下建立的子程序數或dynamic模式下同一時刻允許最大的php-fpm子程序數量。
pm.start_servers = 10 #動態方式下的起始php-fpm程序數量。
pm.min_spare_servers = 8 #動態方式下伺服器空閒時最小php-fpm程序數量。
pm.max_spare_servers = 16 #動態方式下伺服器空閒時最大php-fpm程序數量。
pm.max_requests = 500 #php-fpm子程序能處理的最大請求數。
pm.process_idle_timeout = 10s
request_terminate_timeout = 120


####pm三種程序管理模式說明如下:
pm = static,始終保持一個固定數量的子程序,這個數由pm.max_children定義,這種方式很不靈活,也通常不是預設的。
pm = dynamic,啟動時會產生固定數量的子程序(由pm.start_servers控制)可以理解成最小子程序數,而最大子程序數則由pm.max_children去控制,子程序數會在最大和最小數範圍中變化。閒置的子程序數還可以由另2個配置控制,分別是pm.min_spare_servers和pm.max_spare_servers。如果閒置的子程序超出了pm.max_spare_servers,則會被殺掉。小於pm.min_spare_servers則會啟動程序(注意,pm.max_spare_servers應小於pm.max_children)。
pm = ondemand,這種模式和pm = dynamic相反,把記憶體放在第一位,每個閒置程序在持續閒置了pm.process_idle_timeout秒後就會被殺掉,如果伺服器長時間沒有請求,就只會有一個php-fpm主程序。弊端是遇到高峰期或者如果pm.process_idle_timeout的值太短的話,容易出現504 Gateway Time-out錯誤,因此pm = dynamic和pm = ondemand誰更適合視實際情況而定。

####memory_limit
需要注意的是,memory_limit 的值越高,即單個 PHP 程序佔用的記憶體越多,系統能夠併發處理的請求越少。例如,一個 2G 記憶體的機器
memory_limit 設為 128M, 則同時最多能處理 16 個請求
memory_limit 設為 256M, 則同時最多能處理 8 個請求
memory_limit 設為 512M, 則同時最多能處理 4 個請求

####每個程序最大記憶體限制
php-fpm.conf
php_admin_value[memory_limit] = 128M

####每個php指令碼最大記憶體限制
php.ini
memory_limit = 128M