文章目录
- 前言
- 一、编译安装
- 1.依赖环境
- 2.下载并解压
- 3.在解压的目录下配置、编译安装
- 4.创建系统用户、系统用户组
- 5. 创建链接
- 6.自动启动PHP-FPM
- 7.配置 Nginx 使其支持 PHP 应用
- 二、依赖安装
- 1.清理旧版本
- 2.安装扩展包
- 三.安装扩PHP展
- 1.安装 Redis 扩展
前言
今天记录一下在centos 7 下 使用编译安装以及依赖安装 PHP 俩种不同的方法
nginx+php的编译
apache一般是把php当做自己的一个模块来启动的.
而nginx则是把http请求变量(如get,user_agent等)转发给 php进程,即php独立进程,与nginx进行通信. 称为 fastcgi运行方式.
因此,为apache所编译的php,是不能用于nginx的.
一、编译安装
1.依赖环境
需要的相关依赖
[root@localhost ~]# yum -y install gcc
[root@localhost ~]# yum -y install gcc++
[root@localhost ~]# yum -y install gcc-c++
[root@localhost ~]# yum -y install wget
[root@localhost ~]# yum -y install make
[root@localhost ~]# yum -y install libxml2
[root@localhost ~]# yum -y install libxml2-devel
[root@localhost ~]# yum -y install openssl
[root@localhost ~]# yum -y install openssl-devel
[root@localhost ~]# yum -y install curl-devel
[root@localhost ~]# yum -y install libjpeg-devel
[root@localhost ~]# yum -y install libpng-devel
[root@localhost ~]# yum -y install freetype-devel
[root@localhost ~]# yum -y install bison
[root@localhost ~]# yum -y install autoconf
[root@localhost ~]# yum -y install automake
[root@localhost ~]# yum -y install libtool
[root@localhost ~]# yum -y install cmake
[root@localhost ~]# yum -y install zlib
[root@localhost ~]# yum -y install zlib-devel
[root@localhost ~]# yum -y install pcre-devel
[root@localhost ~]# yum -y install gd gd-devel
2.下载并解压
# 进入要存放软件包的路径
[root@localhost ~] cd /usr/local/src
# 使用wget 下载软件包
[root@localhost ~] wget http://php.net/distributions/php-7.2.12.tar.gz
# 解压文件
tar -zxvf php-7.2.12.tar.gz
3.在解压的目录下配置、编译安装
cd php-7.2.12
# 使用-help 查看 语法语句
./configure -help | grep gd
# 复杂编译
./configure --prefix=/usr/local/php --exec-prefix=/usr/local/php --bindir=/usr/local/php/bin --sbindir=/usr/local/php/sbin --includedir=/usr/local/php/include --libdir=/usr/local/php/lib/php --mandir=/usr/local/php/php/man --with-config-file-path=/usr/local/php/etc --with-mysql-sock=/tmp/mysql.sock --with-mhash --with-openssl --with-mysqli=shared,mysqlnd --with-pdo-mysql=shared,mysqlnd --with-gd --with-iconv --with-zlib --enable-zip --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-mbregex --enable-mbstring --enable-ftp --enable-gd-native-ttf --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --without-gdbm --enable-fast-install
# 复杂语法语句说明
--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-gd-native-ttf [开启gd库原有字体]
--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=nginx [php-fpm的用户]
--with-fpm-group=nginx [php-fpm的用户组]
--without-gdbm [数据库函数使用可扩展散列和类似于标准UNIX dbm的工作]
--enable-fast-install [为快速安装优化]
--disable-fileinfo [防止低内存VPS出现内存不住的错误]
#简单编译
./configure --prefix=/usr/local/php \
-with-mysqli=mysqlnd \
--enable-mysqlnd \
--with-gd \
--enable-gd-jis-conv \
--enable-fpm \
--enable-ftp
# 进行安装
make && make install
4.创建系统用户、系统用户组
> -r: 添加系统用户
> -g: 指定要创建的用户所属组
> -s: 新帐户的登录shell
> -d: 新帐户的主目录
> -M: 不要创建用户的主目录
groupadd -r php
useradd -r -g php -M php
passwd php
usermod -s /sbin/nologin php
# 创建配置文件,并将其复制到正确的位置
> php.ini #php运行核心配置文件
> www.conf #php-fpm进程服务的扩展配置文件
> php-fpm.conf #php-fpm进程服务的配置文件
cp php.ini-development /usr/local/php/etc/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
cp sapi/fpm/php-fpm /usr/local/bin
5. 创建链接
环境变量:输入命令的时候LINUX会去查找PATH里面记录的路径
在环境变量:/usr/local/bin/ 下创建 /usr/local/php/bin/php的软连接,当我们在任意目录输入 php时,系统去环境变量中查找,通过软连接指向 /usr/local/php/bin/php。php-fpm同理
echo $PATH
ln -s /usr/local/php/sbin/php-fpm /usr/local/sbin/php-fpm
ln -s /usr/local/php/bin/php /usr/local/bin/php
# 启动 php,设置 php 自动启动
php-fpm
#systemctl start php-fpm
#systemctl enable php-fpm
# 查看php-fpm 启动情况
ps -ef | grep php-fpm
root 45020 1 0 17:54 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
nobody 45021 45020 0 17:54 ? 00:00:00 php-fpm: pool www
nobody 45022 45020 0 17:54 ? 00:00:00 php-fpm: pool www
root 45099 1390 0 17:56 pts/0 00:00:00 grep --color=auto php-fpm
6.自动启动PHP-FPM
# 查看 php-fpm 进程重启 php-fpm 查看更改
ps aux | grep php-fpm
# 杀死进程
kill PID
#在 php-7.2.12.tar.gz 的解压目录下已有一个 service 文件了,复制并重命名到 /etc/systemd/system/ 下即可
find / -name "php-fpm.service"
cp /home/soft/php-7.1.23/sapi/fpm/php-fpm.service /etc/systemd/system/php-fpm.service
# 启动 php,设置 php 自动启动
systemctl start php-fpm
systemctl enable php-fpm
7.配置 Nginx 使其支持 PHP 应用
vim /usr/local/nginx/conf/nginx.conf
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;
}
# 重启 Nginx
/usr/local/nginx/sbin/nginx -s reload
# 创建测试文件
echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php
二、依赖安装
1.清理旧版本
yum -y remove php*
#配置源地址
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
等同于
yum install epel-release -y
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
2.安装扩展包
# 安装php72w及其它相关扩展
yum -y install php72w php72w-cli php72w-fpm php72w-common php72w-pdo php72w-pdo_mysql php72w-pdo_sqlite php72w-devel
# 查看安装结果
php -v
# 设置自动启动
systemctl start php-fpm
systemctl enable php-fpm
三.安装扩PHP展
参考:编译安装PHP扩展
#添加软连接,使 phpize 可以全局使用
ln -s /usr/local/php/bin/phpize /usr/local/bin/phpize
# 查看安装的扩展
php -m
1.安装 Redis 扩展
# 下载
wget http://pecl.php.net/get/redis-4.1.1.tgz
# 解压
tar -xvzf redis-4.1.1.tgz
# 进入目录
cd redis-4.1.1
# 使用phpize
phpize
#configure 配置编译参数
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
#前面在 php.ini 设置了拓展的安装路径,于是此处已自动将 redis.so 加入拓展目录中,只要在 php.ini,添加 extension = redis.so 即可
vim /usr/local/php/etc/php.ini
extension = redis.so
# 查看 Redis 是否安装成功
php -m | grep redis