linux系统管理之交互式企业站点(连载)

1.1Web服务器介绍nginx

1.2Nginx基本使用

获取Nginx
Nginx的官方主页: http://nginx.org
关闭防火墙关闭selinux
[root@soso666 ~]# systemctl stop firewalld  #关闭防火墙
[root@soso666 ~]# systemctl disable firewalld #开机关闭防火墙
[root@soso666 ~]# setenforce 0  #临时关闭selinux
[root@soso666 ~]# getenforce   #查看selinux状态
​
Nginx安装:
Yum方式:
[root@soso666 ~]# cd /etc/yum.repos.d/
[root@soso666 yum.repos.d]# vi nginx.repo
[nginx]
name=nginx
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
[root@soso666 yum.repos.d]# yum clean all
[root@soso666 yum.repos.d]# yum makecache
[root@soso666 ~]# yum install -y nginx  #安装nginx
[root@soso666 ~]# systemctl start nginx  #启动
[root@soso666 ~]# systemctl restart nginx #重启
[root@soso666 ~]# systemctl enable nginx  #开机启动
[root@soso666 ~]# systemctl stop nginx  #关闭
1.查看nginx状态
[root@soso666 ~]# ps aux | grep nginx 
root       3927  0.0  0.0  46384   968 ?        Ss   18:46   0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx      3928  0.0  0.1  46792  1932 ?        S    18:46   0:00 nginx: worker process
root       3932  0.0  0.0 112660   968 pts/1    R+   18:47   0:00 grep --color=auto nginx
2.查看nginx端口
[root@soso666 ~]# netstat -lntp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3927/nginx: master
#注意:nginx默认端口为80
3.测试主页是否可以访问:
[root@soso666 ~]# curl -I http://127.0.0.1
HTTP/1.1 200 OK
Server: nginx/1.16.1
Date: Sat, 16 Nov 2019 10:49:48 GMT
Content-Type: text/html
Content-Length: 635
Last-Modified: Fri, 11 Oct 2019 06:45:33 GMT
Connection: keep-alive
ETag: "5da0250d-27b"
Accept-Ranges: bytes

2.1构建NFS远程共享存储

存储分类:
文件系统级别共享(是NAS存储(网络附加存储通过网线)) ---------  已经做好了格式化,可以直接用。 速度慢
nfs,samba
​
(SAN存储区域网)块级别的共享---------是指设备  先格式化才能用。使用光线。最好的,也是最贵的。san  ipsan  ceph
​
DAS(直连式存储):直接可以链接,受限与服务器的接口。快。
=====================================================
因为NFS有很多功能,不同的功能需要使用不同的端口。因此NFS无法固定端口。而RPC会记录NFS端口的信息,这样我们就能够通过RPC实现服务端和客户端的RPC来沟通端口信息。
​
那RPC和NFS之间又是如何之间相互通讯的?
​
首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口。RPC就会记录下这些端口。并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那服务端的RPC就会将记录的NFS端口信息告知客户端。
NFS 重要指数4星
项目名称: 为集群中的 Web Server 配置后端存储
​
NFS:Network File System 网络文件系统,Unix系统之间共享文件的一种协议
NFS 的客户端主要为Linux
实验环境准备两台机器
支持多节点同时挂载以及并发写入
服务端:nfs-server 192.168.246.160
客户端:web1 192.168.246.161
centos7(服务端和客户端都关闭防火墙和selinux内核防火墙)
​
#systemctl stop firewalld
​
#systemctl disable firewalld    
​
#setenforce 0
NFS-server操作
[root@nfs-server ~]# yum -y install rpcbind  #安装rpc协议的包
[root@nfs-server ~]# yum -y install nfs-utils #安装nfs服务,提供文件系统
启动服务
[root@nfs-server ~]# systemctl start nfs
[root@nfs-server ~]# systemctl start rpcbind
[root@nfs-server ~]# mkdir /nfs-dir   #创建存储目录
[root@nfs-server ~]# echo "nfs-test" >> /nfs-dir/index.html  #制作test文件
[root@nfs-server ~]# vim /etc/exports   #编辑共享文件
/nfs-dir        192.168.246.0/24(rw,no_root_squash,sync)
参数注释:
no_root_squash:不压制root权限
ro:只读
rw:读写
*:表示所有。
sync:所有数据在请求时写入共享

[root@nfs-server ~]# systemctl restart nfs-server #重启服务。
[root@nfs-server ~]# systemctl enable nfs-server #制作开机启动
web1  客户端操作
[root@web1 ~]# yum -y install rpcbind
[root@web1 ~]# yum -y install nfs-utils
[root@web1 ~]# mkdir /qf #创建挂载点
[root@web1 ~]# mount -t nfs 192.168.246.160:/nfs-dir /qf  #挂载
[root@web1 ~]# df -Th
Filesystem               Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root  xfs        17G  1.1G   16G   7% /
tmpfs                    tmpfs      98M     0   98M   0% /run/user/0
192.168.246.160:/nfs-dir nfs4       17G  1.4G   16G   8% /qf
[root@web1 ~]# ls /qf
index.html
[root@web1 ~]# umount /qf  #取消挂载

