学习周报-20230203

一 在rhel7系统使用Mariadb

一 联系和区别

Mariadb是由社区开发的一个MySQL分支,由MySQL的部分原作者构建。它提供了一系列包括备用存储引擎、服务器优化和补丁等的增强功能,是在MySQL对应版本发布后的性能优化。

Mariadb MySQL
纯开源 双重许可授权
不提供密码复杂度插件功能 提供密码复杂度插件功能
没有memcached接口 有memcached接口
支持更多的存储引擎 支持的存储引擎相对较少
主要由社区开发 主要由甲骨文开发
默认的二进制日志格式是混合式 默认二进制日志格式是基于行

二 需求

1)安装部署Mariadb数据库。
2)根据下列要求创建用户。

用户 密码 特权
dick dick123 对传统数据库所有表进行选择(查询)操作,且只能本地登录
james james123 对传统数据库所有表进行选择(查询)操作,只能通过10.0.0.10登录
legacy legacy123 对传统数据库所有表进行查询、插入、更新和删除操作,可从任意网段登录

3)向 com 数据库的 sale 表中插入下列数据。

名称 销售人员 电话号码
HP Joe 111111
Dell Luke 222222
Lenovo Dave 333333

4)插入数据后对 com 数据库进行备份,且误删除该库,需要还原该库下的 sale 表。

三 部署安装

3.1 环境准备

