当前位置: 首页 > news >正文

从零到一使用Linux+Nginx+MySQL+PHP搭建的Web网站服务器架构环境——LNMP(上)

一、LNMP架构介绍与准备

 1.1、LNMP简介

        LNMP是一组众所周知的Web网站服务器架构环境,即由【Linux+Nginx+MySQL+PHP(MySQL有时也指 Mariadb)】组合成一个高性能、轻量、稳定、扩展性强的Web网站服务器架构环境。

        Nginx (“engine x”)是一个轻量级、高性能的HTTP和反向代理服务器,负载均衡服务器。Nginx的官方网站为【nginx.org】。MySQL分为社区版和商业版,本文将以社区版为基础进行讲解。PHP是一个使用者最多、运行最快、入门最简单的脚本语言。

 1.2、应用环境准备

应用环境准备
序号应用环境准备
1一台物理机或虚拟机,使⽤RHEL9/Almalinux9.1及其更高系统(192.168.1.9)
2Nginx1.28版本
3Mysql8.4.6LTS版本
4PHP8.4.5版本

注意:对于Linux系统,需要先关闭Selinux

#1-永久禁用Linux的Selinux
grubby --update-kernel ALL --args selinux=0#2-将【/etc/selinux/config】文件中的【SELINUX=enforcing】改为【SELINUX=disabled】
vi /etc/selinux/config#3-重启Linux系统让selinux的禁用生效
reboot -h now

二、Nginx+Mysql+PHP环境安装部署

 2.1、下载源码安装部署Nginx

使用源码安装配置Linux上的Web服务器——Nginx的保姆级教程https://blog.csdn.net/xiaochenXIHUA/article/details/150780215?spm=1001.2014.3001.5501

#下载源码安装Nginx的详细流程步骤#0-安装Nginx所依赖的zlib、pcre、openssl程序和编译环境
yum -y install zlib pcre pcre-devel openssl openssl-devel
yum install -y gcc gcc-c++ make#1-下载【nginx-1.28.0.】源码包到【/data目录下】
cd /data
wget http://nginx.org/download/nginx-1.28.0.tar.gz#2-解压下载好的Nginx源码压缩包
tar -zxvf nginx-1.28.0.tar.gz#3-进入解压好的Nginx目录里面
cd nginx-1.28.0/#4-检查Nginx的编译环境是否正常,是否具备编译条件(若不具备则会检查后给出对应的提示,按照提示安装即可)
./configure#5-检查编译条件并且配置对应的通用参数内容
./configure \
--prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/sbin/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--error-log-path=/usr/local/nginx/logs/error.log \
--http-log-path=/usr/local/nginx/logs/access.log \
--pid-path=/usr/local/nginx/logs/nginx.pid \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-pcre#6-编译Nginx源码
make#7-将编译好的内容拷贝到指定目录下
make install#8-查看编译安装好的Nginx(由于我们指定的Nginx的安装路径是【/usr/local/nginx/】因此我们直接进入该路径下查看)
cd /usr/local/nginx/#9-创建Nginx的用户nginx并查看
useradd -s /sbin/nologin nginx
id nginx#10-修改Nginx的配置文件(设置【user  nginx;】【worker_processes auto;】)后保存退出
vi /usr/local/nginx/conf/nginx.confuser  nginx;
worker_processes auto;#10-创建Nginx的服务内容
#10.1-创建Nginx服务文件
vi /etc/systemd/system/nginx.service#10.2-配置Nginx服务文件的内容
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/bin/rm -f /usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true[Install]
WantedBy=multi-user.target#11-使用systemctl管理Nginx服务并设置开机自启
#11.1-重载nginx服务
systemctl daemon-reload#11.2-启动nginx服务
systemctl start nginx.service#11.3-查看nginx服务状态
systemctl status nginx.service#11.4-设置nginx服务开机自启动
systemctl enable nginx.service#11.5-查看nginx的进程信息
ps -ef | grep nginx#11.6-停止nginx服务
systemctl stop nginx#11.7-查看已有nginx的编译所有配置信息和版本(若是yum安装的Nginx则直接使用【nginx -V】即可)
whereis nginx
/usr/local/nginx/sbin/nginx -V#12-检查防火墙,并永久放开80端口
#12.1-查看nginx运行程序情况
netstat -antlp | grep nginx#12.2-查看当前开放的防火墙列表
firewall-cmd --list-port#12.3-永久开放80端口(如没有开放则需要开放一下)
firewall-cmd --zone=public --add-port=80/tcp --permanent#12.4-重载防火墙
firewall-cmd --reload#12.5-查看服务器本机的IP地址新
ifconfig

 2.2、二进制文件安装部署Mysql

