LNMP及论坛搭建(第一个访问,单节点)

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不为空,就输出<h1>Success!!</h1>,显示"Success!!"这个标题。

如果连接失败,即$link为空,就输出Fail!!,显示"Fail!!"这个信息。

该脚本的目的是测试连接到MySQL数据库服务器的状态。如果连接成功,

将显示"Success!!",如果连接失败,将显示"Fail!!"

最后一步:部署论坛

在opt目录下解压论坛的数据包

把整个目录复制到页面配置页面下面nginx/html

起个名字叫bbs

把所有者改成nginx ./config/

把数据文件所有者改了

把客户端所有者目录改掉

把服务端所有者目录改掉

赋权

ll看一下是否有问题,下面通过网页进行论坛访问

所有的两边都要是打勾的

密码都为admin123

因为要写到绝对路径上才可以进行访问

管理员账户登录成功

可以进行管理

相关推荐
HUGu RGIN8 小时前
MySQL--》如何在MySQL中打造高效优化索引
android·mysql·adb
北冥有鱼被烹20 小时前
【微知】rokid glass如何开启无线adb进行APP安装
adb
STER labo2 天前
mysql配置环境变量——(‘mysql‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件解决办法)
数据库·mysql·adb
sjmaysee2 天前
CentOS7安装Mysql5.7(ARM64架构)
adb·架构
AtOR CUES3 天前
MySQL——表操作及查询
android·mysql·adb
mOok ONSC3 天前
mysql9.0windows安装
windows·adb
xxjj998a3 天前
Laravel8.x核心特性详解
数据库·mysql·adb
TeDi TIVE3 天前
Linux下MySQL的简单使用
linux·mysql·adb
TeDi TIVE3 天前
MySQL四种备份表的方式
mysql·adb·oracle
rleS IONS3 天前
Linux系统离线部署MySQL详细教程(带每步骤图文教程)
linux·mysql·adb