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

 

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

 

 管理员账户登录成功

 可以进行管理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/26013.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Doris(四)-Rollup 使用

1&#xff0c;基本语法 1.1 新增 alter table user_landing_record_newadd rollup succ_login_count_index(user_id,day_succ_login_count); 1.2删除 alter table user_landing_record_newdrop rollup succ_login_count_index; 1.3其他操作&#xff0c;参考官网 传送门 …

Lua语法入门

3.1 初识Lua Lua是一种轻量级的脚本语言&#xff0c;它使用标准C语言编写&#xff0c;并以源代码形式开放。它的设计目标是嵌入到应用程序中&#xff0c;为应用程序提供灵活的扩展和定制功能。您可以在官方网站https://www.lua.org/上了解更多关于Lua的信息。 Lua经常被嵌入到…

CSP-J2019初赛试题客观题详解

1、中国的国家顶级域名是() A. .cn B. .ch C. .chn D. .China 【答案】A 【解析】 常见的顶级域名还有&#xff1a;.com表示商业机构&#xff1b;.org表示非盈利性组织&#xff1b;.net表示网络服务机构&#xff1b; .gov表示政府部门&#xff1b;.edu表示…

python之正则表达式

目录 正则表达式 python正则表达式方法 match search findall finditer compile 元字符匹配 元字符 量词 贪婪匹配和惰性匹配 正则表达式的group 语法 案例 正则表达式 正则表达式又称规则表达式&#xff0c;是使用单个字符串来描述、匹配某个句法规则的字符串…

[代码案例]学会python读写各类文件的操作(excel,txt,mat)

简介 python读写三类文件 excel文件 txt文件 mat文件 代码 """Description: python 读写各类文件 操作 """ import scipy as scipy from scipy.io import loadmat import xlwt import xlrd 读写excel文件workbook xlrd.open_workbook(test1.…

密码攻击与ADSelfService Plus的保护

密码攻击是当前网络安全面临的严峻挑战之一。黑客通过不断演进的技术手段&#xff0c;试图入侵用户账户&#xff0c;窃取敏感信息&#xff0c;从而对个人和组织造成严重损害。为了应对密码攻击的威胁&#xff0c;ManageEngine推出了ADSelfService Plus&#xff0c;这是一款功能…

【剑指 Offer 32】从上到下打印二叉树 II

题目&#xff1a; 从上到下按层打印二叉树&#xff0c;同一层的节点按从左到右的顺序打印&#xff0c;每一层打印到一行。 例如:给定二叉树: [3,9,20,null,null,15,7]3/ \9 20/ \15 7返回其层次遍历结果&#xff1a; [[3],[9,20],[15,7] ]思考&#xff1a; 题目要求从上到…

流程图如何制作?5步快速画出好看的流程图!

流程图是一种图形化工具&#xff0c;描述某个过程或者操作的步骤&#xff0c;以及某种业务系统的具体流程。流程图通常由各种图形符号、形状、箭头组成&#xff0c;可以清晰的表示出流程或系统中各种步骤、每个环节之间的关系、条件判断、数据的流动和处理过程等。 在线流程图软…

【LeetCode每日一题】——85.最大矩形

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 矩阵 二【题目难度】 困难 三【题目编号】 85.最大矩形 四【题目描述】 给定一个仅包含 0 …

excel 计算 分位值

_XLFN.QUARTILE.EXC(Result 1!G:G,2) 和 PERCENTILE 都可以用来计算一组数据的分位数&#xff0c;但是它们的计算方式略有不同。 _XLFN.QUARTILE.EXC(Result 1!G:G,2) 是 Excel 中的一个函数&#xff0c;在计算一个数据集的四分位数时使用。其中&#xff0c;第一个参数 Result…

P1144 最短路计数

最短路计数 题目描述 给出一个 N N N 个顶点 M M M 条边的无向无权图&#xff0c;顶点编号为 1 ∼ N 1\sim N 1∼N。问从顶点 1 1 1 开始&#xff0c;到其他每个点的最短路有几条。 输入格式 第一行包含 2 2 2 个正整数 N , M N,M N,M&#xff0c;为图的顶点数与边数…

【基础类】—三栏页面布局的方案和优缺点

一、假设高度已知&#xff0c;中间宽度自适应&#xff0c;三栏&#xff08;列&#xff09;布局的方案有哪些&#xff1f; float浮动、absolute绝对定位、flex弹性盒子、table表格布局、grid网格布局 浮动 float <style>* {margin: 0;padding: 0;}.container {width: 1…

内网穿透-————SSH远程连接树莓派

前言 文章目录 前言内网穿透实现公网SSH远程连接树莓派1. 在树莓派上安装[cpolar客户端](https://www.cpolar.com/)2. 在树莓派浏览器中输入本地9200端口3. 在公共互联网的电脑的命令行界面输入命令 内网穿透实现公网SSH远程连接树莓派 随着科技的进步和信息技术的发展&#x…

异步javaScript

在本文中&#xff0c;我们将解释什么是异步编程&#xff0c;为什么我们需要它&#xff0c;并简要讨论 JavaScript 历史上异步函数是怎样被实现的。 预备知识&#xff1a;基本的计算机素养&#xff0c;以及对 JavaScript 基础知识的一定了解&#xff0c;包括函数和事件处理程序…

20天学会rust(三)没有object的rust怎么面向对象?

面向对象我们都很熟悉&#xff0c;可以说它是一种软件开发最重要的编程范式之一&#xff0c;它将程序中的数据和操作数据的方法组织成对象。面向对象有几个重要特性&#xff1a; 封装、继承和多态&#xff0c;基于这些特性带来了在可重用性、可维护性、扩展性、可靠性的优点。 …

浅析pom文件标签功能

问题&#xff1a; 对maven项目的pom文件结构和标签不是很清晰 学习笔记&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project><parent><!-- 父项目信息 --></parent><!-- 声明项目描述符遵循哪一个POM模型版…

自然语言处理从入门到应用——LangChain:记忆(Memory)-[基础知识]

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 默认情况下&#xff0c;链&#xff08;Chains&#xff09;和代理&#xff08;Agents&#xff09;是无状态的&#xff0c;这意味着它们将每个传入的查询视为独立的&#xff08;底层的LLM和聊天模型也是如此&#xff09;…

用Rust实现23种设计模式之原型模式

在 Rust 中&#xff0c;原型模式可以通过实现 Clone trait 来实现。原型模式是一种创建型设计模式&#xff0c;它允许通过复制现有对象来创建新对象&#xff0c;而无需显式地使用构造函数。下面是一个使用 Rust 实现原型模式的示例&#xff0c;带有详细的代码注释和说明&#x…

shell 入门练习小记

一、hello world #!/bin/bash echo "Hello World !"#! 为约定的标记&#xff0c;告诉系统这个脚本需要什么解释器执行&#xff0c;后接绝对路径 /bin/bash 表示期望 bash去解析并运行shell echo用于向窗口输出文本 chmod x ./test.sh #给脚本赋执行权限 ./test.sh …

Centos7克隆快速复制多台虚拟机|互通互联

背景&#xff1a;有时候&#xff0c;我们在用虚拟机的时候会用到多个进行使用。重新安装会花费大量的时间&#xff0c;此时&#xff0c;我们可以通过vmware虚拟机自带的功能快速克隆出完全相同的系统。 前提&#xff1a;被克隆的虚拟机系统要处于关闭状态 步骤&#xff1a;…