3.ftp及lftp

FTP Server  重要指数4星
作用:提供文件共享服务,实现上传下载
端口:
21号,建立tcp连接  默认端口
20号:传输数据

一、FTP基础

软件包:        vsftpd
FTP端口:         控制端口 command 21/tcp 
配置文件:          /etc/vsftpd/vsftpd.conf

ftp主动模式

ftp主动模式:客户端开启一个端口N(>1023)向服务端的21端口,建立连接,同时开启一个N+1,告诉服务端,我监听的是N+1端口,服务端接到请求之后,用自己的20端口连接到客户端的N+1端口,进行传输
​
21端口建立连接
20端口传输数据

ftp被动模式

ftp被动模式:客户端同时开启两个端口(1024,1025),一个端口(1024)跟服务端的21端口建立连接,并请求,大哥,我连上了,你再开一个端口呗。服务端接到请求之后,随机会开启一个端口(1027)并告诉客户端我开启的是1027端口,客户端用另一个端口(1025)与服务端的(1027)端口进行连接,传输数据

二、vsftpd配置

FTP Server(服务端)
实验环境--准备两台机器
关闭防火墙和selinux
#systemctl stop firewalld
#systemctl disable firewalld    
#setenforce 0
=========================================
ftp-server 192.168.246.160
client 192.168.246.161
==========================================
[root@ftp-server ~]# yum install -y vsftpd
[root@ftp-server ~]# systemctl start vsftpd
FTP默认共享目录:/var/ftp
[root@ftp-server ~]# touch /var/ftp/test.txt  #创建文件到共享目录
[root@ftp-server ~]# systemctl enable vsftpd
[root@ftp-server ~]# cd /var/ftp/
[root@ftp-server ftp]# ls
pub
[root@ftp-server ftp]# chmod 777 pub/  #给上传目录设置权限
编辑配置文件
[root@ftp-server ~]# vi /etc/vsftpd/vsftpd.conf ----将下面的注释取消

[root@ftp-server ~]# systemctl restart vsftpd
FTP Clinet(客户端)
关闭防火墙和selinux
[root@client ~]# yum -y install lftp #安装客户端
get命令(下载,首先要开启下载功能)
[root@client ~]# lftp 192.168.246.160
lftp 192.168.246.160:~> ls
drwxr-xr-x    2 0        0               6 Oct 30  2018 pub
-rw-r--r--    1 0        0               0 Nov 16 12:00 test.txt
lftp 192.168.246.160:/> get test.txt   #下载
lftp 192.168.246.160:/> exit
[root@client ~]# ls  #会下载到当前目录
anaconda-ks.cfg  test.txt
​
put命令(上传命令,上传之前请在服务端进行配置,将上传功能打开)
[root@client ~]# touch upload.txt  #创建测试文件
[root@client ~]# mkdir /test/  #创建测试目录
[root@client ~]# touch /test/test1.txt #在测试目录下面创建测试文件
[root@client ~]# lftp 192.168.246.160
lftp 192.168.246.160:~> cd pub/
lftp 192.168.246.160:/pub> put /root/upload.txt  #上传文件
lftp 192.168.246.160:/pub> ls
-rw-------    1 14       50              0 Nov 16 12:14 upload.txt
lftp 192.168.246.160:/pub> mirror -R /test/  #上传目录以及目录中的子文件
Total: 1 directory, 1 file, 0 symlinks
New: 1 file, 0 symlinks
lftp 192.168.246.160:/pub> ls
drwx------    2 14       50             23 Nov 16 12:18 test
-rw-------    1 14       50              0 Nov 16 12:14 upload.txt
​
mirror 下载目录

三、基本配置,例如实现访问控制

