编译安装php7
解决依赖:
创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站建设、成都网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的宝安网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel mhash gd gd-devel 编译安装php7
先从官方网站下载php7,并且解压
./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --with-config-file-scan-dir=/usr/local/php7/etc/php.d --with-mcrypt=/usr/include --enable-mysqlnd --with-mysqli --with-pdo-mysql --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-gd --with-iconv --with-zlib --enable-xml --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache
配置无误后执行:
$ make -j4 $ make install 添加用户和组
sudo groupadd -r www $ sudo useradd -s /sbin/nologin -g nginx -r www 调整php配置
默认安装好之后,你会发现/usr/local/php7/etc下面没有php.ini文件,这个去哪里要呢?在php7的源码安装包都有。
cd /usr/src/php-7.0.0/ $ ls
可以看到有两个php.ini-xxx文件,我们可以分别vi打开来看下,一个是产品模式,一个是开发模式。
$ cp php.ini-production /usr/local/php7/etc/php.ini $ vi /usr/local/php7/etc/php.ini
可以看到php的配置。本文就不做过多的配置解释了。
启用php-fpm服务上面我们在编译php7的时候,已经将fpm模块编译了,那么接下来,我们要启用php-fpm。但是默认情况下它的配置文件和服务都没有启用,所以要我们自己来搞定。
搞定配置文件:
$ cd /usr/local/php7/etc $ mv php-fpm.conf.default php-fpm.conf $ mv php-fpm.d/www.conf.default php-fpm.d/www.conf
配置php-fpm.conf
[global] pid = /var/run/php-fpm.pid error_log = /var/log/php/php-fpm.log log_level = notice
配置 www.conf文件
[www] listen = /var/run/php-fpm.sock ;listen = 127.0.0.1:9000 user = www group = www listen.owner = www listen.group = www listen.mode = 0666 pm = dynamic pm.max_children = 400 pm.start_servers = 32 pm.min_spare_servers = 32 pm.max_spare_servers = 400 pm.max_requests = 10240
php-fpm的具体配置我们也不做深入去详解,因为在编译之前./configure的时候,我们都已经确定了一些配置,比如运行fpm的用户和用户组之类的,所以默认配置应该不会存在路径问题和权限问题。
搞定php-fpm的服务载入:
就像上面的nginx一样,我们希望使用service php-fpm start|stop|restart这些操作来实现服务的重启,但没有像nginx那么复杂,php编译好之后,给我们提供了一个php-fpm的程序,不需要我再编写分享了。这个文件放在php编译源码目录中:
$ cd /usr/src/php-7.0.0/sapi/fpm $ ls $ cp init.d.php-fpm /etc/init.d/php-fpm $ chmod +x /etc/init.d/php-fpm $ chkconfig --add php-fpm $ chkconfig php-fpm on
通过上面这个操作,我们就可以使用sevice php-fpm start来启用php-fpm了。用ps -ef | grep php-fpm看看进程吧。
nginx代理php实现访问通过上面的操作,nginx和php-fpm服务都被我们跑起来了,但是php-fpm走的是127.0.0.1:9000,外网是无法访问的,而且我们也不可能直接通过php-fpm给外网提供服务,我们用nginx去代理9000端口执行php。
实际上这个过程只需要对nginx进行配置即可,fpm已经在后台运行了,我们需要在nginx的配置文件中增加代理的规则,即可让用户在访问80端口,请求php的时候,交由后端的fpm去执行,并返回结果。
vi /usr/local/nginx/conf/nginx.conf
如果你大致了解过nginx的配置,应该能够很快分辨出这个配置文件里面的结构,并且知道server代表一个虚拟主机,要增加虚拟主机就再增加一个server,而且这个conf文件中也给出了例子。那么怎么代理php-fpm呢?找到:
#location ~ .php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /script$fastcgi_script_name; # include fastcgi_params; #}
把前面的#注释符号去掉,把script改为$document_root最终如下:
location ~ .php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /$document_root$fastcgi_script_name; include fastcgi_params; }
这样就OK了,重新载入nginx配置即可
$ service nginx reload
然后到/usr/local/nginx/html去写一个php文档,进行测试吧。
如果你的程序能够正常运行起来,用ip作为外网访问地址访问成功,那么恭喜你,本篇文章的目的就达到了
添加php的环境变量和启动profile 配置
echo "export PATH=/usr/local/php/bin:/usr/local/php/sbin:$PATH">> /etc/profile source /etc/profile service php-fpm start
文章题目:编译安装php7
标题来源:http://cdiso.cn/article/cggcgh.html