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/
这里我来说几个坑:
安装完成之后,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
配置基本的php安装目录,与
enable
开启fpm。--prefix=/usr/local/php7 --enable-fpm
安装模块,最终的配置命令:
如果配置失败了,提示没有
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./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
**
安装与环境变量的配置
1 | make |
安装完以后,PHP 安装到了 /usr/local/php7
,我们切进去:
cd /usr/local/php7
有几个配置文件,如php.ini
,php-fpm.conf
,php-fpm.d/www.conf
需要配置一下:
1 | cp /usr/local/src/php-7.0.10/php.ini-production etc/php.ini |
同时修改一下php-fpm.conf
,这里需要添加用户adduser www
和组usermod -a -G www www
;
参考:
http://blog.sina.com.cn/s/blog_4b93170a0100nggo.html
https://cnzhx.net/blog/linux-add-user-to-group/
修改www.conf
:
1 | user = www |
最后启动 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
安装举例
1
2
3
4
5shell> tar xf zlib.1.2.8.tar.gz
shell> cd zlib.1.2.8
shell> ./configure
shell> make test
shell> make installGD
libpng
官网:http://www.libpng.org/1
2
3
4
5
6shell> 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 installjpeg
官网:http://www.ijg.org/1
2
3
4
5shell> tar xf jpegsrc.v9.tar.gz
shell> cd jpeg-9
shell> ./configure --prefix=/usr/local/libjpeg
shell> make
shell> make installfreetype 字体操作库
官网:http://www.freetype.org/1
2
3
4
5shell> tar xf freetype-2.6.3.tar.bz2
shell> sh autogen.sh
shell> ./configure --prefix=/usr/local/freetype
shell> make
shell> make installlibiconv
https://www.gnu.org/software/libiconv/
操作举例
1
2
3
4
5
6
7cd /usr/local/src
tar zxvf libiconv-1.14.tar.gz #解压
cd libiconv-1.14 #进入安装目录
./configure --prefix=/usr/local/libiconv #配置
如果还需要配置如Opcache
或者yac
:
同样。
首先,下载http://pecl.php.net/get/yac-2.0.1.tgz
1
2tar zxvf yac-2.0.1.tgz
cd yac-2.0.1php扩展标准流程:
1
2
3
4
5/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/配置
php.ini
:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20vim /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重启php-fpm:
1
2kill `cat /var/run/php-fpm.pid`
/usr/local/php7/sbin/php-fpm -D如果内存不足,可能会报错,打开交换分区:
1
2
3
4
5dd if=/dev/zero of=/home/swap bs=64M count=32
mkswap /home/swap
swapon /home/swap
make 完毕以后
swapoff /home/swap编译openssl:
1
2
3
4
5
6
7
8/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/
参考 http://bbs.xiuno.com/thread-12701.htm
配置autoconf
下载新版本解压安装。
去http://ftp.gnu.org/gnu/autoconf/下载想要安装的版本,如:http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
1 | tar -xzf autoconf-2.69.tar.gz |
使用命令autoconf -V
查看安装版本。
参考: