Centos 7 Nginx + PHP7源码安装

本篇介绍源码安装 PHP7, 并搭配 Nginx 使用

安装 Nginx

参考 Nginx 安装教程系统服务脚本说明

安装 PHP7

下载 PHP7

wget https://www.php.net/distributions/php-7.3.5.tar.gz

解压

tar -zxvf php-7.3.5.tar.gz
cd php-7.3.5

创建PHP用户

groupadd -r php-fpm
useradd -s /sbin/nologin -g php-fpm -M php-fpm

构建PHP

运行 ./configure --help 命令来获得完整的可用选项清单

./configure \
    --prefix=/usr/local/php \                                  [php安装的根目录]
    --exec-prefix=/usr/local/php \                               [php执行文件所在目录]
    --bindir=/usr/local/php/bin \                            [php/bin目录]
    --sbindir=/usr/local/php/sbin \                            [php/sbin目录]
    --includedir=/usr/local/php/include \                    [php包含文件所在目录]
    --libdir=/usr/local/php/lib/php \                        [php/lib目录]
    --mandir=/usr/local/php/php/man \                        [php/man目录]
    --with-config-file-path=/usr/local/php/etc \               [php的配置目录]
    --with-mysql-sock=/tmp/mysql.sock \           [php的Unix socket通信文件]
    --with-mhash \                                            [Mhash是基于离散数学原理的不可逆向的php加密方式扩展库,其在默认情况下不开启]
    --with-openssl \                                        [OpenSSL 是一个安全套接字层密码库]
    --with-mysqli=shared,mysqlnd \                          [php依赖mysql库]
    --with-pdo-mysql=shared,mysqlnd \                       [php依赖mysql库]
    --with-gd \                                                [gd库]                                                
    --with-iconv \                                            [关闭iconv函数,种字符集间的转换]                        
    --with-zlib \                                            [zlib是提供数据压缩用的函式库]
    --enable-zip \                                            [打开对zip的支持]
    --enable-inline-optimization \                            [优化线程]
    --disable-debug \                                        [关闭调试模式]
    --disable-rpath \                                        [关闭额外的运行库文件]
    --enable-shared \                                        [启用动态库]
    --enable-xml \                                            [开启xml扩展]
    --enable-bcmath \                                        [打开图片大小调整,用到zabbix监控的时候用到了这个模块]
    --enable-shmop \                                        [共享内存]
    --enable-sysvsem \                                        [内存共享方案]
    --enable-mbregex \                                        [开启多字节正则表达式的字符编码。]
    --enable-mbstring \                                        [开启多字节字符串函数]
    --enable-ftp \                                            [开启ftp]
    --enable-pcntl \                                        [PHP的进程控制支持实现了Unix方式的多进程创建]        
    --enable-sockets \                                        [开启套节字]
    --with-xmlrpc \                                            [打开xml-rpc的c语言]
    --enable-soap \                                            [开启简单对象访问协议简单对象访问协议]
    --without-pear \                                        [开启php扩展与应用库]
    --with-gettext \                                        [开户php在当前域中查找消息]
    --enable-session \                                      [允许php会话session]
    --with-curl \                                           [允许curl扩展]
    --with-jpeg-dir \                                        [指定jpeg安装目录yum安装过后不用再次指定会自动找到]
    --with-freetype-dir \                                    [指定freetype安装目录yum安装过后不用再次指定会自动找到]
    --enable-opcache \                                      [开启使用opcache缓存]
    --enable-fpm \                                            [开启fpm]
    --with-fpm-user=php-fpm \                                 [php-fpm的用户]
    --with-fpm-group=php-fpm \                                [php-fpm的用户组]
    --without-gdbm \                                        [数据库函数使用可扩展散列和类似于标准UNIX dbm的工作]
    --enable-fast-install \                                    [为快速安装优化]
    --with-gd  \                                             [验证码、缩略图]

安装

make && make install

创建配置文件,并将其复制到正确的位置。

cp php.ini-production /usr/local/php/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp sapi/fpm/php-fpm /usr/local/php/bin
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

确保 www.confuser=php-fpm, group=php-fpm
确保 php 目录是属于用户 php-fpm ; chown -R php-fpm:php-fpm /usr/local/php

配置 Nginx 使其支持 PHP 应用

修改默认的 location 块,使其支持 .php 文件

location / {
    root   html;
    index  index.php index.html index.htm;
}

