1.依赖包和编译工具的yum安装
对于 CentOS ,yum 向来是用作安装大批量依赖的工具,所以,一股脑安装这些依赖库吧。
yum install -y gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel pcre-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel curl gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel readline-devel libxslt-devel expat-devel xmlrpc-c xmlrpc-c-devel
2.编译安装re2c/bison/limcrypt
之前我们已经安装了 gcc 、 automake 、 autoconf 等,还需要 re2c 和 bison 这两个。这两个都是 PHP 的语法分析器,两者的下载地址:
RE2C http://sourceforge.net/projects/re2c/files/0.15.3/re2c-0.15.3.tar.gz
BSION http://ftp.gnu.org/gnu/bison/bison-3.0.4.tar.gz (编译mysql时装了,可以跳过)
然后分别编译安装,这两个编译安装不需要什么特别的配置参数,很直接 ./configure make && make install。
还有 libmcrypt 这个东西需要安装,下载地址。
ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
3.下载最新版本php-7.1.3
wget http://cn2.php.net/get/php-7.1.3.tar.bz2/from/this/mirror
4.解压 预编译配置php
tar -jxvf php-7.1.3.tar.bz2 ./configure \ --prefix=/usr/local/php/7.0.0 \ --with-config-file-path=/usr/local/php/7.0.0/etc \ --with-config-file-scan-dir=/usr/local/php/7.0.0/etc/conf.d \ --enable-fpm \ --with-fpm-user=web \ --with-fpm-group=www \ --enable-soap \ --with-openssl \ --with-openssl-dir \ --with-mcrypt \ --with-pcre-regex \ --with-zlib \ --with-iconv \ --with-bz2 \ --enable-calendar \ --with-curl \ --with-cdb \ --enable-dom \ --enable-exif \ --with-pcre-dir \ --enable-ftp \ --with-gd \ --with-jpeg-dir \ --with-png-dir \ --with-freetype-dir \ --with-gettext \ --with-gmp \ --with-mhash \ --enable-mbstring \ --with-libmbfl \ --with-onig \ --enable-pdo \ --with-pdo-mysql \ --with-zlib-dir \ --with-readline \ --enable-session \ --enable-shmop \ --enable-simplexml \ --enable-sockets \ --enable-sysvmsg \ --enable-sysvsem \ --enable-sysvshm \ --enable-wddx \ --with-libxml-dir \ --with-xsl \ --enable-zip \ --enable-mysqlnd \ --with-mysqli \ --without-pear
部分配置参数说明:http://php.net/manual/zh/configure.about.php
配置完成后 可见
5.配置执行完毕后,执行编译安装:
make clean && make && make install
6.创建php配置文件
php-7.1.3/> cp php.ini-production /usr/local/php7/etc/php.ini /usr/local/php7/etc/> cp php-fpm.conf.default php-fpm.conf /usr/local/php7/etc/php-fpm.d/> cp www.conf.default www.conf
//添加至服务 并设置权限
php-7.1.3/sapi/fpm/> cp init.d.php-fpm /etc/init.d/php-fpm
chmod 755 /etc/init.d/php-fpm
7.配置php.ini
# 设置PHP的opcache和memcache扩展库 zend_extension=opcache.so extension=memcache.so # 设置PHP的扩展库路径 extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/" # 避免PHP信息暴露在http头中 expose_php = Off # 避免暴露php调用mysql的错误信息 display_errors = Off # 开启PHP错误日志(路径在php-fpm.conf中配置) log_errors = On # 设置PHP的时区 date.timezone = PRC # 开启opcache(1733行左右) opcache.enable=1 # 设置PHP脚本允许访问的目录 # open_basedir = /usr/share/nginx/html;
8.配置php-fpm
php-fpm.conf 进程服务主配置文件
# 设置错误日志的路径 error_log = /var/log/php-fpm/error.log # 引入www.conf文件中的配置 include=/usr/local/php7/etc/php-fpm.d/*.conf # 设置主进程打开的最大文件数 rlimit_files = 102400 pid = run/php-fpm.pid
www.conf 进程服务扩展配置文件
# 创建相关用户和用户组并设置 user = www group = www # 设置php监听方式 listen = 127.0.0.1:9000 # 注意这里要设置PHP套接字文件的权限,默认是root,Nginx无法访问。 listen = /var/run/php-fpm/php-fpm.sock # 开启慢日志 slowlog = /var/log/php-fpm/php-slow.log request_slowlog_timeout = 10s request_terminate_timeout = 30 # 设置工作进程数(根据实际情况设置) pm.max_children = 50 # 这里需要注意,pm.start_servers 不能小于 pm.min_spare_servers pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 10 pm.max_requests = 10240 # 设置php的session目录(所属用户和用户组都是www) php_value[session.save_handler] = files php_value[session.save_path] = /var/tmp/php/session
9 php-fpm 开启关闭
php-fpm 启动: /usr/local/php/sbin/php-fpm php-fpm 关闭: kill -INT `cat /usr/local/php/var/run/php-fpm.pid` php-fpm 重启: kill -USR2 `cat /usr/local/PHP/var/run/php-fpm.pid` /etc/init.d/php-fpm restart 查看php-fpm进程数: ps aux | grep -c php-fpm
10添加到服务 设置自启动
chkconfig --add /etc/init.d/php-fpm chkconfig php-fpm on #添加环境变量 echo -e '\nexport PATH=/usr/local/php7/bin:/usr/local/php7/sbin:$PATH\n' >> /etc/profile && source /etc/profile
11整合nginx与php
修改nginx配置文件nginx.conf
location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi_params; }
12.在html目录创建php文件进行测试