LNMP:目前成熟的一个企业网站的应用模式之一,指的是一套协同工作的系统和相关软件
能够提供静态页面服务,也可以提供动态web服务,LNMP是缩写
L:指的是Linux操作系统。
N:指的是nginx,nginx提供网站服务,前端的静态页面服务,同时还有代理转发作用
转发后端请求,转发到PHP。nginx没有处理动态资源的功能,但是他有可以支持转发动态请求的模块。
M:指的是mysql关系型数据库,用于保留用户的账户密码。
P:指的是PHP,动态页面的编程语言,负责解释动态网页文件,和nginx以及数据库协同工作
主要作用是前端开发,PHP作为中间键。
数据流向:
客户端→nginx→PHP→mysql
nginx PHP mysql都是在Linux中
客户端用get方式请求到nginx,nginx只能查看静态页面
当需要用户登录输入账户密码时(有交互操作时为动态页面)通过nginx支持PHP转发模块到PHP发起后端动态请求
PHP到mysql:socket端口和数据库建立通信,post数据传输给mysql,mysql查询数据库,匹配账号和密码
需要用到编译安装,用二进制包进行安装
yum安装只是安装基础服务模块,其他模块要想用,用户要手动重新添加
而编译安装可以自由的指定需要的模块,在企业中nginx,mysql都是编译安装、
论坛搭建实验:
虚拟机内存一定要给到4G
把安装包拖进来
解压nginx安装包到当前文件夹
在真正的程序下面编译安装
./configure \ 安装
--prefix=/usr/local/nginx \ 指定安装包路径
--user=nginx \ 指定哪个用户可以打开nginx
--group=nginx \ 指定所在的组为nginx
--with-http_stub_status_module 可以支持查看http请求状态的模块
创建nginx的程序用户 -M不需要家目录 不需要登录
安装 -j 4:指定使用4个cpu核安装,提高安装速度
真正的安装的nginx程序所在的地方,opt目录下的那个只是一个源码包
建一个软连接,优化路径
要到sbin里面
添加到系统服务当中
给权限
小技巧,用nginx -t看语法和配置文件是否有问题
重启
验证一下nginx是否有问题
下面安装数据库mysql
安装依赖环境
创建运行用户
编译安装,先到opt目录下解压mysql包
到源码目录里进行操作,所有的操作都在mysql包里进行操作
设置数据库配置的过程 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
#指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
#指定mysql进程监听套接字文件(数据库连接文件)的存储路径
-DSYSCONFDIR=/etc \
#指定配置文件的存储路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \
#指定进程文件的存储路径
-DDEFAULT_CHARSET=utf8 \
#指定默认使用的字符集编码,如utf8
-DDEFAULT_COLLATION=utf8_general_ci \
#指定默认使用的字符集校对规则
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
#安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
#安装ARCHIVE存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
#安装BLACKHOLE存储引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
#安装FEDERATED存储引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \
#指定数据库文件的存储路径
-DWITH_BOOST=boost \
#指定boost的路径,
-DWITH_SYSTEMD=1
#生成便于systemctl管理的文件
在编译安装mysql前检查一下内存是否够用,如果不够用可以用echo 1 > /proc/sys/vm/drop_caches 这个命令来清理内存,防止在编译安装时报错
安装
配置数据库文件
其中模块组件:NO_ENGINE_SUBSTITUTION
如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常
STRICT_TRANS_TABLES
在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制
NO_AUTO_CREATE_USER
禁止:GRANT创建密码为空的用户
NO_AUTO_VALUE_ON_ZERO
mysql中的自增长列可以从o开始。默认情况下自增长列是从1开始的,如果你插入值为0的数据会报错
NO_ZERO_IN_DATE
mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告
ERROR_FOR_DIVISION_BY_ZERO
在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。默认情况下数据被零除时MysQL返回NULL
IPES_AS_CONCAT
将"||"视为字符串的连接操作符而非或运算符,这和oracle数据库是一样的,
ANSI QUOTES
启用ANSI QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符
更改mysql安装目录和配置文件的属主属组
把mysql的环境变量写到系统配置文件etc/profile里面去实现全局配置对所有终端都生效,让系统来进行识别
立即生效
对数据库的数据初始化
把配置文件复制到usr/lib/systemd/system下面
对数据库的数据初始化 > --initialize-insecure \就是初始化 > --user=mysql \
用户指定mysql > --basedir=/usr/local/mysql \
> --datadir=/usr/local/mysql/data 把mysql目录和mysql数据存储文件都进行初始化
把配置文件复制到usr/lib/systemd/system下面
重新加载配置
重启MySQL服务
给数据库设置密码,用户名为root,密码为123456
如果设置密码报错,解决步骤如下
添加skip-grant-tables #免密登录 保存退出后
不用输入密码直接回车
重新设置密码
回到配置文件中删除免密登录的命令
重启mysql服务,这时可以用密码123456进行登录
打开Navicat 点击连接,连接名随便起,主机名要改成服务器的地址
进行连接测试报错,因为没有给远程连接工具的访问权限
grant all privileges on *.* to 'root'@'%' identified by '123456'; (有分号)
#授予root用户可以在所有终端远程登录,使用的密码是123456,并对所有数据库和所有表有操作权限
grant:赋权语句
all privileges:所有权限 select,create,insert,update,delete,drop
,:授予root用户,可以操作所有数据库当中的所有的表
root:指定用户
%:所有主机都拥有连接数据库的权限
identified by '123456' 用户登录时需要输入密码,密码是123456
flush privileges; 刷新权限
最好刷新一下
再到Navicat里面看一下,连接成功
使用一下Navicat,输入几条查询语句,右键可以选择运行已选择的
下面到处理中间键的PHP部分
安装环境依赖包
到opt目录下
解压源码包
进入php源码包中
--prefix=/usr/local/php: 指定PHP的安装目录为/usr/local/php。
--with-mysql-sock=/usr/local/mysql/mysql.sock: 指定MySQL的Unix socket文件路径,用于与MySQL数据库建立连接。
--with-mysqli: 启用MySQLi扩展,用于支持MySQL数据库。
--with-zlib: 启用Zlib库,用于压缩和解压缩数据。
--with-curl: 启用cURL库,用于支持对URL的操作,如下载文件等。
--with-gd: 启用GD库,用于处理图像。
--with-jpeg-dir: 指定JPEG库的路径,用于GD库对JPEG格式图片的处理。
--with-png-dir: 指定PNG库的路径,用于GD库对PNG格式图片的处理。
--with-freetype-dir: 指定FreeType库的路径,用于GD库对字体的支持。
--with-openssl: 启用OpenSSL库,用于支持SSL加密和HTTPS协议。
--enable-fpm: 启用PHP-FPM(FastCGI Process Manager),用于提供更高效的PHP进程管理和请求处理。
--enable-mbstring: 启用多字节字符串支持,用于处理多字节字符集的操作。
--enable-xml: 启用XML支持,用于处理XML文档和数据。
--enable-session: 启用会话支持,用于在不同页面间保持用户会话状态。
--enable-ftp: 启用FTP支持,用于对FTP服务器进行操作。
--enable-pdo: 启用PDO(PHP Data Objects),用于支持数据库访问的统一接口。
--enable-tokenizer: 启用Tokenizer扩展,用于对字符串进行分词处理。
--enable-zip: 启用Zip扩展,用于对ZIP文件进行操作。
安装前查看一下内存是否够,不够就清理一下内存,防止报错
安装一下
把bin里面的和sbin里面的文件都优化一下
补充:调整PHP配置文件
php有三个配置文件:
php.ini 主配置文件
php-fpm.conf 进程服务配置文件
www.conf 扩展配置文件
把名字改一下
修改配置文件
939gg 取消注释把时区改了
1170gg,告诉php,通信的配置文件在/usr/local/mysql/mysql.sock
以上为对php的主配制文件进行修改
看安装模块是否正常
改名
把pid号文件取消注释
www.conf是扩展配置文件
给www.conf.default改个名字
启动php-fpm
php默认端口号为9000
这个时候php就启动好了
复制,做备份
重启php服务
看一下端口号是否正确
下面回到nginx,nginx本身不能处理动态请求,动态请求交给PHP
修改nginx配置文件
取消注释
代表当前请求在root指令中指定的值
$document_root=/usr/local/nginx/html指定默认路径
$fastcgi_script_name= index.php 把指定的默认路径传给php
/usr/local/nginx/html 所有的动态请求文件的默认位置
请求的文件名为:index.php
检测配置文件修改是否正确
修改完要重启服务
接下来验证一下php的验证页
默认请求的目录都在这个下面,创建一个动态请求的页面
一个简单的验证PHP测试页
测试一下页面,这就是获取到的php动态页面
配置数据库
进入数据库
创建一个数据库,名字叫bbs
开始赋权,只要用户名叫bbsuser给他所有的权限,登录密码为admin123
本地用户登录也需要输入密码admin123
把权限刷新一下
改配置文件,测试一下php服务和数据库之间的通信是否正常
PHP脚本
使用mysqli_connect()函数连接到MySQL数据库服务器。
'192.168.88.20':表示MySQL服务器的IP地址。
'bbsuser':表示要连接的MySQL用户。
'admin123':表示MySQL用户的密码。
判断连接状态:
如果连接成功,即$link不为空,就输出
最后一步:部署论坛
在opt目录下解压论坛的数据包
把整个目录复制到页面配置页面下面nginx/html
起个名字叫bbs
把所有者改成nginx ./config/
把数据文件所有者改了
把客户端所有者目录改掉
把服务端所有者目录改掉
赋权
ll看一下是否有问题,下面通过网页进行论坛访问
所有的两边都要是打勾的
密码都为admin123
因为要写到绝对路径上才可以进行访问
管理员账户登录成功
可以进行管理