Ubuntu14.04 安装 php7-fpm 配合 nginx

2015年12月世界上最好的语言 PHP 推出了新版本 PHP7,改进了一些语法细节,新的解释器Zend Engine 3改进了性能(虽然还是比不过 HHVM),关于 PHP 和 HHVM 的性能表现可以参看官方说明:http://www.zend.com/en/resources/php7_infographic 和 digitalocean的评论:https://www.digitalocean.com/company/blog/getting-ready-for-php-7/

php7

但是 HHVM 是虚拟机的形式,长期运行会内存泄漏(实际上在小内存 VPS 上短期运行就已经爆炸过),据说大公司使用 HHVM 的时候会自己编写 patch 解决这个问题,那么如果 PHP7 性能在原生实现上接近 HHVM 的话,PHP7 会是一个好的选择。

Debian 系的 PHP7 预编译版本发布在 PPA 上,PPA 是类似于 AUR 的第三方仓库,架设在 Launchpad 上,首先添加维护者 Ondřej Surý 的 PPA 仓库。

编辑 /etc/apt/sources.list.d/php7.list 添加以下字段:

这个时候 update 会报错 W: GPG error: http://ppa.launchpad.net trusty InRelease: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 4F4EA0AAE5267A6C

所以说需要添加 PPA 的 key(如果卡在这一步请使用科学上网工具比如 proxychains) :

装 proxychains 的时候还出了点小问题报错/bin/sh: symbol lookup error: /usr/local/lib/libproxychains4.so: undefined symbol: dlsym,手动装了libcxxtools-dev包之后好了,你们 Ubuntu minimal 真麻烦

至于各种 knowledge base 里写的 add-apt-repositoryppa:ondrej/php 命令需要安装额外的包 software-properties-common,爱装不装吧。

出现这样的警告 WARNING: add-apt-repository is broken with non-UTF-8 locales 请使用:

接下来就是装一大波包:

如果你使用的是 Apache,请装 php7.0 这个包而不是 php7.0-fpm。

注意一些问题,最好是手动把一些必要的包都填上去比如 php7.0-common,我遇到过敲 apt-get install php7.0-fpm结果apt 告诉我:The following extra packages will be installed:apache2,好在注意看了一眼···感觉打包的时候依赖写的不太对。

php7.0-fpm 的时候 php5-fpm 会被卸载,因为目录不同(PHP5 目录在 /etc/php5/ ,而 PHP7 在 /etc/php/7.0 ),PHP5 的配置文件不会对 PHP7 生效。

编辑 nginx 配置文件,修改 fastcgi_pass 项:

把默认配置里的 /var/run/php5-fpm.sock 修改成 /var/run/php/php7.0-fpm.sock

重启 nginx 即生效:

php -v 查看 PHP 版本信息:

所以说看起来不需要什么其他操作就能正常跑 WordPress。

不过我用了不到半小时就踩坑,瞄了一眼日志 php fatal error uncaught error call to undefined,不是很懂你们最好的语言。(所以说现在我已经用回 php5-fpm 了)

fuck_php7

2条评论


  1. 通过软件包安装的总是有各种各样的问题=。=
    还是自己编译比较舒服,虽然麻烦,但是后期比较容易调教(・∀・)

    回复
    1. stardust

      难说= =,即使是生产环境也不是很有必要自己编译,需要改的基本都在配置文件里只是没默认启用,另外我用了这么久 Linux 服务器还真没遇到什么编译起来会比从源里安装问题少的。反正要改模块还是得重新编译,真有需求再说。

      回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注