#使用二进制文件安装Mysql步骤流程:#1-进入【/data】目录下载mysql8.4.6二进制文件压缩包
cd /data
wget https://cdn.mysql.com//Downloads/MySQL-8.4/mysql-8.4.6-linux-glibc2.28-x86_64.tar.xz#2-解压mysql二进制压缩包文件到指定的【/usr/local/mysql】路径下
mkdir -p /usr/local/mysql
tar -xvf mysql-8.4.6-linux-glibc2.28-x86_64.tar.xz -C /usr/local/mysql#3-进入【/usr/local/mysql】路径下并修改解压好的mysql名称
cd /usr/local/mysql/
mv mysql-8.4.6-linux-glibc2.28-x86_64 mysql-8.4.6#4-进入mysql-8.4.6文件夹并分别创建etc、data、logs文件夹
cd mysql-8.4.6/
mkdir data
mkdir etc
mkdir logs#5-查看mysql用户是否存在(若不存在则创建)
id mysql
useradd mysql#6-进入mysql的etc文件夹(/usr/local/mysql/mysql-8.4.6/etc)创建【my.cnf】文件并配置内容
cd ./etc/
vi my.cnf[mysqld]
datadir=/usr/local/mysql/mysql-8.4.6/data
socket=/tmp/mysql.sock
log-error=/usr/local/mysql/mysql-8.4.6/logs/mysqld-error.log
pid-file=/usr/local/mysql/mysql-8.4.6/logs/mysqld.pid
port=3336
user=mysql
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
#默认时区(东八区)
default-time-zone='+8:00'
#数据库日志时间匹配系统时区
log_timestamps=system
#表名和字段名不区分大小写
lower_case_table_names=1#7-将mysql文件夹及其内容都授权给mysql用户
chown -R mysql:mysql /usr/local/mysql/mysql-8.4.6#8-初始化mysql数据库(若没有问题则该命令执行后不会有任何提示,有提示就是有问题需要排查解决了)
/usr/local/mysql/mysql-8.4.6/bin/mysqld  --defaults-file=/usr/local/mysql/mysql-8.4.6/etc/my.cnf --initialize --user=mysql#9-验证初始化mysql数据库是否正常(可进入【/usr/local/mysql/mysql-8.4.6/data】目录查看是否有内容,大约有22个文件则表示没问题)查看【/usr/local/mysql/mysql-8.4.6/logs】下是否存在【mysqld.log】文件
ll /usr/local/mysql/mysql-8.4.6/data/
ll /usr/local/mysql/mysql-8.4.6/logs/#10-手动启用mysql服务测试(如下可以指定默认的配置文件【 --defaults-file=/usr/local/mysql/mysql-8.4.6/etc/my.cnf】)
/usr/local/mysql/mysql-8.4.6/bin/mysqld_safe --defaults-file=/usr/local/mysql/mysql-8.4.6/etc/my.cnf#11-查看mysql的进程、网络端口内容(查看到对应的mysql进程与网络端口与我们配置的一致表示正常;确认正常后即可杀死该进程)
ps -ef | grep mysql
netstat -antlp | grep mysql#12-配置mysql服务
vi /etc/systemd/system/mysqld.service[Unit]
Description=MySQL Server 8.4.6
After=network.target[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/mysql-8.4.6/bin/mysqld_safe --defaults-file=/usr/local/mysql/mysql-8.4.6/etc/my.cnf
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -TERM $MAINPID
Restart=on-failure[Install]
WantedBy=multi-user.target#13-使用systemctl管理mysql服务并设置mysql服务开机自启
#13.1-重载所有服务
systemctl daemon-reload#13.2-启动mysql服务
systemctl start mysqld.service#13.3-查看mysql服务状态
systemctl status mysqld.service#13.4-设置mysql服务开机自启
systemctl enable mysqld.service #13.5-停止mysql服务
systemctl stop mysqld.service#14-查看mysql的Root用户临时密码并重置(在【/usr/local/mysql/mysql-8.4.6/logs/mysqld-error.log】)
head -n 20 /usr/local/mysql/mysql-8.4.6/logs/mysqld-error.log
/usr/local/mysql/mysql-8.4.6/bin/mysql -uroot -p临时密码
alter user 'root'@'localhost' identified by 'abc123456';
#创建任意主机都可以远程连接到该服务器mysql的账号命令如下:
create user 用户名@'%' identified by '密码';
#退出mysql
exit#15-放开防火墙的3336端口(若有需要的话)
firewall-cmd --zone=public --add-port=3336/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-port#16-可以重启Linux服务器后查看mysql是否启动验证

Mysql或MariaDB数据库的用户与授权操作——实操保姆级教程_mariadb给用户授权https://blog.csdn.net/xiaochenXIHUA/article/details/140664884

#更详细的my.cnf配置文件内容如下【这个配置内容可以根据自己的项目实际需要自行选择配置】:
[mysqld]
bind-address=0.0.0.0
#端口号
port=3336
#用户
user=mysql#默认存储引擎
default-storage-engine=INNODB#默认字符集编码
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci#mysql程序路径
basedir=/usr/local/mysql/mysql-8.4.6
#mysql数据路径
datadir=/usr/local/mysql/mysql-8.4.6/data
socket=/tmp/mysql.sock
#进程文件
pid-file=/usr/local/mysql/mysql-8.4.6/logs/mysqld.pid#通用查询
#用于控制MySQL的日志输出格式,可以设置为FILE、TABLE或NONE。当设置为FILE时,日志将被写入到指定的文件中,这通常用于记录慢查询日志和一般日志
log-output=FILE
#开启 general log 将所有到达MySQL SQL语句记录下来。一般不会开启开功能,因为log的量会非常庞大
general-log=0
general_log_file=/usr/local/mysql/mysql-8.4.6/logs/mysql-general.log#慢查询
#查询执行时间的阈值(单位是秒)。当查询的执行时间超过这个阈值时,MySQL将会将该查询记录到慢查询日志中
long_query_time=3
#启动慢查询1表示开启,0表示关闭
slow_query_log=1
slow_query_log_file=/usr/local/mysql/mysql-8.4.6/logs/mysql-slow.log
#错误日志存放位置
log-error=/usr/local/mysql/mysql-8.4.6/logs/mysqld-error.log#表名和字段名不区分大小写
lower_case_table_names=1#同一客户端连接尝试失败次数,超出次数即被冻结
max_connect_errors=128#数据库开启的最大进程连接数
max_connections=600
#设置在网络传输中一次消息传输量的最大值
max_allowed_packet = 64M
#默认时区(东八区)
default-time-zone='+8:00'
#数据库日志时间匹配系统时区
log_timestamps=system#在并发连接数较高的情况下,需要确保table_open_cache的值足够大,以便能够存储所有并发连接中涉及的表。假设如果有600个并发连接,每个连接中涉及的表的最大数量是N,那么table_open_cache的值至少应该设置为600*N
#table_open_cache=2000
#设置内存临时表的最大大小
#tmp_table_size=512M
#专门用于MyISAM存储引擎的索引缓存。这个参数的设置对数据库性能有着显著的影响,尤其是在处理索引读取操作时,在内存中缓存索引数据可以显著提高数据库查询的速度,因为它减少了从磁盘读取数据的次数。
#key_buffer_size=512M
#控制事务日志的刷新策略。其默认值为 1,即每次事务提交时都会将日志缓冲区的数据写入日志文件,并立即刷新到磁盘。
#innodb_flush_log_at_trx_commit=1
#是 InnoDB 存储引擎中用于写入磁盘上的日志文件的缓冲区大小。默认值为16MB。设置合适的大小可以减少写操作,提高性能。
#innodb_log_buffer_size=16M
# *极其重要的数据库内存参数,一般建议将服务器物理内存的 50% 到 70% 分配给 innodb_buffer_pool_size,这里8G及以下内存适合生产环境低并发用户
innodb_buffer_pool_size=3G
#用于定义重做日志文件(Redo Log)的大小。它直接影响数据库的性能、事务处理效率以及崩溃恢复时间。(innodb_log_file_size 的总可用日志空间由以下公式计算:总日志空间 = innodb_log_file_size × innodb_log_files_in_group
默认情况下,innodb_log_files_in_group 的值为 2,因此调整 innodb_log_file_size 即可控制总日志空间。日志文件越大,崩溃后的恢复时间越长。一般情况下,每 1GB 的日志文件恢复时间约为 5 分钟。)
innodb_redo_log_capacity=1G
#innodb_log_file_size=1G#innodb_log_file_size已经弃用使用innodb_redo_log_capacity替代
#设置每次自动扩展数据文件时增长的大小(单位是MB)
innodb_autoextend_increment=64#该参数值请根据innodb_buffer_pool_size大小来设置,4G以下不需要设置该参数
#当innodb_buffer_pool_size在8G以上时可以设置为4;32G以上可以设置为8
#innodb_buffer_pool_instances=4
#定义了 InnoDB 层能够同时打开的文件数量上限
innodb_open_files=300
#设置是否每个数据库的每个表都会生成一个数据空间,1表示开启
innodb_file_per_table=1[client]
#修改默认编码
default-character-set=utf8mb4

到这里恭喜你,已经全部正确安装配置好了mysql数据库,可以正常使用了。

Centos8安装配置Mariadb数据库_centos8安装mariadbhttps://blog.csdn.net/xiaochenXIHUA/article/details/127270742

 2.3、下载源码安装部署PHP

#下载PHP源码进行安装部署#1-下载PHP的源码并解压
wget https://php.net/distributions/php-8.4.12.tar.gz
tar -zxvf php-8.4.12.tar.gz#2-安装编译PHP源码所需的依赖库
yum install libxml2 libxml2-devel bzip2 bzip2-devel libjpeg-turbo libjpeg-turbo-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel  libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel sqlite-devel libzip -y#3-进入解压好的php目录配置php、并检查是否存在www用户,不存在则创建
cd /data/php-8.4.12/
useradd www
id www./configure  --prefix=/usr/local/php  --enable-fpm  --with-fpm-user=www  --with-fpm-group=www  --with-pdo-mysql=mysqlnd  --with-mysqli=mysqlnd  --with-zlib  --with-curl  --enable-gd   --with-jpeg=/usr  --with-freetype=/usr  --with-openssl  --enable-mbstring  --enable-xml  --enable-session  --enable-ftp  --enable-pdo -enable-tokenizer  --with-zip#4-解决检查环境配置报错【configure: error: Package requirements (oniguruma) were not met:】问题,先下载和安装缺失的【oniguruma】包在手动安装后再次执行【./configure 及其后面添加的配置内容命令】检查环境wget https://repo.almalinux.org/almalinux/9/CRB/x86_64/os/Packages/oniguruma-devel-6.9.6-1.el9.6.x86_64.rpmyum install oniguruma-devel-6.9.6-1.el9.6.x86_64.rpm -y#5-解决检查环境配置报错【configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met:】问题,先下载和安装缺失的【libzip】包在手动安装后再次执行【./configure 及其后面添加的配置内容命令】检查环境
yum remove libzip libzip-deve -y
wget https://libzip.org/download/libzip-1.3.2.tar.gz
tar xvf libzip-1.3.2.tar.gz
cd libzip-1.3.2
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"#5.1-检查libzip是否编译成功(有结果显示就表示成功)
pkg-config --libs libzip
pkg-config --list-all|grep libzip#5.1-进入php的源码路径再次执行环境检查
cd /data/php-8.4.12
./configure  --prefix=/usr/local/php  --enable-fpm  --with-fpm-user=www  --with-fpm-group=www  --with-pdo-mysql=mysqlnd  --with-mysqli=mysqlnd  --with-zlib  --with-curl  --enable-gd   --with-jpeg=/usr  --with-freetype=/usr  --with-openssl  --enable-mbstring  --enable-xml  --enable-session  --enable-ftp  --enable-pdo -enable-tokenizer  --with-zip#6-PHP环境检查没有问题后可以进行编译和编译测试
cd /data/php-8.4.12/
make
make test#7-编译完成后进行编译安装
make install#8-编译安装完成后需要将PHP源码目录下的2个文件进行复制操作
#8.1-将php源码【/data/php-8.4.12/】路径下的【php.ini-production】文件复制一份到PHP安装目录【/usr/local/php/】下的【lib】目录中并修改名称为php.ini
cp php.ini-production /usr/local/php/lib/php.ini
#8.2-将php源码【/data/php-8.4.12/】路径下的【sapi/fpm/php-fpm.service】文件复制一份到【/usr/lib/systemd/system】中用来启动php-fpm才能解析PHP程序
cp sapi/fpm/php-fpm.service /usr/lib/systemd/system

《1》注意:在执行【./configure】进行环境检查的到最后时报错

configure: error: Package requirements (oniguruma) were not met:

Package 'oniguruma', required by 'virtual:world', not found

”也就是说我们当前的环境缺少这个【oniguruma-devel-6.9.6-1.el9.6.x86_64.rpm】包,我们手动安装一下这个包后再执行【./configure】进行环境检查看是否解决。

#解决检查环境配置报错【configure: error: Package requirements (oniguruma) were not met:】问题,先下载和安装缺失的【oniguruma】包在手动安装后再次执行【./configure 及其后面添加的配置内容命令】检查环境wget https://repo.almalinux.org/almalinux/9/CRB/x86_64/os/Packages/oniguruma-devel-6.9.6-1.el9.6.x86_64.rpmyum install oniguruma-devel-6.9.6-1.el9.6.x86_64.rpm -y

《2》注意:在执行【./configure】进行环境检查的到最后时报错

configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met:

Package 'libzip', required by 'virtual:world', not found
Package 'libzip', required by 'virtual:world', not found
Package 'libzip', required by 'virtual:world', not found

也就是说我们当前的环境缺少这个【libzip】包,我们手动安装一下这个包后再执行【./configure】进行环境检查看是否解决

#解决方法一:编译安装libzip-1.3.2.tar.gz的源码#1-解决检查环境配置报错【configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met:】问题,先下载和安装缺失的【libzip】包在手动安装后再次执行【./configure 及其后面添加的配置内容命令】检查环境
cd /data/php-8.4.12/
yum remove libzip libzip-deve -y
wget https://libzip.org/download/libzip-1.3.2.tar.gz
tar xvf libzip-1.3.2.tar.gz
cd libzip-1.3.2
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"#2检查libzip是否编译成功(执行如下两个命令后都分别显示内容则表示成功)
pkg-config --libs libzip
pkg-config --list-all|grep libzip#3-进入php的源码路径再次执行环境检查
cd /data/php-8.4.12
./configure  --prefix=/usr/local/php  --enable-fpm  --with-fpm-user=www  --with-fpm-group=www  --with-pdo-mysql=mysqlnd  --with-mysqli=mysqlnd  --with-zlib  --with-curl  --enable-gd   --with-jpeg=/usr  --with-freetype=/usr  --with-openssl  --enable-mbstring  --enable-xml  --enable-session  --enable-ftp  --enable-pdo -enable-tokenizer  --with-zip

