▪ 环境
操作系统:Ubuntu 16
软件版本:PHP 7.1.9
▪ 安装
1. 基础软件
通过 sudo apt-cache search all | grep [name]
的方式验证以下软件包是否已全部安装
libxml2 libxml2-dev openssl libssl-dev libcurl3-dev libjpeg8 libjpeg8-dev libpng-dev libfreetype6 libfreetype6-dev libmcrypt-dev
如果缺少相关的软件包,可通过 sudo apt-get install [name]
的方式在线安装。
如果遇到部分依赖库版本不对导致不能安装时,建议将 apt-get 源恢复为系统默认的源试试。
2. 下载 PHP 源码包
$ cd /usr/local/src/
$ sudo wget http://mirrors.sohu.com/php/php-7.1.9.tar.gz
$ sudo tar zxvf php-7.1.9.tar.gz
$ cd php-7.1.9
3. 安装 PHP
$ sudo ./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/tmp/mysql.sock \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx \
--with-mysqli=shared,mysqlnd --with-pdo-mysql=shared,mysqlnd \
--with-gd --with-mhash --with-iconv --with-zlib --with-curl --with-openssl \
--with-mcrypt=/usr/include --with-gettext --with-xmlrpc --with-jpeg-dir --with-freetype-dir \
--enable-ftp --enable-zip --enable-xml --enable-soap --enable-pcntl --enable-mbstring --enable-sockets \
--enable-session --enable-opcache --enable-mbregex --enable-gd-native-ttf \
--enable-shmop --enable-shared --enable-bcmath --enable-inline-optimization --enable-sysvsem \
--without-pear --without-gdbm --disable-fileinfo --disable-debug --disable-rpath
$ sudo make && make install
由于需要和 MySQL 进行通信,所以安装完后需要特别查看 lib 扩展库目录是否包含 mysqli.so、pdo_mysql.so 这两个动态库文件
$ cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/
4. 配置文件设置并优化
拷贝 PHP 默认配置文件:
$ sudo cp /usr/local/src/php-7.1.9/php.ini-production /usr/local/php/etc/php.ini
配置文件的优化内容项:
# 避免PHP信息暴露在 HTTP 头中
expose_php = Off
# 避免暴露 PHP 调用 MySQL 的错误信息
display_errors = Off
# 在关闭 display_errors 后开启PHP错误日志(路径在php-fpm.conf中配置)
log_errors = On
# 设置PHP的扩展库路径
# 需要把默认扩展库的文件拷贝过来
# 默认扩展库目录:/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/
extension_dir = "/usr/local/php/ext"
# 设置PHP的opcache和mysql动态库
extension=mysqli.so
extension=pdo_mysql.so
zend_extension=opcache.so
# 设置PHP的时区
date.timezone = Asia/Shanghai
# 开启opcache
[opcache]
opcache.enable=1
拷贝 PHP 扩展模块
$ sudo cp /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303 /usr/local/php/ext -R
拷贝 PHP-FPM 默认配置文件:
$ sudo cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
拷贝 PHP-FPM 默认子配置文件:
$ sudo cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
7. 配置开机自启动
由于 Ubuntu 16 使用 systemd 替换了 SysV, 所以 Ubuntu 16 之前的 service 和 chkconfig 开机自启动将不在适用 Ubuntu 16。下面将介绍如何配置 PHP-FPM 开机自启动。
新建服务文件:
$ sudo vim /usr/lib/systemd/system/php-fpm.service
添加服务代码:
[Unit]
Description=PHP FastCGI Service
After=syslog.target network.target
[Service]
# start main service
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
# restart main service
ExecReload=/bin/kill -USR2 $MAINPID
# stop main service
ExecStop=/bin/kill -SIGINT $MAINPID
[Install]
WantedBy=multi-user.target
启用服务文件:
$ sudo systemctl enable php-fpm.service
8. 相关命令
$ sudo systemctl stop php-fpm.service
$ sudo systemctl start php-fpm.service
$ sudo systemctl status php-fpm.service