[root@ftp-server ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES           //是否允许匿名用户登录ftp   YES为允许 NO为拒绝
local_enable=YES                //是否允许本地用户登录(比如alice)
write_enable=YES                //是否允许写(全局)
local_umask=022                 //控制本地用户上传文件的默认权限,umask表示要减掉的权限
anon_umask=022                  //控制匿名用户上传文件的默认权限 
​
download_enable=YES           //是否允许下载文件
​
anon_upload_enable=YES   //允许上传文件
anon_mkdir_write_enable=YES   //允许上传目录
​
anon_max_rate=500000           //匿名用户限速
local_max_rate=80000              //本地用户限速
max_clients=500                      //ftp最大连接数
max_per_ip=2                         //单个IP最大连接数。
​
local_root=/ftproot                 //指定本地用户访问的家目录
anon_root=/anonroot              //指定匿名用户访问的家目录
服务器关闭被动模式:
#vim  /etc/vsftpd/vsftpd.conf
pasv_enable=NO

4.DNS域名解析服务

域名解析

域名对应ip
www.baidu.com这个域名--对应IP---183.232.231.174

解析方式:

本地解析:/etc/hosts    默认先使用本地解析
[root@linux-server ~]# vim /etc/hosts  #添加如下内容
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.246.160 www.soso666.cn
表示:cn域下面有一个soso666,soso666下面有一台叫www的机器。解析速度快。机器少可以不用DNS。

使用DNS服务器解析

DNS: domain name service 
客户端设置(指定)DNS:
# vim /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.246.2
nameserver 114.114.114.114

域名空间

DNS里面顶层是:      .     表示根域 ( 一共有十三台根服务器)
顶级域名(也叫一级域名) 分类:职能:com域,gov域,.org域(非营利机构),edu域名(教育)   
国家:.cn , us ,
二级域名:平时申请的。例如:baidu、jd
三级域名:自己设置。(如果下面还有东西就是三级域名,如果没有就是主机名。)最开头的是主机名称。
完整域名:www.soso666.cn.

重点--dns解析过程

1,客户端拿到域名先访问/etc/hosts配置文件,如果有本地解析会直接使用,如果没有会去看/etc/resolv.conf :如果有答案会直接给出结果。如果没有会帮助转发。如果缓存服务器都没有给出结果那么会找到根服务器
2. 找根服务器。根服务指定一级域名,一级域名同过二级域名查询,最后返回结果
DNS有两种情况,一种是区域传输,一种域名解析
1.区域传输时,一个区中主DNS服务器从自己本身机器的数据文件中读取DNS数据信息,而辅助DNS服务器则从主DNS服务器中读取该区的DNS数据信息,传输协议是TCP
2.域名解析时,首选的通讯协议是UDP,使用UDP传输,不经过三次握手,这样的DNS服务器负载更低,响应更快,
但是当域名解析反馈长度超过512字节,将不能使用UDP协议进行解析,此时必须使用TCP

搭建DNS服务器

实验环境:

准备一台服务器作为DNS服务192.168.246.160
解析域名为:soso.qianfeng.com
测试机:192.168.246.161

1.安装软件

bind  主包----服务叫named
bind-utils   客户端测试工具(host 、dig 、nslookup)
bind-chroot   chroot环境  禁锢dns服务器的工作目录
​
[root@linux-server ~]# yum install -y bind-utils
[root@linux-server ~]# yum install -y bind-chroot
[root@linux-server ~]# systemctl start named  #启动服务
[root@linux-server ~]# netstat -lntp | grep named  #查看named的端口
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      8515/named          
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      8515/named          
tcp6       0      0 ::1:53                  :::*                    LISTEN      8515/named          
tcp6       0      0 ::1:953                 :::*                    LISTEN      8515/named 

2.工作目录:

/etc              存放主配置文件  :指定区域配置文件的位置
/var/named        区域配置文件: 主要用来做解析。 配置ip对应域名。域名对应ip

3.先编辑主配置文件:

[root@linux-server ~]# cd /etc
[root@linux-server etc]# mv /etc/named.conf /etc/named.conf.bak
[root@linux-server etc]# vim named.conf
options {
directory "/var/named";   #指定目录
};
zone "qianfeng.com" IN {  #区域
    type master;  #类型
    file "qianfeng.com.zone";
};
​
zone "soso888.com." IN {
        type master;
        file "soso888.com.zone";
};
[root@linux-server etc]# ll
-rw-r--r-- 1 root root  112 Nov 16 22:25 named.conf
[root@linux-server etc]# chown named.named named.conf
​
新建指定域名的配置文件,加权限:
[root@linux-server etc]# cd /var/named/
[root@linux-server named]# vim qianfeng.com.zone
$TTL 86400
@ IN SOA wing.qianfeng.com. root.qianfeng.com (
                                        100000000
                                        3H
                                        15M
                                        1W
                                        1D)
                                        IN NS wing.qianfeng.com.
wing                                    IN A 192.168.246.160
www.qianfeng.com.                       IN A 192.168.246.160
test.qianfeng.com.                      IN A 192.168.246.160
[root@linux-server named]# vim soso888.com.zone
$TTL 86400
@ IN SOA www.soso888.com. root.soso888.com (
                        100000000
                        3H 
                        15M
                        1W
                        1D)
                        IN NS www.soso888.com.               
www                     IN A  192.168.246.160    #第一行先定义本主机
www.soso888.com.        IN A 192.168.246.160
ftp.soso888.com.        IN CNAME www.soso888.com.
​
[root@linux-server named]# ll
-rw-r--r-- 1 root  root   443 Nov 16 22:54 qianfeng.com.zone
-rw-r--r-- 1 root  root   341 Nov 16 22:54 soso888.com.zone
[root@linux-server named]# chown named.named *.zone
参数解释:
$TTL 86400  指的是时间秒一天 缓存时间
@ 表示当前域名
SOA 起始授权记录
IN 表示记录
100000000 序列号主从DNS用到的,每次更新一次主配置文件序列号,从服务器检查自己的序列号,如果序列号不同,则会更新配置文件
3H  更新时间(多久进行一次从主从序列号检查,默认3个小时)
15M  如果更新失败,15分钟再次尝试
1W 如果一直失败,一周之后放弃
1D 缓存时间
NS记录(指定管理某个域的服务器)
A: A记录(正向解析)把域名解析为ip
重启named
[root@linux-server named]# systemctl restart named

测试

登录测试机器修改dns地址
[root@dns-test ~]# vim /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.246.160   #指定dns服务器地址