说明:因为本环境需要用于后面搭建Wordpress,刚开始选用的是最新的PHP8.1.1,在后面安装Wordpress5.8.3的时候,出现Fatal error: Uncaught mysqli_sql_exception: Table 'wordpress.wp_options' doesn't exist……的错误,通过大量排查,推测应该是该版本的PHP问题(因个人能力原因,具体错误原因未能找到,若有大咖找到具体原因和排错方法,请不吝赐教,具体错误见下图)。
后面换成较旧的php-7.3.5版本后,问题得以排除。
若安装php-7.3.5,可直接从第4步安装php开始,配置选项可直接采用以下几个:
./configure --prefix=/usr/local/php/7.3.5 \
--enable-fpm \
--with-mysqli \
--with-curl \
--with-pdo_mysql \
--with-pdo_sqlite \
--enable-mysqlnd \
--enable-mbstring \
--with-gd
后面的过程相同。
附:PHP-7.3.5包的下载地址:https://museum.php.net/php7/php-7.3.5.tar.gz
一、安装环境:
[root@red3212 ~]# cat /etc/redhat-release
CentOS Linux release 8.3.2011
[root@red3212 ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.18.188 netmask 255.255.255.0 broadcast 192.168.18.255
inet6 fe80::f111:5242:40bc:7744 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:80:10:f3 txqueuelen 1000 (Ethernet)
RX packets 743288 bytes 1100903837 (1.0 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 220212 bytes 17136089 (16.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
二、安装过程:
第1步:安装工具包
(1)先安装以下工具包
[root@red3212 ~]# dnf -y install libtool automake libzip-devel epel-release libxml2 libxml2-devel openssl openssl-devel curl-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel uuid libuuid-devel bzip2 bzip2-devel gmp-devel readline-devel libxslt-devel autoconf bison gcc gcc-c++ sqlite-devel cmake
(2)再安装加密算法扩展库libmcrypt和libmcrypt-devel工具包
[root@red3212 ~]# dnf -y install libmcrypt libmcrypt-devel
第2步:下载并安装oniguruma
oniguruma是一个处理正则表达式的库,在安装php8.1.1的过程中,mbstring的正则表达式处理功能对这个包有依赖性。
[root@red3212 ~]# wget -c https://github.com/kkos/oniguruma/archive/refs/tags/v6.9.7.1.tar.gz
[root@red3212 ~]# tar -zxvf v6.9.7.1.tar.gz
[root@red3212 ~]# cd oniguruma-6.9.7.1
[root@red3212 oniguruma-6.9.7.1]# ./autogen.sh && ./configure --prefix=/usr
[root@red3212 oniguruma-6.9.7.1]# make && make install
[root@red3212 oniguruma-6.9.7.1]# cd ..
第3步:下载并安装icu4c
[root@red3212 ~]# wget https://github.com/unicode-org/icu/releases/download/release-65-1/icu4c-65_1-src.tgz
[root@red3212 ~]# tar -xf icu4c-65_1-src.tgz
[root@red3212 ~]# cd icu/source
[root@red3212 ~]# ./configure --prefix=/usr
[root@red3212 ~]# make && make install
第4步:下载并安装php8.1.1
可以在Windows下通过迅雷快速下载,然后利用secureCRT等工具上传到服务器。
[root@red3212 ~]# wget https://www.php.net/distributions/php-8.1.1.tar.gz
[root@red3212 ~]# tar -xzvf php-8.1.1.tar.gz
[root@red3212 ~]# cd php-8.1.1
[root@red3212 php-8.1.1]# ./configure \
--prefix=/usr/local/php/8.1.1/ \
--with-config-file-path=/usr/local/php/8.1.1/etc \
--with-config-file-scan-dir=/usr/local/php/8.1.1/etc/conf.d \
--enable-fpm \
--enable-intl \
--enable-soap \
--with-openssl \
--with-openssl-dir \
--with-zlib \
--with-iconv \
--with-bz2 \
--enable-gd \
--with-jpeg \
--with-freetype \
--with-curl \
--enable-dom \
--with-zip \
--enable-mbstring \
--enable-pdo \
--with-pdo-mysql=mysqlnd \
--with-zlib-dir \
--enable-session \
--enable-shmop \
--enable-simplexml \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--with-xsl \
--enable-mysqlnd \
--with-mysqli \
--without-pear \
--disable-short-tags \
--with-pdo_mysql \
--with-pdo_sqlite \
--enable-gd \
--disable-fileinfo
如果没有报错,则进行下一步安装
[root@red3212 php-8.1.1]# make && make install
等待10分钟左右,编译并安装完成。
第5步:创建用户账号
[root@red3212 php-8.1.1]# groupadd -g 1001 nginx
[root@red3212 php-8.1.1]# useradd -u 900 nginx -g nginx -s /sbin/nologin
[root@red3212 php-8.1.1]# tail -1 /etc/passwd
nginx:x:900:1001::/home/nginx:/sbin/nologin
第6步:配置PHP环境
(1)复制文件并重命名
[root@red3212 php-8.1.1]# cp php.ini-production /etc/php.ini
[root@red3212 php-8.1.1]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@red3212 php-8.1.1]# cp /usr/local/php/8.1.1/etc/php-fpm.conf.default /usr/local/php/8.1.1/etc/php-fpm.conf
[root@red3212 php-8.1.1]# cp /usr/local/php/8.1.1/etc/php-fpm.d/www.conf.default /usr/local/php/8.1.1/etc/php-fpm.d/www.conf
(2)赋予文件执行权限
[root@red3212 php-8.1.1]# chmod +x /etc/init.d/php-fpm
(3)设置开机自启动php-fpm服务
[root@red3212 php-8.1.1]# ln -s /usr/local/php/8.1.1/sbin/php-fpm /usr/local/sbin/
[root@red3212 php-8.1.1]# php-fpm -t
[06-Jan-2022 16:28:31] NOTICE: configuration file /usr/local/php/8.1.1/etc/php-fpm.conf test is successful
[root@red3212 php-8.1.1]# systemctl enable php-fpm
php-fpm.service is not a native service, redirecting to systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable php-fpm
(4)修改PHP的主配置文件php-fpm.conf
[root@red3212 php-8.1.1]# vim /usr/local/php/8.1.1/etc/php-fpm.conf
[root@red3212 php-8.1.1]# grep -n "^"[a-Z] /usr/local/php/8.1.1/etc/php-fpm.conf
17:pid = run/php-fpm.pid
143:include=/usr/local/php/8.1.1/etc/php-fpm.d/*.conf
[root@red3212 php-8.1.1]# vim /usr/local/php/8.1.1/etc/php-fpm.d/www.conf
[root@red3212 php-8.1.1]# grep -n "^"[a-Z] /usr/local/php/8.1.1/etc/php-fpm.d/www.conf
23:user = nginx
24:group = nginx
36:listen = 192.168.18.188:9000
105:pm = dynamic
116:pm.max_children = 50
121:pm.start_servers = 5
126:pm.min_spare_servers = 5
131:pm.max_spare_servers = 35
第7步 启动php服务并检查监听端口
[root@red3212 php-8.1.1]# systemctl restart php-fpm.service
[root@red3212 php-8.1.1]# netstat -ntlp | grep 9000
tcp 0 0 192.168.18.188:9000 0.0.0.0:* LISTEN 167080/php-fpm: mas
如果看到9000端口已启动,则说明PHP环境安装完毕。