#解决方法二:编译安装libzip-1.11.3.tar.gz源码#1-解决检查环境配置报错【configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met:】问题,先下载和安装缺失的【libzip】包在手动安装后再次执行【./configure 及其后面添加的配置内容命令】检查环境
cd /data/php-8.4.12/
yum remove libzip libzip-deve -y
wget https://libzip.org/download/libzip-1.11.3.tar.xz
tar -xvf libzip-1.11.3.tar.xz
cd libzip-1.11.3/
mkdir build
cd build
yum install cmake -y
cmake ..
make &&make install#2检查libzip是否编译成功(执行如下两个命令后都分别显示内容则表示成功)
pkg-config --libs libzip
pkg-config --list-all|grep libzip#3-进入php的源码路径再次执行环境检查
cd /data/php-8.4.12
./configure  --prefix=/usr/local/php  --enable-fpm  --with-fpm-user=www  --with-fpm-group=www  --with-pdo-mysql=mysqlnd  --with-mysqli=mysqlnd  --with-zlib  --with-curl  --enable-gd   --with-jpeg=/usr  --with-freetype=/usr  --with-openssl  --enable-mbstring  --enable-xml  --enable-session  --enable-ftp  --enable-pdo -enable-tokenizer  --with-zip

PHP的编译环境检查没有问题后就进行如下的编译和编译安装,如下图所示:

注意,在使用【make】编译PHP源码到最后报错

/usr/bin/ld: ext/zip/zip_stream.o: in function `php_stream_zip_opener':
/data/php-8.4.12/ext/zip/zip_stream.c:345: undefined reference to `zip_file_is_seekable'
/usr/bin/ld: ext/zip/zip_stream.o: in function `php_stream_zip_open':
/data/php-8.4.12/ext/zip/zip_stream.c:259: undefined reference to `zip_file_is_seekable'

collect2: error: ld returned 1 exit status

make: *** [Makefile:282:sapi/cli/php] 错误 1”这是由于当前环境缺失了【libzip】需要重新安装,解决方法如下:

#解决执行【make】编译PHP到最后报错“/data/php-8.4.12/ext/zip/zip_stream.c:259: undefined reference to `zip_file_is_seekable'  collect2: error: ld returned 1 exit status make: *** [Makefile:282:sapi/cli/php] 错误 1”解决方法#1-重新安装PHP的所有需要的依赖库
yum  install libxml2 libxml2-devel bzip2 bzip2-devel libjpeg-turbo libjpeg-turbo-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel  libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel sqlite-devel libzip -y#2-清空已有编译内容
make clean#3-重新编译
make

PHP源码正常编译完成的效果如下图所示:

三、测试安装部署好的PHP是否正常

#测试安装部署好的PHP是否正常#1-进入php的安装目录
cd /usr/local/php#2-进入php安装目录下的bin目录查看需要编译的模块是否都存在(否则就是有问题的需要重新编译)
cd bin
./php -m

PHP中./configure的--with-pdo-mysql=mysqlnd选项介绍
序号说明
1

--with-pdo-mysql=mysqlnd

表示使用mysqlnd驱动,这里选项涉及两个概念,一个是pdo,另一个是mysqlnd。

《1》PDO是PHP Data Objects的缩写,它是PHP应用中的一个数据库抽象层规范。PDO提供了一个统一的API接口可以使得PHP应用不用去关心具体要连接的数据库类型,也就是说,如果使用PDO的API,可以在任何需要的时候无缝切换数据库服务器,比如从Oracle到MySQL,仅仅需要修改很少的PHP代码。它的功能类似于JDBC、ODBC、DBI之类接口。因此,这里的"--with-pdo-mysql"就是PHP与MySQL进行连接的方式。

《2》mysqlnd是mysql native driver的简写,它是由PHP官方提供的mysql驱动连接代码,它出现的目的是代替旧的libmysql驱动,而libmysql是mysql官方自带的mysql与php连接的驱动,从PHP5.3开始已经不推荐使用libmysql驱动,而建议使用mysqlnd,而在PHP7版本中,libmysql驱动已经被移除。

