php7安装mysqli扩展_CentOS 7+PHP 7.3.8+Nginx 1.16.1 (100%无坑版)编译安装全流程

2019最新PHP 7.3.8版和 Nginx1.16,总的来说坑比以前更多,流程也更为繁琐。本文的运行环境是Centos 7.1,除了yum工具的使用有别于其他Linux之外,大部分套路都是大同小异的。

第一章 环境准备

1. 首先彻底反安装PHP,Nginx以及Apache,方法如下:

|grep php
rpm -qa

用以上三个命令抓取所有与之相关的包,然后用以下两条命令,将所有相关的包逐个卸载干净:

yum -y remove 包名

或者:

rpm -e 包名

2. 然后开始更新系统,安装EPEL源

yum -y install epel-release 
yum -y update

3. 安装前的填坑之旅

在安装前需要预先将可能遇到的坑先填平才可进入下一步,这一步有点繁琐,请坚持做完,如果跳过这一步直接进入安装环节,将会出现许多不可预知的错误。

a) 常规坑,这个比较简单,用yum安装各种依赖关系(注:这是一条长命令,务必一次性复制完再粘贴执行):

yum install -y gcc gcc-c++ 
freetype-devel bzip2-devel 
curl-devel autoconf libxml2-devel 
libjpeg-devel libpng-devel 
libxslt-devel libzip-devel 
libmcrypt mhash openssl openssl-devel

b) zlib 坑

wget https://www.zlib.net/fossils/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make && make install
 
yum remove -y libzip
wget https://nih.at/libzip/libzip-1.2.0.tar.gz
tar -zxvf libzip-1.2.0.tar.gz
cd libzip-1.2.0
./configure
make && make install

c) lib64 坑

nano /etc/ld.so.conf
在文件尾部加入:
/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64
存盘退出。
ldconfig -v
ln -s /usr/lib64/libssl.so /usr/lib/

第二章 安装PHP 7.3.8

1. 下载php 7.3.8

wget https://www.php.net/distributions/php-7.3.8.tar.gz
tar xzvf php-7.3.8.tar.gz
cd  php-7.3.8*

2. 创建php相关用户

groupadd www
useradd -g www www

3. 配置php, 完整复制粘贴以下长命令:

./configure --prefix=/usr/local/php 
--with-fpm-user=www 
--with-fpm-group=www 
--with-curl 
--with-freetype-dir 
--with-gd 
--with-gettext 
--with-iconv-dir 
--with-kerberos 
--with-libdir=lib64 
--with-libxml-dir 
--with-mysqli 
--with-openssl 
--with-pcre-regex 
--with-pdo-mysql 
--with-pdo-sqlite 
--with-pear 
--with-png-dir 
--with-jpeg-dir 
--with-xmlrpc 
--with-xsl 
--with-zlib 
--with-bz2 
--with-mhash 
--enable-fpm 
--enable-bcmath 
--enable-libxml 
--enable-inline-optimization 
--enable-mbregex 
--enable-mbstring 
--enable-opcache 
--enable-pcntl 
--enable-shmop 
--enable-soap 
--enable-sockets 
--enable-sysvsem 
--enable-sysvshm 
--enable-xml 
--enable-zip 
--enable-fpm 

命令执行完毕后如果显示 ”Thank you for using PHP.“ , 说明各种坑都填平了,可以进入编译安装环节,如果中途报错了,还得仔细根据提示看看到底哪个环节出了问题。

4. 编译及安装

在编译安装之前,不要着急,先执行这条命令:

cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h

然后才是老规矩:

make && make install

一般来说,如果严格按照我上述的流程走下来,到这一步就不会再出现什么错误了,安装过程大概20分钟,请耐心等待。

5. 加入php路径到系统PATH

nano ~/.bash_profile
在PATH=$PATH这行尾部加上:/usr/local/php/bin

存盘退出:

source ~/.bash_profile

6. 创建php和php-fpm初始配置文件

cp php.ini-production /usr/local/php/lib/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
ln -s /usr/local/php/sbin/php-fpm /usr/local/bi

7, 安装mcrypt

mcrypt是一个已遭官方弃用的加密模块,尽管官方从php 7.1开始就已经无法使用常规方法去安装了,但是大量php项目还在使用它,一时半会儿还无法真正退出历史舞台,所以没办法,我们只能使用phpize来曲线救国:

wget http://pecl.php.net/get/mcrypt-1.0.1.tgz
tar zxvf mcrypt-1.0.1.tgz
cd mcrypt-1.0.1
phpize (注意:如果之前没有将php路径加入系统PATH,则phpize在此处无法直接运行)
./configure
make && make install

安装完毕后,会显示一条信息:

Libraries have been installed in:
/root/src/mcrypt-1.0.1/modules

这是mcrypt.so文件的存放路径,记下它。

编辑php.ini文件:

nano /usr/local/php/lib/php.ini
在文件种加一行:
extension=/root/src/mcrypt-1.0.1/modules/mcrypt.so

存盘退出,重启php即可。

8. 设置php-fpm,

这是nginx与php建立联系的关键,此处我们选择用unix套接字来链接nginx

