文章目录
- 一 在rhel7系统使用Mariadb
- 一 联系和区别
- 二 需求
- 三 部署安装
- 3.1 环境准备
- 3.2 安装软件包
- 3.3 启动服务
- 3.4 设置防火墙策略
- 四 创建用户和库表
- 4.1 登录数据库
- 4.2 创建用户
- 4.3 创建数据库和表
- 五 备份和恢复
- 5.1 备份 com 数据库
- 5.2 模拟误删除操作
- 5.3 恢复表
- 二 使用grep忽略大小写匹配
- 三 在CentOS-6.9部署apache服务
- 一 系统环境
- 二 部署服务
- 2.1 yum安装软件
- 2.2 修改主配置文件
- 2.3 修改防火墙规则
- 2.4 访问测试
- 三 主配置文件参数
- 3.1 主配置文件常规语句
- 3.2 主配置文件日志控制语句
- 3.3 主配置文件的性能控制语句
- 四 在CentOS-6.9配置apache服务(1)---基于个人主页的身份验证
- 一 系统环境
- 二 用户身份验证
- 2.1 编写主配置文件
- 2.2 编写用户身份验证的配置文件
- 2.3 创建用户密码文件
- 2.4 创建测试页面
- 2.5 重启服务和测试
- 三 基于个人主页的身份验证
- 3.1 修改主配置文件
- 3.2 创建测试用户
- 3.3 创建测试的个人主页
- 3.4 设置防火墙和selinux
- 3.5 测试
- 五 在CentOS-6.9配置apache服务(2)---虚拟目录配置
- 一 需求
- 二 系统环境
- 三 基于Alias普通别名
- 3.1 配置个人主页
- 3.2 编写虚拟目录配置文件
- 3.3 测试
- 四 基于ScriptAlias脚本别名
- 4.1 编写主配置文件
- 4.2 创建测试主页
- 4.3 测试
一 在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 1月 31 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脚本别名配置成功。