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

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

管理员账户登录成功

可以进行管理

相关推荐
cheri--9 小时前
adb install失败: INSTALL_PARSE_FAILED_NO_CERTIFICATES
adb
秋月霜风12 小时前
mariadb主从配置步骤
android·adb·mariadb
别不开心ovo12 小时前
【测试】ADB常用命令
adb
CCTV果冻爽3 天前
ADB ROOT开启流程
adb
WZF-Sang3 天前
【MySQL】数据类型【mysql当中各自经典的数据类型的学习和使用】
linux·数据库·sql·学习·mysql·adb
我命由我123453 天前
ADB 之 logcat 极简小抄(过滤日志、保存日志到文件)
android·运维·adb·android studio·安卓·运维开发·android-studio
不吃饭的猪3 天前
mysql一主2从部署
android·mysql·adb
lhxwished4 天前
MySQL
数据库·mysql·adb
CCTV果冻爽4 天前
USB开启ADB设置流程
adb
爱吃奶酪的松鼠丶5 天前
adb的安装和使用 以及安装Frida 16.0.10+雷电模拟器
adb