linux编译安装php7+nginx

有很多坑人的内网情况下,需要手动安装PHP,下面就带大家一起来学习一下。有一些企业内网环境用的linux版本又低,又不能装docker,那么就要折腾一下吧。

如果能用docker,如果能联网,如果能升级内核,不装TMD该死的十三年前的内核的RHEL6.5,那么就没有这篇文章及下面的总结了。

环境:Centos 6.5或者RHEL 6.5,其他比如ubuntu或者Debian会有一些不一样,比如安装包是dpkg -i命令,参考ubuntu安装与删除软件的命令

PHP7编译安装

下载PHP源文件:

本次编译安装的php版本

php官网:http://www.php.net/

php7.1.5:http://hk1.php.net/get/php-7.1.5.tar.gz/from/this/mirror

解压文件,安装依赖,配置PHP

tar zxvf php-7.1.5.tar.gz

有几个依赖需要下,一般来说gcc gcc++都有,而libxml2-devel需要根据大家自己的linux版本去下载。

https://pkgs.org/ 到这里搜索下载。

cd php-7.1.5/

这里我来说几个坑:

  1. 安装完成之后,phpinfo中configure file为None:

    默认路径在: /usr/local/php7/etc/php.ini,可以通过strace /usr/local/php7/bin/php -i 2>/tmp/php-fpm.log来查看fpm调用了什么位置的php.ini

    参考: https://www.hongweipeng.com/index.php/archives/1007/

    需要配置--with-config-file-path=/xxx/xxx,如--with-config-file-path=/etc

  2. 配置基本的php安装目录,与enable开启fpm。

    --prefix=/usr/local/php7 --enable-fpm

  3. 安装模块,最终的配置命令:

    如果配置失败了,提示没有autoconf,请跳到后面配置autoconf

    `./configure --prefix=/usr/local/php7/ --enable-mbstring --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-config-file-path=/usr/local/php7/etc/ --enable-fpm --enable-mysqlnd --with-pdo-mysql=mysqlnd --enable-fpm --enable-opcache --with-zlib --with-openssl --with-iconv`
    

    查看一下Makefiles,查找一下EXTRA_LIBS,如果没有-liconv

    请追加-liconv,最后看起来是这样的:

    EXTRA_LIBS = -lcrypt -lcrypt -lrt -lpng -lz -lcurl -lrt -lm -ldl -lnsl -lrt -lxml2 -lz -lm -lcurl -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt -lxml2 -lz -lm -lxml2 -lz -lm - lxml2 -lz -lm -lcrypt -liconv

    查看php配置的几种方法:

    (1)phpinfo()直接,直观;

    (2)php -i |grep "这里是参数名称"

    比较全的配置命令:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    	./configure --prefix=/usr/local/php \  
    --with-apxs2=/usr/local/apache/bin/apxs \
    --with-curl \
    --with-freetype-dir=/usr/local/freetype \
    --with-gd \
    --with-gettext \
    --with-iconv-dir \
    --with-mysqli \
    --with-openssl \
    --with-pcre-regex \
    --with-pdo-mysql \
    --with-pdo-sqlite \
    --with-pear \
    --with-png-dir=/usr/local/libpng \
    --with-jpeg-dir=/usr/local/libjpeg \
    --with-xsl \
    --with-zlib \
    --enable-fpm \
    --enable-bcmath \
    --enable-libxml \
    --enable-inline-optimization \
    --enable-gd-native-ttf \
    --enable-mbregex \
    --enable-mbstring \
    --enable-opcache \
    --enable-pcntl \
    --enable-shmop \
    --enable-soap \
    --enable-sockets \
    --enable-sysvsem \
    --enable-xml \
    --enable-zip

    shell> make
    shell> make install
    ```

    **重要:如果编译失败,请`make clean` **

    ### 安装与环境变量的配置

make
make test
make install

1
2
3
4
5
安装完以后,PHP 安装到了 `/usr/local/php7`,我们切进去:

`cd /usr/local/php7`

有几个配置文件,如`php.ini`,`php-fpm.conf`,`php-fpm.d/www.conf`需要配置一下:

cp /usr/local/src/php-7.0.10/php.ini-production etc/php.ini
cp etc/php-fpm.conf.default etc/php-fpm.conf
cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf

1
2
3
4
5
6
7
8
9
10
11

同时修改一下`php-fpm.conf`,这里需要添加用户`adduser www`和组`usermod -a -G www www`;

参考:

[http://blog.sina.com.cn/s/blog_4b93170a0100nggo.html](http://blog.sina.com.cn/s/blog_4b93170a0100nggo.html)

[https://cnzhx.net/blog/linux-add-user-to-group/](https://cnzhx.net/blog/linux-add-user-to-group/)


修改`www.conf`:

user = www
group = www
listen = 127.0.0.1:9000
pm.max_children = 32
pm.start_servers = 32
pm.min_spare_servers = 32
pm.max_spare_servers = 32

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

最后启动 php-fpm:

`/usr/local/php7/sbin/php-fpm -D`

配置全局变量

修改`/etc/profile`文件使其永久性生效

添加下面两行(也可以写成一行)

`export PATH=$PATH:/usr/local/php7/bin`

source一下`/etc/profile`

到这里基本上就完成了PHP7的编译、配置、启动。

### 说一说扩展extensions

有的时候,像`gd`,`iconv`,`pdo_mysql`扩展需要手动编译安装:

重要的事情说三遍:

不要百度,请在插件的官网下载tar.gz的原码来编译与安装!!!!

不要百度,请在插件的官网下载tar.gz的原码来编译与安装!!!!

不要百度,请在插件的官网下载tar.gz的原码来编译与安装!!!!



下面提供几个常见插件的官网:

* zlib

官网:[http://www.zlib.net/](http://www.zlib.net/)

安装举例

shell> tar xf zlib.1.2.8.tar.gz  
shell> cd zlib.1.2.8  
shell> ./configure  
shell> make test  
shell> make install  
1
2
3
4
5

* GD

libpng
官网:[http://www.libpng.org/](http://www.libpng.org/)
shell> tar xf libpng-1.6.21 shell> cd libpng-1.6.21 shell> ./configure --prefix=/usr/local/libpng shell> make shell> make check shell> make install
1
2
3

jpeg
官网:[http://www.ijg.org/](http://www.ijg.org/)
shell> tar xf jpegsrc.v9.tar.gz shell> cd jpeg-9 shell> ./configure --prefix=/usr/local/libjpeg shell> make shell> make install
1
2
3

freetype 字体操作库
官网:[http://www.freetype.org/](http://www.freetype.org/)
shell> tar xf freetype-2.6.3.tar.bz2 shell> sh autogen.sh shell> ./configure --prefix=/usr/local/freetype shell> make shell> make install
1
2
3
4
5
* 	libiconv

[https://www.gnu.org/software/libiconv/](https://www.gnu.org/software/libiconv/)

操作举例
cd /usr/local/src tar zxvf libiconv-1.14.tar.gz #解压 cd libiconv-1.14 #进入安装目录 ./configure --prefix=/usr/local/libiconv #配置
1
2
3
4
5
6
7


### 如果还需要配置如`Opcache`或者`yac`:

同样。

1. 首先,下载[http://pecl.php.net/get/yac-2.0.1.tgz](http://pecl.php.net/get/yac-2.0.1.tgz)
tar zxvf yac-2.0.1.tgz cd yac-2.0.1
1
2

2. php扩展标准流程:
/usr/local/php7/bin/phpize ./configure --with-php-config=/usr/local/php7/bin/php-config make && make install Installing shared extensions: /usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/
1
2

3. 配置`php.ini`:
vim /usr/local/php7/etc/php.ini extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/" zend_extension=opcache.so extension=yac.so [opcache] opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=64 opcache.validate_timestamps=1 opcache.revalidate_freq=2 opcache.file_cache=/dev/shm [yac] yac.enable = 1 yac.keys_memory_size = 4M yac.values_memory_size = 64M yac.compress_threshold = -1 yac.enable_cli = 0
1
2

4. 重启php-fpm:
kill `cat /var/run/php-fpm.pid` /usr/local/php7/sbin/php-fpm -D
1
2

如果内存不足,可能会报错,打开交换分区:
dd if=/dev/zero of=/home/swap bs=64M count=32 mkswap /home/swap swapon /home/swap make 完毕以后 swapoff /home/swap
1
2

编译openssl:
/usr/local/php7/bin/php -m cd /usr/local/src/php-7.1.13/ext/openssl/ cp config0.m4 config.m4 /usr/local/php7/bin/phpize --with-php-config=/usr/local/php7/bin/php-config ./configure --with-openssl --with-php-config=/usr/local/php7/bin/php-config make make install ll /usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/
1
2
3
4
5
6
7
8

参考 [http://bbs.xiuno.com/thread-12701.htm](http://bbs.xiuno.com/thread-12701.htm)

### 配置autoconf

下载新版本解压安装。

去[http://ftp.gnu.org/gnu/autoconf/](http://ftp.gnu.org/gnu/autoconf/)下载想要安装的版本,如:[http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz](http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz)

tar -xzf autoconf-2.69.tar.gz

cd autoconf-2.69

./configure

make && make install
`

使用命令autoconf -V查看安装版本。

参考:

linux 下php环境的安装及Discuz论坛安装

编译配置 PHP7 7.0.10, OPCache, Yac,奔向 0.00x 秒

在CentOS上使用离线YUM安装软件包

查看linux系统版本命令

如何在 docker 中使用 PHP FPM

一路前行,感谢有你~~
  • 本文作者: var author='李威'
  • 本文标题: linux编译安装php7+nginx
  • 创建时间: 2018-02-07 08:33:43
  • 本文链接: https://www.wayearn.com/linux编译安装php7/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!