题外话:关于采用unix套接字还是TCP地址来链接nginx的优缺点,此处不做深入讨论,感兴趣的可以参见这篇文章:《nginx 和 php-fpm 通信使用unix socket还是TCP》
nano /usr/local/php/etc/php-fpm.d/www.conf

修改为:

[www]
listen = /var/run/php-fpm.sock
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 128
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 10000
rlimit_files = 1024
slowlog = log/$pool.log.slow

存盘退出。

9. 将php设置为自启动服务

cp /root/src/php-7.3.8/sapi/fpm/php-fpm.service /usr/lib/systemd/system/
(注:/root/src/php-7.3.8是我解压php源代码的目录)
systemctl start php-fpm
systemctl enable php-fpm

至此,PHP 7.3.8安装结束。

第三章 安装Nginx 1.16.1

1. 下载nginx

wget https://nginx.org/download/nginx-1.16.0.tar.gz
tar -zxvf nginx-1.16.0.tar.gz
cd nginx-1.16.0.tar.gz

2. 配置nginx, 完整复制粘贴以下长命令:

./configure --user=www 
--group=www 
--prefix=/usr/local/nginx 
--with-http_stub_status_module 
--with-http_ssl_module 
--with-http_v2_module

3. 编译及安装:

make && make install

4. 修改nginx.conf配置文件

nano /usr/local/nginx/conf/nginx.conf

找到:

        #location ~ .php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

改为:

       location ~ .php$ {
            root           html;
            fastcgi_pass   unix:/var/run/php-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

存盘退出。

5. 将nginx设为自启动服务:

nano /usr/lib/systemd/system/nginx.service

输入以下内容:

[Unit]
Description=nginx
After=network.target
 
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

存盘退出。

killall nginx (如果之前曾运行过nginx,先停止它)
systemctl start nginx
systemctl enable nginx

6. 测试nginx和php是否工作正常:

nano /usr/local/nginx/html/info.php (创建一个php文件)

输入以下内容,只有一行:

 

存盘退出。

打开浏览器,输入网址: http://服务器ip/info.php

如果出现以下画面,说明安装成功:

7. PHP 7.3.8 和 Nginx 1.16.1的各种默认路径小结

php可执行文件路径:
/usr/local/php/bin
php配置文件:
/usr/local/php/lib/php.ini
php-fpm配置文件:
/usr/local/php/etc/php-fpm.conf
nginx可执行文件路径:
/usr/local/nginx/sbin
nginx配置文件:
/usr/local/nginx/conf/nginx.conf
nginx 网站根目录:
/usr/local/nginx/html

至此,php和nginx安装完毕,网站就基本可用了,接下来是番外篇,如果需要mysql服务和https服务的,可以一看。

第四章 番外

1. 安装mysql

安装原版mysql比较繁琐,可以选择mariadb替代,用法和原版mysql几乎一模一样,安装方法:

yum install mariadb-server mariadb -y
systemctl start mariadb
systemctl enable mariadb

装完之后,进行初始化设置:

mysql_secure_installation

初始密码为空,直接敲入回车后,再设置root密码,其他没什么好说的,一路默认回车即可,只不过在碰到:

Disallow root login remotely? [Y/n] 

这是问你是否禁止远程root访问,我们要选No,否则Navicat之类工具会用不了,但如果此处我们即使选了No也不灵的话,那就只能用回传统方法来解决这个问题了:

mysql -uroot -p (进入mysql服务器,用刚才设置的新密码)
mysql>use mysql; 
mysql>update user set host = '%' where user = 'root'; 
mysql>FLUSH PRIVILEGES; 

2 . 如果碰到这个错误怎么办:

Error while trying to create admin user: Failed to connect to the database: An exception occurred in driver: SQLSTATE[HY000] [2002] No such file or directory

一般来说我们的mysql地址都是选localhost端口默认为3306的,但如果碰到以上错误,尝试把数据库地址填为:

127.0.0.1:3306

3. 安装ssl网站证书:

现在https越来越主流,如果SSL证书没有配置好,每次访问的时候浏览器就会报错,说你这是一个不安全的网站云云,我也花了很多时间来研究所谓“自颁证书”,很麻烦而且也没法彻底解决,因此我还是建议大家去VPS服务提供商(比如阿里,腾讯等)申请一个免费证书吧,如图:

证书申请成功后,一般会给你两个文件,一个.cet,另一个是.key,建立一个存放它的目录,比如:

mkdir /usr/local/nginx/cert

然后在将这两个文件上传到该目录,修改nginx配置:

nano /usr/local/nginx/conf/nginx.conf

找到:

 ssl_certificate      cert.pem;
 ssl_certificate_key  cert.key;

这两个地方,将它改为:

 ssl_certificate /usr/local/nginx/cert/你的证书.crt;
 ssl_certificate_key /usr/local/nginx/cert/你的证书.key;

就行了。

证书设置好了之后,可以去腾讯平台验证一下https是否安装成功:

检测工具 - 腾讯云

如果检测通过,会显示这样的画面:

一般来说,苹果的https检测(ATS),会比普通的https检测还要严格一些,苹果ATS能通过的话,你的网站https这一关就肯定没问题了。

最后,本文大量参阅了 阿里云 centos7.6 安装 php7.3 这篇文章的经验,在此对原作者表示感谢!

你可能感兴趣的:(php7安装mysqli扩展)