前言
用于编译安装php7.1
目录结构
根目录:/usr/local/php
日志目录:/usr/local/php/var/log -> /export/logs/php
脚本在此
#!/bin/bash
# 脚本, 适用于 php 7.1
basedir=/usr/local/src
cd $basedir
runuser=`whoami`
[[ $runuser == 'root' ]] || {
echo "ERROR:执行用户不是$runuser" && exit
}
#初始化服务器环境
[[ -d /export/logs/php ]] || {
echo "/export/logs/php目录不存在" && exit
}
yum install libmcrypt-devel ncurses-devel recode-devel aspell-devel curl-devel readline-devel openldap-devel enchant-devel pcre-devel net-snmp-devel libicu-devel libtool-ltdl-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel freetype-devel gcc-c++ mysql-devel
cp -p /usr/lib64/libldap* /usr/lib
ln -s /usr/lib64/mysql /usr/lib/mysql
wget http://sg2.php.net/distributions/php-7.1.25.tar.gz -O php.tar.gz
rm -rf php && mkdir php
tar xf php.tar.gz --strip-components 1 -C php
cd php && ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/etc/php.d --with-curl --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-gd --with-libxml-dir --with-zlib --with-mcrypt --with-bz2 --enable-sysvshm --enable-sysvsem --enable-soap --with-recode --with-snmp --with-readline --enable-intl --enable-dba --enable-bcmath --with-enchant --with-pspell --enable-xml --enable-sockets --enable-exif --enable-inline-optimization --enable-fpm || exit
make && make install || exit
cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm off
chmod u+x /etc/rc.d/init.d/php-fpm
cp php.ini-production /usr/local/php/etc/php.ini
cd /usr/local/php/var && rm -rf log
ln -s /export/logs/php log
cat>>/usr/local/php/etc/php.ini<<EOF
; 关闭php无用日志信息
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
; 开启php opcache 缓存功能
[opcache]
zend_extension=opcache.so
; 启动操作码缓存
opcache.enable=1
; 针对支持CLI版本PHP启动操作码缓存 一般被用来测试和调试
opcache.enable_cli=0
; 共享内存大小,单位为MB
opcache.memory_consumption=128
; 存储临时字符串缓存大小,单位为MB,PHP5.3.0以前会忽略此项配置
opcache.interned_strings_buffer=8
; 缓存文件数最大限制,命中率不到100%,可以试着提高这个值
opcache.max_accelerated_files=4000
; 一定时间内检查文件的修改时间, 这里设置检查的时间周期, 默认为 2, 单位为秒
opcache.revalidate_freq=60
; 开启快速停止续发事件,依赖于Zend引擎的内存管理模块,一次释放全部请求变量的内存,而不是依次释放内存块
opcache.fast_shutdown=1
;启用检查 PHP 脚本存在性和可读性的功能,无论文件是否已经被缓存,都会检查操作码缓存,可以提升性能。 但是如果禁用了 opcache.validate_timestamps选项, 可能存在返回过时数据的风险。
opcache.enable_file_override=1
EOF
cat>>/usr/local/php/etc/php-fpm.conf<<EOF
[global]
log_level =error
daemonize = yes
events.mechanism = epoll
rlimit_files = 10240
emergency_restart_threshold = 60
emergency_restart_interval = 60s
[fcgi]
user = webapps
group = webapps
listen = 0.0.0.0:9000
pm = static
pm.max_children = 100
pm.max_requests = 1024
request_slowlog_timeout = 1s
slowlog = /usr/local/php/var/log/php-slow.log
pm.status_path = /php-fpm_status
EOF