CentOS7安装PHP7
CentOS版本:CentOS-7-x86_64-Minimal-1611.iso
下载地址:
http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso
测试的时候先关闭所有服务器的防火墙(IPTABLES)与 selinux
# vi /etc/selinux/config #(改为SELINUX=disabled)保存退出
# systemctl stop firewalld.service && systemctl disable firewalld.service && init 6
# mkdir -p /data/software && cd/data/software && yum install -y net-tools wget
先修改yum源:
# cd /etc/yum.repos.d && mv CentOS-Base.repo CentOS-Base.repo.backup
# wget -c http://mirrors.163.com/.help/CentOS7-Base-163.repo
# mv CentOS7-Base-163.repo CentOS-Base.repo
# yum clean all && yum makecache
# cd /data/software && yum -yinstall wget gcc gcc-c++ libxml2 libxml2-devel libpng-devel libjpeg-develfreetype-devel libmcrypt libmcrypt-develmcrypt mhash curl-devel openssl openssl-devel unzip zip
# cd /data/software && wget -c http://www.ijg.org/files/jpegsrc.v9b.tar.gz && tar -zxvf jpegsrc.v9b.tar.gz && cd jpeg-9b && ./configure --prefix=/usr/local/jpeg-9b && make && make install
# cd /data/software && wget -c http://ftp.twaren.net/Unix/NonGNU//freetype/freetype-2.8.tar.gz&& tar -zxvf freetype-2.8.tar.gz && cd freetype-2.8 && ./configure --prefix=/usr/local/freetype&& make && make install
# cd /data/software && wget -c http://cn2.php.net/distributions/php-7.1.11.tar.gz&& tar -zxvf php-7.1.11.tar.gz && cd php-7.1.11
我在运行./configure后出现下面的错误,解决方法:
# vi /data/software/php-7.1.11/Makefile
在EXTRA_LIBS = 的最后面加上:-lcrypto 如下图,然后再make clean&& make && make install
由于make后出现下面错误:
因此我编译时去掉--with-openssl 同时加了:--disable-ssl
# ./configure --with-gettext --enable-fpm --enable-opcache--enable-mbstring --enable-bcmath --enable-sockets --with-gd --with-config-file-path=/etc --with-mysqli=mysqlnd--disable-fileinfo --with-freetype-dir=/usr/local/freetype --with-curl --with-zlib--disable-ipv6 --disable-debug --disable-ssl--with-png-dir --with-jpeg-dir=/usr/local/jpeg-9b --enable-zip && make && make install
安装openssl扩展:
# cd /data/software/php-7.1.11/ext/openssl &&mv config0.m4 config.m4 && /usr/local/bin/phpize && ./configure --with-php-config=/usr/local/bin/php-config && make && make install
下面安装gd图形图像库的扩展
# cd /data/software/php-7.1.11/ext/gd && /usr/local/bin/phpize && ./configure --with-php-config=/usr/local/bin/php-config --with-jpeg-dir=/usr/local/jpeg-9b--with-png-dir=/usr/local --with-freetype-dir=/usr/local/freetype && make && make install
下面安装mysqli的扩展
# cd /data/software/php-7.1.11/ext/mysqli && /usr/local/bin/phpize && ./configure --with-php-config=/usr/local/bin/php-config --with-mysqli=mysqlnd && make&& make install
安装php-redis扩展到php
进入下载页面:https://github.com/phpredis/phpredis
把下载的phpredis-master.zip上传到/data/software目录下
# cd /data/software && wget -c https://codeload.github.com/phpredis/phpredis/zip/develop && unzip develop && cd phpredis-develop && /usr/local/bin/phpize && ./configure --with-php-config=/usr/local/bin/php-config && make && make install
下面安装pdo_mysql扩展(如果是thinkphp框架的话一般都要用到这个扩展)
# cd /data/software/php-7.1.11/ext/pdo_mysql&& /usr/local/bin/phpize && ./configure --with-php-config=/usr/local/bin/php-config && make && makeinstall
下面安装mcrypt加密扩展
# cd /data/software/php-7.1.11/ext/mcrypt && /usr/local/bin/phpize && ./configure --with-php-config=/usr/local/bin/php-config && make && make install
下面安装ftp扩展
# cd /data/software/php-7.1.11/ext/ftp&& /usr/local/bin/phpize && ./configure --with-php-config=/usr/local/bin/php-config && make && make install
# cd /data/software/php-7.1.11/ext/sockets&& /usr/local/bin/phpize && ./configure --prefix=/usr/local/php/lib --with-php-config=/usr/local/bin/php-config --enable-sockets && make && make install
# cd /data/software/php-7.1.11/ext/opcache &&/usr/local/bin/phpize && ./configure--with-php-config=/usr/local/bin/php-config -enable-opcache && make && make install
在php.ini中加入:
; 开关打开
opcache.enable=1
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20160303/opcache.so
; 可用内存, 酌情而定, 单位 megabytes
opcache.memory_consumption=128
; interned string 的内存大小, 也可调
opcache.interned_strings_buffer=8
; 最大缓存的文件数目, 命中率不到 100% 的话, 可以试着提高这个值
opcache.max_accelerated_files=4000
; Opcache 会在一定时间内去检查文件的修改时间, 这里设置检查的时间周期, 默认为 2, 单位为秒
opcache.revalidate_freq=60
; 是否快速关闭, 打开后在PHP Request Shutdown的时候回收内存的速度会提高
opcache.fast_shutdown=1
opcache.enable_cli=1
下面进入php扩展目录:
# cd /usr/local/lib/php/extensions/no-debug-non-zts-20160303/ && ll
# cd/data/software/php-7.1.11 && cp php.ini-production /etc/php.ini
覆盖php.ini的系统默认路径(这时要指定编译路径:--with-config-file-path=/etc)
# cp php.ini-production /etc/php.ini
# vi /etc/php.ini
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20160303/"
extension = "/usr/local/lib/php/extensions/no-debug-non-zts-20160303/redis.so"
extension = "/usr/local/lib/php/extensions/no-debug-non-zts-20160303/ftp.so"
extension = "/usr/local/lib/php/extensions/no-debug-non-zts-20160303/pdo_mysql.so"
extension = "/usr/local/lib/php/extensions/no-debug-non-zts-20160303/openssl.so"
然后再重启php-fpm: service php-fpmrestart
查看phpinfo()如下则安装成功:
# cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf && cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm && chmod a+x /etc/init.d/php-fpm && chkconfig --add /etc/init.d/php-fpm && chkconfig --add /etc/init.d/php-fpm && cd /etc/init.d && chkconfig php-fpm on && chkconfig php-fpm on
创建用户组和用户:
# groupadd -f www && useradd -g www www
启动服务器时出现下面错误:
根据上面的提示修改:
把上面红色的改为下面红色的:
# cd /usr/local/etc/php-fpm.d && mv www.conf.default php-fpm.conf && vi php-fpm.conf
把上面的nobody用户尽量改为和nginx中运行的用户相同(这里都改为:www)
在/usr/local/etc/php-fpm.d/php-fpm.conf中你可以找到以下参数:
pm.max_children:static模式下创建的子进程数或dynamic模式下同一时刻允许最大的php-fpm子进程数量。
pm.max_requests:php-fpm子进程能处理的最大请求数(在实际环境中这个稍微配大点)。
pm.start_servers:动态方式下的起始php-fpm进程数量。
pm.min_spare_servers:动态方式下服务器空闲时最小php-fpm进程数量。
pm.max_spare_servers:动态方式下服务器空闲时最大php-fpm进程数量。
如果dm设置为 static,那么其实只有pm.max_children这个参数生效。系统会开启设置数量的php-fpm进程。
如果dm设置为 dynamic,那么pm.max_children参数失效,后面3个参数生效,系统会在php-fpm运行开始的时候启动pm.start_servers个php-fpm进程,然后根据系统的需求动态在pm.min_spare_servers和pm.max_spare_servers之间调整php-fpm进程数
# /etc/init.d/php-fpm start 或者 service php-fpm restart
# netstat -tunlp |grep 9000
下面把php加入到系统全局变量中
# cd && vi .bashrc
exportPATH=/usr/local/bin:$PATH
# source .bashrc && php -v && php -m