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

上一篇:php swoole


下一篇:2020-12-10