1. 云栖社区>
  2. PHP教程>
  3. 正文

编译安装php7

作者:用户 来源:互联网 时间:2017-12-01 14:22:21

安装编译php7

编译安装php7 - 摘要: 本文讲的是编译安装php7, 摘自:https://segmentfault.com/a/1190000004123048 编译安装php7 先从官方网站下载php7,并且解压 ./configure --prefix=/usr/local/php7 /--with-

摘自:https://segmentfault.com/a/1190000004123048


编译安装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
$ make install
调整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的具体配置我们也不做深入去详解,因为在编译之前./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$ {
# roothtml;
#fastcgi_pass 127.0.0.1:9000;
#fastcgi_indexindex.php;
#fastcgi_paramSCRIPT_FILENAME/script$fastcgi_script_name;
#include fastcgi_params;
#}

把前面的#注释符号去掉,把script改为$document_root最终如下:


location ~ /.php$ {
roothtml;
fastcgi_pass 127.0.0.1:9000;
fastcgi_indexindex.php;
fastcgi_paramSCRIPT_FILENAME/$document_root$fastcgi_script_name;
include fastcgi_params;
}

这样就OK了,重新载入nginx配置即可


$ service nginx reload

然后到/usr/local/nginx/html去写一个php文档,进行测试吧。


如果你的程序能够正常运行起来,用ip作为外网访问地址访问成功,那么恭喜你,本篇文章的目的就达到了



以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索安装 , 编译 php7 ,以便于您获取更多的相关知识。