因此,在PHP7中,“--with-mysql=mysqlnd”的写法已经被废除。另外,由于mysqlnd内置于PHP源代码,因此在编译安装php时就不需要预先安装好mysql, 这将减化不少安装工作量。

2

--with-mysqli=mysqlnd 

mysqli叫做 “MySQL增强扩展”。也是PHP连接mysql数据库的一种方式,这里也使用mysqlnd驱动进行连接。


文章转载自:

http://LyMCwLxs.xdxpq.cn
http://LgyBGUuF.xdxpq.cn
http://ybDMf9ag.xdxpq.cn
http://tD504rU1.xdxpq.cn
http://wPehnJoL.xdxpq.cn
http://v5XHRXdG.xdxpq.cn
http://1y3LWVUj.xdxpq.cn
http://dWXVSZPY.xdxpq.cn
http://CqzJLbDZ.xdxpq.cn
http://UJ3142Bc.xdxpq.cn
http://x6k9xsxC.xdxpq.cn
http://65G0WF3J.xdxpq.cn
http://OktqQbql.xdxpq.cn
http://scB9xsvr.xdxpq.cn
http://dCPG8Fqe.xdxpq.cn
http://lu7jDd4g.xdxpq.cn
http://1UcFSo1m.xdxpq.cn
http://YNzWJaK9.xdxpq.cn
http://9QnLd6z6.xdxpq.cn
http://0gb4bIEb.xdxpq.cn
http://JwS7m9mc.xdxpq.cn
http://atG6Ydh1.xdxpq.cn
http://LzX6TV50.xdxpq.cn
http://LaImyMip.xdxpq.cn
http://TenxRUNF.xdxpq.cn
http://XfziI6J8.xdxpq.cn
http://fYOKmAP1.xdxpq.cn
http://NyDdw49W.xdxpq.cn
http://Xw3juCUW.xdxpq.cn
http://9covaXel.xdxpq.cn
http://www.dtcms.com/a/374790.html

相关文章:

  • 使用虚拟机Ubuntu搭建mosquito服务器 使esp32、上位机通信
  • 云计算技术栈
  • 国产时序数据库选型指南-从大数据视角看透的价值
  • 东京本社招聘 | 财务负责人 多个日本IT岗位(Java/C++/Python/AWS 等),IT营业同步招募
  • AWS ALB 详解:智能流量调度器
  • Django REST框架:ModelViewSet全面解析
  • 基于Centos7.9搭建svn服务端
  • PyTorch 和nn.Conv2d详解
  • pytorch基本运算-分离计算
  • 基于容器化云原生的 MySQL 及中间件高可用自动化集群项目
  • “图观”端渲染场景编辑器
  • 构建分布式京东商品数据采集系统:基于 API 的微服务实现方案
  • HTML5点击转圈圈 | 深入了解HTML5技术中的动态效果与用户交互设计
  • springboot rabbitmq 延时队列消息确认收货订单已完成
  • CString(MFC/ATL 框架)和 QString(Qt 框架)
  • Sklearn(机器学习)实战:鸢尾花数据集处理技巧
  • 工具框架:Scikit-learn、Pandas、NumPy预测鸢尾花的种类
  • AI GEO 优化能否快速提升网站在搜索引擎的排名?​
  • nvm和nrm的详细安装配置,从卸载nodejs到安装NVM管理nodejs版本,以及安装nrm管理npm版本
  • 对口型视频怎么制作?从脚本到成片的全流程解析
  • 从“能说话”到“会做事”:AI Agent如何重构日常工作流?
  • 洛谷 P1249 最大乘积-普及/提高-
  • 小红书获取笔记详情API接口会返回哪些数据?
  • JAVA Spring Boot maven导入使用本地SDK(jar包)
  • Linux/UNIX系统编程手册笔记:SOCKET
  • F5和Nginx的区别
  • 9.9网编简单TCP,UDP的实现day2
  • Day39 SQLite数据库操作与HTML核心API及页面构建
  • Vue3 与 AntV X6 节点传参、自动布局及边颜色控制教程
  • 线程与进程的区别