YiluPHP
这家伙很懒,什么都没有留下...

经验 Ubuntu 16.04 源码编译安装PHP7

浏览数 192672
我使用这个方法安装,没有出现安装上的问题,但因为原来机器上有php7.0.16,我装的php7.0.7没有使用上,我不知道如何切换PHP。我想编译安装PHP7的原因是,原来的php7.0.16中没有mbstring组件。

一、下载PHP7的最新版源码

php7.0.7  下载地址 http://php.net/get/php-7.0.9.tar.gz/from/a/mirror

下载命令:
wget http://cn2.php.net/get/php-7.0.9.tar.gz/from/this/mirror


二、解压
cd /home/wujianwu/lnmp1.3-full/src/
tar -zxf php-7.0.7.tar.gz

三、安装相关依赖库

sudo apt-get update
sudo apt-get install libxml2-dev
#安装gcc
sudo apt-get install build-essential
sudo apt-get install openssl
sudo apt-get install libssl-dev
sudo apt-get install make
sudo apt-get install curl
sudo apt-get install libcurl4-gnutls-dev
sudo apt-get install libjpeg-dev
sudo apt-get install libpng-dev
sudo apt-get install libmcrypt-dev
sudo apt-get install libreadline6 libreadline6-dev

四、编译:(编译参数2个中选择一个,第一段大部分机器即可编译,第二段参数推荐64位x86系统编译)

cd /home/wujianwu/lnmp1.3-full/src/php-7.0.7

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysqli --with-pdo-mysql --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --disable-fileinfo --enable-maintainer-zts    



./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-opcache  --with-mysql --with-mysqli --with-mysql-sock  --enable-pdo --with-pdo-mysql --with-gettext --enable-mbstring --with-iconv --with-mcrypt --with-mhash --with-openssl --enable-bcmath --enable-soap --with-libxml-dir --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --with-curl --with-zlib --enable-zip --enable-bz2 --with-readline --without-sqlite3 --without-pdo-sqlite --with-pear --with-libdir=/lib/x86_64-linux-gnu --with-gd --with-jpeg-dir=/usr/lib --enable-gd-native-ttf --enable-xml

额外知识:
php.ini文件缺省放在/usr/local/lib上面,

可以在编译的时候使用--with-config-file-path参数来修改php.ini的存放位置。

例如,
你可以使用--with-config-file-path=/etc
把php.ini存放到/etc下面,然后可以从源码包中拷贝php.ini-dist到/etc/php.ini。


五、执行make 和 sudo make install 安装
make && make test
make && sudo make install

六、配置php-fpm

cd /usr/local/php/etc

cp php-fpm.conf.default php-fpm.conf

cd /usr/local/php/etc/php-fpm.d

cp www.conf.default www.conf

user = www
group = www

如果www用户不存在,那么先添加www用户
groupadd www
useradd -g www www

配置为socket连接方式
socket文件可以放在系统的任意位置,如果想要更快的通信速度,可以放在/dev/shm下面,这个目录是所谓的tmpfs,是RAM可以直接使用的区域,所以,读写速度都会很快。
我们把socket文件放在这里,虚拟主机的配置文件中和fpm配置文件中要一致
/var/run/php/php7.0-fpm.sock

修改php-fpm配置文件/usr/local/php/etc/php-fpm.d/www.conf

将listen参数修改为/dev/shm/fpm-cgi.sock,像这样:
listen=/var/run/php/php7.0-fpm.sock

将listen.backlog参数改为-1,内存积压无限大,默认是128,并发高了之后就会报错
listen.backlog = -1

修改nginx站点配置文件
将fastcgi_pass参数修改为unix:/dev/shm/fpm-cgi.sock,像这样:

location~\.php${
      index index.php index.html index.htm;
      include /etc/nginx/fastcgi_params;
      fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
      fastcgi_index index.php;
      include fastcgi_params;
}



七、验证PHP

/usr/local/php/bin/php -v

八、启动php-fpm

sudo /usr/local/php/sbin/php-fpm



修改socket权限,让nginx和fpm都能读写
sudo chmod -R 777 php7.0-fpm.sock


最后,为了能方便的在命令行下直接调用php命令,还需要将PHP的可执行目录添加到环境变量中:
export PATH=/usr/local/php/bin:$PATH
export PATH=/usr/local/php/sbin:$PATH

设置系统环境变量之修改文件的方法(因为好像直接使用命令行的方法,过段时间新增的环境变量就会没了):
1、打开终端并输入:
sudo vim /etc/environment
2、输入用户密码。这时输入的密码是不可见的。
3、在PATH="...."的末尾处添加:
:/usr/local/php/bin

:/usr/local/php/sbin
4、使其立即生效,在终端执行:
source /etc/environment
或者重启电脑即可。
我来说说