[root@mariadb ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.6 (Maipo)
[root@mariadb ~]# uname -r
3.10.0-957.el7.x86_64

本机使用rhel7的操作系统。

在这里插入图片描述

3.2 安装软件包

此处我们使用了groupinstall,而不是install

yum groupinstall -y mariadb mariadb-client

yum install 它安装单个软件,以及这个软件的依赖关系。

yum groupinstall 它安装一个安装包,这个安装包包涵了很多单个软件,以及单个软件的依赖关系。

在安装 mariadb 时,我们安装了这个组下面的软件包。
在这里插入图片描述

在安装 mariadb-client 时,我们安装了这个组下面的软件包。
在这里插入图片描述

安装完成后,显示结果如下:

在这里插入图片描述

3.3 启动服务

systemctl start mariadb.service 
systemctl enable mariadb.service 
systemctl status mariadb.service 

启动服务,开机自动启动服务,查看服务运行状态。

在这里插入图片描述

3.4 设置防火墙策略

设置防火墙接受远程连接。(如果防火墙本身是关闭的,则不需要设置)

[root@mariadb ~]# firewall-cmd --permanent --add-service=mysql
success
[root@mariadb ~]# firewall-cmd --reload 
success

四 创建用户和库表

4.1 登录数据库

在这里插入图片描述

4.2 创建用户

创建用户dick并授权。

在这里插入图片描述

创建用户james并授权。

在这里插入图片描述

创建用户legacy并授权。

在这里插入图片描述

最后刷新特权,并检查。

在这里插入图片描述

4.3 创建数据库和表

首先查看有哪些数据库
在这里插入图片描述

接着创建数据库 com

在这里插入图片描述

然后使用这个数据库

在这里插入图片描述

首先创建这个表,并检查属性的设置。

在这里插入图片描述

接着向表中插入数据,并检查结果。

在这里插入图片描述

五 备份和恢复

5.1 备份 com 数据库

此处使用 mysqldump 进行逻辑备份。

mysqldump -u root com > /tmp/com.dump

将备份结果放至/tmp目录下,形成com.dump文件。

在这里插入图片描述

5.2 模拟误删除操作

进入数据库,删除 com 数据库,并检查操作结果。

在这里插入图片描述

5.3 恢复表

利用逻辑备份的文件,恢复 com 数据库下的 sale 表。

虽然原本的 sale 表是在 com 数据库下的,但恢复时我们可以创建一个名称不同的新的数据库,例如数据库 abc ,在这个库下恢复 sale 表的内容。因此虽然我们在 mysqldump 时备份的对象是数据库 com ,但实际上备份的只有 sale 表。

在这里插入图片描述

创建好数据库后,就可以使用 mysql 命令恢复表。

在这里插入图片描述

经过检查确认,数据库 abc 下面的 sale 表数据成功恢复。

二 使用grep忽略大小写匹配

需求:在当前目录下有一个后缀为 .cpp 的文件,当前目录下有一个子目录,子目录中也有一个后缀为 .cpp 的文件。这两个文件中含有 字母是随机大小写的 example数据,现要求精确匹配这些内容。

测试环境部署:

在这里插入图片描述

此时检查一下文件的内容:

在这里插入图片描述

命令实现:

在这里插入图片描述

参数 -r:递归查询目录下面的子目录。
参数 -i:忽略大小写进行匹配。

在这里插入图片描述

如果将最后的 ./* 替换成 ./ ,那么当前目录以及子目录下面的隐藏文件也是查找的范围。

在这里插入图片描述

如果不添加递归查询的参数 -r ,由于 grep 最终作用的对象是文件而不是目录,所以它无法识别子目录下一级别的文件,只能识别子目录,并提示用户 这是一个目录

三 在CentOS-6.9部署apache服务

一 系统环境

参数
主机IP 10.0.0.100
主机名 test
操作系统版本 CentOS release 6.9 (Final)
操作系统内核 2.6.32-696.el6.x86_64

二 部署服务

2.1 yum安装软件

最简单的方式是 yum 安装,它会自动安装依赖的软件

yum install -y httpd

安装结束后可以发现,此处会自动检查依赖的软件并将其安装。

在这里插入图片描述

2.2 修改主配置文件

安装结束后,修改 /etc/httpd/conf/httpd.conf 配置文件,将 ServerName 修改为主机的IP

在这里插入图片描述

在命令模式下搜索 ServerName ,找到对应行,删除注释符号,并改成 本机IP:80 的形式
本机的IP是10.0.0.100,因此修改为 10.0.0.100:80
最后保存退出。

在这里插入图片描述

2.3 修改防火墙规则

接着在配置文件 /etc/sysconfig/iptables 修改防火墙规则,由于 apache 服务默认是 80 端口,所以允许80端口访问。
添加的内容如下:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

在这里插入图片描述

需要注意的是,添加的新规则必须是在末尾的两条规则的前面,否则无法访问网页内容。
最后依次重启防火墙,启动 httpd 并检查服务状态。

在这里插入图片描述

2.4 访问测试

最后打开浏览器,输入本机的IP,可以看到下面的界面,Apache服务部署成功

在这里插入图片描述

三 主配置文件参数

首先过滤掉空行内容与注释部分内容,将生效的配置参数放入一个新文件 a.txt 中

egrep -v '^$|^#' /etc/httpd/conf/httpd.conf > a.txt

由于参数过多,此处只列举常用的参数与对应的含义。

3.1 主配置文件常规语句

参数 数值 解释
ServerRoot “/etc/httpd” httpd服务器配置文件的根目录
Timeout 120 服务器在断开请求失败前等待120秒
KeepAlive on 提供长久的HTTP会话,可以在一个TCP连接中进行多次请求 ,开启apache服务器的持久连接特性
StartServers 8 服务器启动时创建8个子进程
Listen 80 服务器监听的端口号是80
LoadModule modules/mod_auth_basic.so 加载目标文件或模块,并添加到活动模块列表
Include conf.d/*.conf /etc/httpd/conf.d/目录下的所有 *.conf 文件会在服务器启动时被调用,分解主配置文件
User apache 启动apache服务器子进程的用户名
Group apache 启动apache服务器子进程的工作组
ServerAdmin root@localhost 页面出现错误码时,显示这个管理员的邮箱地址
DocumentRoot “/var/www/html” 主域名服务器的根目录,网站主页存放的地方
Alias /icons/ “/var/www/icons/” 设置虚拟目录,用户访问 http://ip/icons 时,实际访问 /var/www/icons/
ScriptAlias /icons/ “/var/www/icons/” 与Alias相比,增加了执行脚本的权限
AddDefaultCharset UTF-8 设置默认字符格式为UTF-8
ServerName www.oldboy.com 设置主服务器的主机名为 www.oldboy.com

3.2 主配置文件日志控制语句

参数 数值 解释
ErrorLog logs/error_log 设置 /etc/httpd/logs/error_log为错误日志文件
LogLevel warn 设置日志记录级别,记录warn以及以上的级别
LogFormat “%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i”” combined 设置访问日志文件的格式,标识为combined
CustomLod logs/access_log combined 设置访问日志的文件,采用combined标识格式的日志记录到/etc/httpd/logs/access_log文件中

日志文件格式参数列表

格式字符串 描述
%% 百分号
%a 远端IP地址
%A 本机IP地址
%b 以CLF格式显示除了HTTP头以外传送的字节数,无字节传送时显示 -
%f 文件名
%h 远端主机
%H 请求使用的协议
%l 远端登录名
%r 请求的第一行
%s 原始请求的状态
%>s 最后请求的状态
%t 普通日志格式的时间
%u 远程用户名
%U 请求的URL路径

3.3 主配置文件的性能控制语句

参数 数值 解释
MaxClients 150 服务器同时在线的并发请求数目
MaxRequestsPerChild 0 每个进程能响应的最大请求数,0表示不限制
MaxSpareServers 10 最大空闲服务进程数
MinSpareServers 3 最小空闲服务进程数
MaxKeepAliveRequests 100 持续连接时每个连接的最大请求数
KeepAliveTimeout 5 服务器关闭TCP连接时等待的时间
ThreadsPerChild 50 服务器使用的线程数

四 在CentOS-6.9配置apache服务(1)—基于个人主页的身份验证

一 系统环境

参数
主机IP 10.0.0.100
主机名 test
操作系统版本 CentOS release 6.9 (Final)
操作系统内核 2.6.32-696.el6.x86_64
防火墙规则 允许80端口

二 用户身份验证

2.1 编写主配置文件

/etc/httpd/conf.d/ 目录下创建身份验证的配置文件

[root@test auth]# cat /etc/httpd/conf.d/user_auth.conf 
<Directory "/var/www/html/auth">
  Options Indexes
  AllowOverride AuthConfig
  Order allow,deny
  Allow from all
</Directory>

此处参数 AllowOverride 后面的值 AuthConfig 表示 允许 /var/www/html/auth 目录下的 .htaccesss文件生效,如果改成 AllowOverride None,即使 /var/www/html/auth 目录下存在 .htaccesss文件,也不会生效。

参数值 含义
AllowOverride AuthConfig /var/www/html/auth 目录下的 .htaccesss 文件会生效
AllowOverride None /var/www/html/auth 目录下的 .htaccesss 文件不会生效

2.2 编写用户身份验证的配置文件

[root@test ~]# cd /var/www/html/auth/
[root@test auth]# cat .htaccess 
AuthType Basic
AuthName "请输入用户名和密码"
AuthUserFile "/var/www/html/auth/.htpasswd"
Require user oldboy
参数 说明
AuthType 表示验证类型
AuthName 表示验证时显示的信息
AuthUserFile 表示验证时的用户密码存储文件
Require user oldboy 表示允许用户oldboy访问(虚拟用户,在apache服务器不存在)

如果想要允许 /var/www/html/auth/.htpasswd 的所有有效用户访问,第四个参数应是Require valid-user

2.3 创建用户密码文件

htpasswd -c /var/www/html/auth/.htpasswd oldboy

使用上述命令,创建 oldboy 的登录密码,本机创建密码为 123456

在这里插入图片描述

2.4 创建测试页面

创建测试文件,放在身份验证的站点目录下

[root@test auth]# echo "welcome to oldboy auth page" > /var/www/html/auth/index.html

2.5 重启服务和测试

重启 apache 服务,并访问浏览器

在这里插入图片描述

此处需要注意的是,浏览器访问的是 10.0.0.100/auth,再输入用户名和密码

在这里插入图片描述

并得到下方结果,表示成功

在这里插入图片描述

三 基于个人主页的身份验证

中,操作了基本的身份验证配置方法,接下来需要创建一个个人主页服务器,禁止root用户创建个人主页,而其余所有普通用户都可以创建个人主页。

3.1 修改主配置文件

首先进行配置文件的备份

[root@test ~]# cd /etc/httpd/conf
[root@test conf]# cp httpd.conf httpd.conf.bak

其次进行过滤,去掉所有的注释和空行内容

[root@test conf]# egrep -vn '#|^$' /etc/httpd/conf/httpd.conf

修改成下列的内容。
其中 disable root 表示禁止root用户创建个人主页,也就是允许所有普通用户创建个人主页。
其中 html 表示设置个人主页的目录。
其中 /home/*/html 表示针对所有普通用户的主页,例如 oldboy 用户的个人主页为 /home/oldboy/html 目录。
剩下的语句是允许客户端通过任何IP地址使用 GET POST OPTIONS 方法进行操作。

在这里插入图片描述

3.2 创建测试用户

创建用户a,禁止其shell登录,属组为a
创建用户b,禁止其shell登录,属组为a
创建用户c,禁止其shell登录,属组为c

useradd a -s /sbin/nologin 
useradd b -s /sbin/nologin -g a
useradd c -s /sbin/nologin 

3.3 创建测试的个人主页

先创建个人主页的目录,再创建测试文件

[root@test ~]# mkdir /home/{a,b,c}/html -p
[root@test conf]# echo "---welcome to a home page---" > /home/a/html/index.html
[root@test conf]# echo "---welcome to b home page---" > /home/b/html/index.html
[root@test conf]# echo "---welcome to c home page---" > /home/c/html/index.html

接着在每个用户的 html 目录下创建 .htaccess 文件。

[root@test conf]# touch /home/a/html/.htaccess
[root@test conf]# touch /home/b/html/.htaccess
[root@test conf]# touch /home/c/html/.htaccess

再分别给3个用户的 .htaccess 文件中添加内容。

[root@test conf]# cat /home/a/html/.htaccess 
AuthType Basic
AuthName "请输入用户名和密码"
AuthUserFile "/home/a/html/.htpasswd"
AuthGroupFile "/home/a/html/.htgroup"
Require user user_a
Require group group_a_b
[root@test conf]#
[root@test conf]# cat /home/b/html/.htaccess 
AuthType Basic
AuthName "请输入用户名和密码"
AuthUserFile "/home/a/html/.htpasswd"
AuthGroupFile "/home/a/html/.htgroup"
Require user user_b
Require group group_a_b
[root@test conf]#
[root@test conf]# cat /home/c/html/.htaccess 
AuthType Basic
AuthName "请输入用户名和密码"
AuthUserFile "/home/c/html/.htpasswd"
Require user user_c

然后创建身份验证用户,密码分别是12345a 、12345b 、12345c

htpasswd -c /home/a/html/.htpasswd user_a
htpasswd /home/a/html/.htpasswd user_b
htpasswd -c /home/a/html/.htpasswd user_c

在这里插入图片描述

接着创建身份验证组。

echo "group_a_b: user_a user_b" > /home/a/html/.htgroup

最后也是非常重要的一步,给目录和文件授权,配置文件注释部分的原文如下:

在这里插入图片描述

这段英文的意思我们举例说明:
如果我们创建了 oldboy 用户的个人主页,主页文件是 /home/oldboy/html/index.html
那么目录 /home/oldboy 的权限必须至少是 711
目录 /home/oldboy/html 的权限必须至少是 755
目录 /home/oldboy/html 下面的文件 index.html 权限至少是全员可读的。
否则在浏览器访问时会得到 403 无权访问的提示。

chmod 711 /home/{
    
    a,b,c}
chmod 755 /home/{
    
    a,b,c}/html
chmod a+r /home/{
    
    a,b,c}/html/*

最后检查一遍权限。

在这里插入图片描述

3.4 设置防火墙和selinux

使用命令临时关闭 SELinux

setenforce 0

接着在配置文件永久关闭SELinux,并添加防火墙规则,允许 80 端口。

在这里插入图片描述

3.5 测试

重启防火墙和apache服务。

在这里插入图片描述

在浏览器输入本机的IP以及对应的用户。

10.0.0.100/~a
10.0.0.100/~b
10.0.0.100/~c

在这里插入图片描述

登陆成功后,得到的结果如下图:

在这里插入图片描述

其他用户主页的登陆方式同理。

五 在CentOS-6.9配置apache服务(2)—虚拟目录配置

一 需求

基于用户个人主页的身份验证,在浏览器输入 10.0.0.100/~a 可以得到用户a的个人网页信息,但为了提高系统的安全性,一般需要将 ~a ~b ~c 隐藏起来,所以需要设置一个虚拟目录,也叫目录别名。

当我们搜索 10.0.0.100/a 时,实际访问的是 /home/a/html 目录下的内容。

二 系统环境

参数
主机IP 10.0.0.100
主机名 test
操作系统版本 CentOS release 6.9 (Final)
操作系统内核 2.6.32-696.el6.x86_64
防火墙规则 允许80端口

三 基于Alias普通别名

3.1 配置个人主页

编写apache主配置文件,创建a、b、c用户的测试文件,创建相关.htaccess.htpasswd文件,给用户家目录以及下面的子目录授予对应的权限,设置SELinux和iptables。

3.2 编写虚拟目录配置文件

进入 /etc/httpd/conf.d/ 目录,编写可被识别的apache附加的虚拟目录的配置文件。

当输入 10.0.0.100/a 时,可以访问 /home/a/html 站点目录下的内容;
当输入 10.0.0.100/b 时,可以访问 /home/b/html 站点目录下的内容;
当输入 10.0.0.100/c 时,可以访问 /home/c/html 站点目录下的内容;

[root@test ~]# cd /etc/httpd/conf.d/
[root@test conf.d]# cat vir_dir.conf 
Alias  "/a"  "/home/a/html"
Alias  "/b"  "/home/b/html"
Alias  "/c"  "/home/c/html"

3.3 测试

添加,修改,删除配置文件,都应重启 httpd 服务。

service httpd restart

在浏览器输入 10.0.0.100/b

在这里插入图片描述

此外,也可以在Linux命令行中用 curl 命令测试:

curl -L 10.0.0.100/c -u user_c

其中参数-u,指定登陆的用户名;
参数-L,自动重定向到指定页面。

在这里插入图片描述

由此可见,虚拟目录配置成功。

四 基于ScriptAlias脚本别名

4.1 编写主配置文件

打开 /etc/httpd/conf/httpd.conf 配置文件,将下列内容前面的注释符号去掉,使其生效

在这里插入图片描述

4.2 创建测试主页

首先创建测试文件

[root@test conf]# touch /var/www/cgi-bin/index.cgi
[root@test conf]# cat /var/www/cgi-bin/index.cgi 
#!/usr/bin/perl
print "Content-type:text/plain \n\n";
print "-----welcome to cgi page-----\n";

接着赋予该文件执行权限

[root@test conf]# chmod +x /var/www/cgi-bin/index.cgi 
[root@test conf]# ll  /var/www/cgi-bin/index.cgi 
-rwxr-xr-x 1 root root 54 131 11:55 /var/www/cgi-bin/index.cgi

4.3 测试

先重启httpd服务

[root@test conf]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

接着在命令行输入 curl 10.0.0.100/cgi-bin/index.cgi

在这里插入图片描述

也可以在浏览器输入 10.0.0.100/cgi-bin/index.cgi

在这里插入图片描述

ScriptAlias脚本别名配置成功。

猜你喜欢

转载自blog.csdn.net/oldboy1999/article/details/128615217