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.rhkb.cn/news/74679.html

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

相关文章

操作系统 - 小记 230803

文章目录 计算机的硬件组成程序的存储和执行程序语言的设计和进化存储设备的层次结构操作系统 https://www.bilibili.com/video/BV1Q5411w7z5?p2 计算机的硬件组成 CPU CU&#xff0c;控制单元ALU&#xff0c;算数逻辑单元寄存器 IO Bridge 处理器和外部交互的桥梁Main Memory…

Java并发编程之顺序一致性

如果程序是正确同步的&#xff0c;程序的执行将具有顺序一致性&#xff08;Sequentially Consistent&#xff09;——即程序的执行结果与该程序在顺序一致性内存模型中的执行结果相同。 同步&#xff0c;即排队。 同一时刻&#xff0c;只能有一个线程和内存交互&#xff01;&a…

windows环境下安装elasticsearch、kibana

通过本文可以快速在windows系统上安装elasticsearch、kibana环境。 当你用Integer类型的时候&#xff0c;要非常小心&#xff0c;因为100等于100、但是200不等于200&#xff0c;当然&#xff0c;如果你会一点小花招&#xff0c;也可以让100不等于100、让200等于200。(运算符比较…

windows物理机 上安装centos ,ubuntu,等多个操作系统的要点

一、摘要 一般情况下&#xff0c;我们的笔记本或工作电脑都默认安装windows 分几个区&#xff0c;当下是win7 win8 win 10 win11 等&#xff0c;突然我们有需求需要安装个centos &#xff0c;后面我们应当怎么做&#xff0c;要点是什么&#xff1f;一定要根据网上的贴子一步步来…

状态模式(State)

状态模式是一种行为设计模式&#xff0c;允许一个对象在其内部状态改变时改变它的行为&#xff0c;使其看起来修改了自身所属的类。其别名为状态对象(Objects for States)。 State is a behavior design pattern that allows an object to change its behavior when its inter…

【LeetCode】地下城游戏(动态规划)

地下城游戏 题目描述算法分析编程代码 链接: 地下城游戏 题目描述 算法分析 编程代码 class Solution { public:int calculateMinimumHP(vector<vector<int>>& dungeon) {int m dungeon.size();int n dungeon[0].size();vector<vector<int>> d…

异或运算详解

异或运算详解 定义特性用途总结 定义 参与运算的两个数据,按二进制位进行 ^ 运算,如果两个相对应为值相同结果为0,否则为1 1 ^ 0 1 0 ^ 1 1 0 ^ 0 0 1 ^ 1 0特性 异或^运算只能用于数值(整数) x ^ 0 x x ^ x 0用途 两个值交换,而不用使用临时变量 a a ^ b; b b ^…

《向量数据库》——怎么安装向量检索库Faiss?

装 Faiss 以下教程将展示如何在 Linux 系统上安装 Faiss: 1. 安装 Conda。 在安装 Faiss 之前,先在系统上安装 Conda。Conda 是一个开源软件包和环境管理系统,可在 Windows、macOS 和 Linux 操作系统上运行。根据以下步骤在 Linux 系统上安装 Conda。 2. 从官网…

AI Chat 设计模式:11. 状态模式

本文是该系列的第十一篇&#xff0c;采用问答式的方式展开&#xff0c;问题由我提出&#xff0c;答案由 Chat AI 作出&#xff0c;灰色背景的文字则主要是我的一些思考和补充。 问题列表 Q.1 你知道状态模式吗A.1Q.2 它与有限状态机有什么联系吗&#xff1f;A.2Q.3 知道了&…

安防监控国标GB28181平台EasyGBS可以获取录像却无法播放是什么原因?

安防监控EasyGBS国标视频云服务平台基于国标GB/T28181协议&#xff0c;可实现的视频功能包括&#xff1a;视频直播、录像、语音对讲、云存储、告警、级联等&#xff0c;可分发的视频流包括RTSP、RTMP、FLV、HLS等格式。 近期有用户反馈&#xff0c;安防监控EasyGBS出现了设备录…

linux网卡命名规则

Consistent Network Device Naming Linux provides methods for consistent(一致) and predictable(可预测) network device naming for network interfaces. These features change the name of network interfaces on a system in order to make locating and different…

CentOS系统启动过程

CentOS系统启动流程图 &#xff08;1&#xff09; 加载 BIOS 计算机电源加电质检&#xff0c;首先加载基本输入输出系统&#xff08;Basic Input Output System&#xff0c;BIOS&#xff09;&#xff0c;BIOS 中包含硬件 CPU、内存、硬盘等相关信息&#xff0c;包含设备启动顺序…

kubernetes之Ingress

一、背景 Ingress是k8s中实现7层负载的实现方式&#xff0c;是公开集群外部流量到集群内服务的HTTP和HTTPS路由 二、Ingress基础 通常Ingress实现由Ingress 控制器和Ingress组成&#xff0c;Ingress控制器负责具体实现反向代理及负载均衡&#xff0c;Ingress负责定义匹配规则和…

线程池相关理论

什么是线程池 线程池是一种利用池化技术思想来实现的线程管理技术&#xff0c;主要是为了复用线程、便利地管理线程和任务、并将线程的创建和任务的执行解耦开来。我们可以创建线程池来复用已经创建的线程来降低频繁创建和销毁线程所带来的资源消耗。在JAVA中主要是使用Thread…

谐波失真(HD)

某一固定信号经过电子元器件后会出现谐波信号&#xff0c;在现实世界中&#xff0c;渴望都是线性的系统。比如&#xff1a;某个信号经过运算放大器放大&#xff0c;理想情况下不应该出现其他谐波信号&#xff0c;但实际上有谐波信号出现&#xff0c;HD(harmonic distortion)在一…

LNMP搭建

LNMP LNMP是目前成熟的企业网站的应用模式之一&#xff0c;指的是一套协同工作的系统和相关软件&#xff0c;能够提供静态页面服务&#xff0c;也可以提供动态Web服务。 LNMP四个字母分别代表的意思&#xff1a; L&#xff1a;Linux系统&#xff0c;操作系统 N&#xff1a;…

jenkins gitlab多分支构建发布

内容背景介绍 这个是新手教程,普及概念为主 公司现在还使用单分支发布测试环境和生产,多人协同开发同一个项目导致测试环境占用等待等情况 测试环境占用等待问题 测试环境代码直接合并到 master,容易导致误发布到生产的情况 避免多版本同时发布测试不完善的情况出现 中间件…

17. Spring 事务

目录 1. 事务定义 2. MySQL 中的事务使用 3. 没有事务时的插入 4. Spring 编程式事务 5. Spring 声明式事务 5.1 Transactional 作用范围 5.2 Transactional 参数说明 5.3 Transactional 工作原理 1. 事务定义 将⼀组操作封装成一个执行单元&#xff08;封装到一起…

Java基础面试题1

Java基础面试题 一、面向对象和集合专题 1. 面向对象和面向过程的区别 面向过程&#xff1a;是分析解决问题的步骤&#xff0c;然后用函数把这些步骤一步一步地实现&#xff0c;然后在使用的时候一一调用则可。性能较高&#xff0c;所以单片机、嵌入式开发等一般采用面向过程…

【C++】开源:matplotlib-cpp静态图表库配置与使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍matplotlib-cpp图表库配置与使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&…