配置来保证对于 .php 文件的请求将被传送到后端的 PHP-FPM 模块, 取消默认的 PHP 配置块的注释,并修改为下面的内容

location ~* \.php$ {
    fastcgi_index   index.php;
    fastcgi_pass    127.0.0.1:9000;
    include         fastcgi_params;
    fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
}

重启服务

/usr/local/php/bin/php-fpm
systemctl reload nginx

将PHP设置成系统服务,并自启动

创建脚本 php.service

[Unit]
Description=php-fpm
After=network.target
[Service]
Type=forking
User=root
Group=root
ExecStart=/usr/local/php/bin/php-fpm
ExecReload=/usr/bin/kill -USR2 $MAINPID
ExecStop=/usr/bin/kill -s QUIT $MAINPID
# PrivateTmp=true
[Install]
WantedBy=multi-user.target

将脚本移动到 /usr/lib/systemd/system/ 目录

cp php.service /usr/lib/systemd/system/

启动

systemctl start php

错误备注:

一、 CURL 扩展错误

  • curl版本错误信息如下
checking for cURL 7.15.5 or greater... configure: error: cURL version 7.15.5 or later is required to compile php with cURL support

curl 版本必须高于 7.15.5

检查版本

curl -V

查找 curl 路径

which curl

添加 curl 路径参数

--with-curl=/usr/bin/curl # 查找出来的路径
  • 缺少 curl-devel 依赖包
configure: error: Please reinstall the libcurl distribution -
      easy.h should be in <curl-dir>/include/curl/

安装 crul-devel

yum install curl-devel -y

二、 缺少 libjpeg-devel 依赖包

configure: error: jpeglib.h not found.

安装 libjpeg-devel

yum install -y libjpeg-devel

三、缺少 libzip 依赖

configure: error: Please reinstall the libzip distribution

安装 libzip

yum install -y libzip

出现如下错误需要源码编译安装 libzip

yum 安装版本是 0.10

# 或 configure: error: system libzip must be upgraded to version >= 0.11
configure: error: Please reinstall the libzip distribution 

卸载 libzip

yum remove libzip -y

下载 libzip

wget https://libzip.org/download/libzip-1.5.2.tar.gz

解压

tar -zxvf libzip-1.5.2.tar.gz

安装

cd libzip-1.5.2
mkdir build && cd build && cmake .. && make && make install

缺少 cmake 命令, 需要安装 yum install cmake -y

CMake 安装

若出现错误

CMake 3.0.2 or higher is required.  You are running version 2.8.12.2

采用源码安装 cmake 下载最新版

wget https://github.com/Kitware/CMake/releases/download/v3.14.3/cmake-3.14.3.tar.gz

安装

tar -zxvf cmake-3.14.3.tar.gz
cd cmake-3.14.3 && ./bootstrap && make && make install

若提示 -bash: /usr/bin/cmake: 没有那个文件或目录

查找 cmake 路径

which cmake

添加软连接

ln -s /usr/local/bin/cmake /usr/bin/cmake

提示如下错误 安装 yum install -y gcc gcc-c++ 即可

Error when bootstrapping CMake:
Cannot find a C++ compiler that supports both C++11 and the specified C++ flags.
Please specify one using environment variable CXX.
The C++ flags are "".
They can be changed using the environment variable CXXFLAGS.
See cmake_bootstrap.log for compilers attempted

四、off_t undefined; check your library configuration

configure: error: off_t undefined; check your library configuration

解决方案

echo '/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64'>>/etc/ld.so.conf&&ldconfig -v

参考 off_t undefined; check your library configuration


作者: 浪子
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 浪子 !
 上一篇
Centos 7 用户常用命令 Centos 7 用户常用命令
Centos 7 常用的命令~ 总结 一、 用户相关 参考: Linux 命令大全 将已存在的用户加入组 usermod -aG root test 彻底删除用户包括用户目录和空间 userdel -r [userName] 将用户从组中移除 gpasswd -d [userName] [groupName] 查看用户属性 id [userName] 查看所有的用户 cat /etc/passw
2020年4月6日
下一篇 
Centos 7 Nodejs 源码安装 Centos 7 Nodejs 源码安装
默认情况 Centos 7 不安装 Nodejs , 这里就演示用源码的方式在 Centos 7 上安装 Nodejs 下载 Nodejs 源代码 # wget https://npm.taobao.org/mirrors/node/v10.15.3/node-v10.15.3.tar.gz 解压安装 # tar -zxvf node-v10.15.3.tar.gz # cd node-v10.
2020年4月6日