Linux服务
服务概述
服务定义
-
给用户提供某些资源,响应用户的请求
-
服务的特点
- daemon守护进程,后台、持续不间断运行
-
查看当前系统有哪些服务
- systemctl list-unit-files
-
访问
- IP+端口,组成一个套接字,IP区分服务器,端口区分进程
服务架构
-
服务器端
- 提供服务的-Server
-
客户端
- 使用服务-Client
-
架构
- C/S client/server
- B/S browser/server (B-特殊的客户端)
学习服务的要求
-
1)服务的名字、全称
-
2)服务的功能
-
3)可有其他同类产品
-
4)端口和使用协议
- /etc/services
-
5)配置文件和日志文件
-
- el6,el7中如何启动和关闭
配置服务的准备工作
- 1.已关闭firewalld
- 2.已关闭selinux
- 3.配置好yum源
- 4.配置好固定的ip地址
- 5.配置好主机名
服务管理
EL7
-
系统内核配置文件
- /etc/sysctl.conf
-
启动
- systemctl start name
-
停止
- systemctl stop name
-
重启
- systemctl restart name
-
运行状态
- systemctl status name
- systemctl is-active/is-failed name
-
重新加载
- systemctl reload name
-
开机状态
-
启动
- systemctl enable name
-
禁用
- systemctl disable name
-
查看某个
- systemctl is-enabled name
-
查看全部
- systemctl list-unit-files
-
EL6
-
启动
- /etc/init.d/服务名称 start
-
停止
- /etc/init.d/服务名称 stop
-
重启
- /etc/init.d/服务名称 restart
-
状态
- /etc/init.d/服务名称 status
-
重载
- /etc/init.d/服务名称 reload
-
开机状态
-
启动
- chkconfig 服务名称 on
-
禁用
- chkconfig 服务名称 off
-
查看全部
- chkconfig
-
6&7通用方法
- service 服务名称 {start|stop|restart|reload…}
时间服务
协议端口
- tcp/123
- udp/123
ntp
-
介绍
-
ntp
- Network Time Protocol 网络时间协议
-
配置文件
- vim /etc/ntp.conf
-
-
服务器配置
-
yum -y install ntp
-
vim /etc/ntp.conf
- 原配置文件全部删除
- restrict default nomodify #不允许客户端登录,也不允许客户端修改
- server 127.127.1.0 #使用本地的bios时间,自己跟自己同步
- fudge 127.127.1.0 stratum 10 #定义级别,范围0-16,越小越精准
-
systemctl restart ntpd ; systemctl enable ntpd
-
-
客户端配置
-
yum -y install ntpdate
-
启动服务
- systemctl start ntpdate;systemctl enable ntpdate
-
手动同步
- ntpdate 10.3.147.131(服务器IP)
- ntpdate ntp1.aliyun.com
-
自动同步
- 设置计划任务
-
chrony
-
介绍
-
软件名
- chrony #服务器和客户端都安装
-
服务名
- chronyd
-
配置文件
- /etc/chrony.conf
-
-
服务器配置
-
yum install chrony -y
-
vim /etc/chrony.conf
- allow 192.168.132.0/24 #允许哪些客户端同步时间
- local stratum #即使没有成功从网络同步时间也对外提供服务
-
systemctl start chronyd;systemctl enable chronyd
-
chronyc sources #查看服务器资源状态
-
-
客户端配置
-
方法一
-
yum install chrony -y
-
vim /etc/chrony.conf
- server 192.168.116.11 iburst #配置服务器端IP
-
systemctl start chronyd;systemctl enable chronyd
-
-
方法二(推荐)
- 使用ntpdata
-
ssh服务
介绍
-
ssh
- Secure SHell 安全shell连接
-
服务名称
- sshd
-
服务的软件包
- openssh-server
- openssh-clients
-
功能
- 实现加密方式的远程连接,系统自带
-
客户端软件
-
linux
- openssh-clients
-
windows
- Xshell、putty、SecureCrt、MobaXterm、FinalShell…
-
协议端口
- tcp/22
配置文件
-
服务器端
- /etc/ssh/sshd_config
-
客户端
- /etc/ssh/ssh_config
-
参数
-
Port 22
- 默认端口22。可在此修改端口号,防火墙不拦截22,其他则拦截
-
PermitRootLogin yes
- 允许管理员root登录
-
PasswordAuthentication yes
-
是否采用密码认证
- 禁止,使用密钥
-
-
ClientAliveCountMax 3
- 客户端连接服务器输入密码尝试的次数
-
ListenAddress 0.0.0.0
- 监听在任何ipv4地址上(不监听某IP则不允许该IP连接)
-
MaxAuthTries 6
- 最大尝试6次
-
SyslogFacility AUTHPRIV
- 定义日志的对象
-
LogLevel INFO
- 定义日志的级别
-
LoginGraceTime 2m
- 连接2分钟不输入密码就断开
-
MaxSessions 10
- 允许最大会话10个
-
PermitEmptyPasswords no
- 密码为空不能登陆
-
UseDNS yes
- 采用dns解析,开启可能会导致连接慢(建议关闭)
-
基本使用
-
查看网络连接状况
-
ss/netstart
-
lsof -i:22
- 有返回内容表示服务处于监听状态
-
-
远程登录
-
远程登录
-
使用ip
-
ssh 192.168.1.250
-
指定端口
-
-p port
- ssh 192.168.1.250 -p 222
-
-
指定用户
- ssh user@192.168.1.250
-
-
-
使用域名
- echo “192.168.1.250 server” >> /etc/hosts
- ssh server
-
默认使用当前客户端的用户名进行登录,该用户名需在服务器端也存在
-
第一次登录询问是否保存指纹信息
-
输入远程主机的密码
-
退出登录
- exit
-
-
指纹信息
-
保存在客户端上
-
已知主机列表文件(指纹存放的文件)
- ~/.ssh/known_hosts 644
-
不启用指纹
-
vim /etc/ssh/ssh_config
- StrictHostKeyChecking no
-
-
指纹不匹配报错解决
- 删除known_hosts文件中与该ip相对应的行
-
known_hosts(不建议)
-
-
-
远程执行命令
-
ssh 10.18.44.208 reboot
- 远程重启
-
-
远程拷贝
-
scp [-r] 源 目的
- -r 拷贝目录
- -P port 指定端口
-
本地文件拷贝给远程主机
- scp /tmp/test.txt 192.168.1.250:/root/
-
远程主机文件拷贝到本地
- scp 192.168.1.250:/root/dianming.sh /tmp
-
基于密钥的连接
-
目的
- 实现不输入密码登陆远程主机(相对于用户来说)
-
实现原理
-
基于公钥和私钥的加密技术进行自动化认证
-
1.A发出请求登录到B
-
2.B检查授权列表中是否有A的公钥
-
3.B生成一个随机字符串,用A的公钥加密
-
4.A用自己的私钥解密出字符串,将解密结果发给B
- 私钥有泄露风险,别人拿到也可使用从而免密登录A控制的服务器,所以在生成时可设置密码
-
5.B对解密字符串进行核对,如果正确,授权给A登录
-
-
客户端配置
-
1.生成密钥
-
ssh-keygen
- 选择保存位置
- 输入私钥密码,默认为空
- 确认密码
-
密钥位置
-
/root/.ssh/
- id_rsa 私钥 600
- id_rsa.pub 公钥 644
-
-
-
2.发送公钥给服务器
- ssh-copy-id 192.168.1.250
-
-
服务器保存公钥位置
- ~/.ssh/authorized_keys #配置文件中定义 600
- ~/.ssh目录权限700
-
免密失败解决
- 检查权限:authorized_keys-600,.ssh-700,属主属组为登录用户
- 清空authorized_keys文件内容
- 重新制作密钥重新发送
访问控制
-
白名单
-
/etc/hosts.allow
- 需要先在黑名单禁止所有
- sshd:192.168.1.2,192.168.1.3
-
-
黑名单
-
/etc/hosts.deny
-
sshd:*
- 禁止所有
-
sshd:192.168.1.251
-
sshd:192.168.1.0/24
-
-
-
规则
- 先看allow,如果有,直接放行
- 如果没有,再看deny,如果有,则拒绝; 如果没有,则放行
- 凡是使用到wrap库的都可以用这两个文件做访问控制
-
实现的功能模块
-
ldd
which sshd
| grep wrap- libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f598bc08000)
- 库文件,.so
-
ftp服务
介绍
-
ftp
- FTP(File Transfer Protocol)文件传输协议
-
作用
- 提供不同主机之间文件共享服务,windows和 linux都可以下载
-
软件
-
Linux服务器
-
vsftpd
- Very Secure FTP Daemon
-
-
客户端
-
Linux
- ftp、lftp
-
Windows
- FileZilla
- 文件资源管理器
-
-
协议端口
-
协议
- tcp
-
连接端口
- 21
-
数据端口
-
主动
- 20
-
被动
- 1025-65535随机
-
工作模式
-
主动模式
- 客户端与服务器21端口建立管理连接,发送PORT命令
- 服务器20端口与客户端建立数据连接,将数据发送给客户端
-
被动模式(默认)
-
客户端与服务器21端口建立管理连接,发送PASV命令,服务器随即开启一个随机数据端口并告知客户端
-
客户端与服务器开启的数据端口建立数据连接,获取数据
-
临时关闭
- 客户端建立连接后执行,再次重新连接恢复默认
- set ftp:passive-mode off
-
用户类型
-
本地用户
- 服务器上存在的用户
-
匿名用户
- 不用输入用户名密码即可上传下载,匿名用户上传文件将映射为ftp用户
-
虚拟用户
服务器配置
-
安装启动
- yum -y install vsftpd
- systemctl start vsftpd;systemctl enable vsftpd
-
配置文件
-
/etc/vsftpd/vsftpd.conf
-
匿名用户
- anonymous_enable=YES #允许匿名用户访问ftp
- #anon_upload_enable=YES #允许匿名用户上传文件
- #anon_mkdir_write_enable=YES #允许匿名用户创建目录
- #anon_other_write_enable=YES #允许匿名用户删除文件
- #anon_root=/var/ftp #设置匿名用户的家目录,默认/var/ftp
- #anon_umask=077 #匿名用户上传文件的umask
- #chown_uploads=YES
- #chown_username=用户名
-
本地用户
- local_enable=YES #允许本地用户访问ftp
- write_enable=YES #允许本地用户上传文件
- local_umask=022 #本地用户上传文件的umask
- #local_root=/var/ftp //设置本地用户的家目录,默认为服务器上的用户家目录
- #chroot_local_user=YES #开启禁锢功能
- #allow_writeable_chroot=YES #改变根允许写操作
-
用户限制
-
pam_service_name=vsftpd #pam认证的名字
- /etc/vsftpd/ftpusers 黑名单
-
userlist_enable=YES #启用user_list列表文件
-
#userlist_deny=YES #禁止清单内用户登录(默认)
#userlist_deny=NO #不禁止
-
-
日志设置
- xferlog_enable=YES #启用日志
- #xferlog_file=/var/log/xferlog #日志文件的位置
- xferlog_std_format=YES #启动,日志将写成xferlog标准格式
-
端口限制
- #pasv_min_port=8001 #被动模式数据最小端口
- #pasv_max_port=8010 #被动模式数据最大端口
- connect_from_port_20=YES #主动模式数据端口
-
资源限制
- #anon_max_rate=0 #限制匿名用户最大传输速率,单位是字节 默认无限制
- #local_max_rate=0 #限制本地用户最大传输速率,单位是字节 默认无限制
- #max_clients=2000 #限制并发客户端连接数
- #max_per_ip=50 #限制同一个ip地址的并发连接数
-
-
匿名用户设置
-
上传
-
以"ftp"用户的身份进行写操作
-
配置文件打开写开关
- anon_upload_enable:普通文件的上传
- anon_mkdir_write_enable:目录的上传
- anon_mkdir_write_enable:删除文件
-
对上传目录有写权限
- 创建一个上传目录,给ftp用户写权限
- 使用默认目录/var/ftp/pub,给ftp用户写权限
- 家目录不可修改权限,改了无法使用
-
-
下载
- 以"other"的身份进行读操作
- 其他人对文件有读权限,默认下载到客户端登录的位置
-
-
客户端访问控制
-
/etc/hosts.allow
- vsftpd:192.168.116.10
- 服务的进程名:主机名/ip地址/network/域名
-
/etc/hosts.deny
-
-
本地用户个性化设置
-
在服务器创建用户并配置密码
- useradd tom
-
修改配置文件
- vim /etc/vsftpd/vsftpd.conf
- user_config_dir=/etc/vsftpd/user_conf #设置用户个性化目录
-
对指定用户进行配置
-
在个性化设置目录内创建与用户同名的文件,并将配置写入该文件中
-
mkdir /etc/vsftpd/user_conf
-
vim /etc/vsftpd/user_conf/tom
- 做个性化设置
-
-
重启服务
-
客户端使用
-
软件安装
- yum -y install lftp
-
连接服务器
-
匿名用户
- lftp 192.168.1.252
-
本地用户
- lftp -u user 192.168.1.252
-
linux客户端默认使用被动,windows客户端默认使用主动
-
连接后可通过set ftp:passive-mode off 切换为主动模式(临时,断开重连仍为被动)
-
-
操作命令
-
?、ls、cd、cat、more、mkdir
-
!
- 执行本地命令(相当于在shell命令行中执行)
-
下载
-
普通文件
-
get 下载单个文件
- -o 指定路径
-
mget 批量下载
-
-
目录
- mirror
-
-
上传
-
普通文件
-
put 上传单个
- -o 指定路径
-
mput 批量上传
-
-
目录
- mirror -R
-
-
删除
- rm [-r] [-f] #删除文件或目录
- rmdir [-f] #删除目录
- mrm #批量删除文件
-
退出
- exit
-
-
常见问题
-
匿名用户不能切换到其他用户,普通用户可以切换,可在配置文件中开启禁锢
-
下载失败
- 下载目录中是否已存在该文件
- 该文件对other及文件属主/属组是否有r权限
-
上传失败
- 配置文件中是否开启写权限
- 上传目录对ftp用户是否有wx权限
- 上传目录中该文件是否已存在
-
dns服务
服务介绍
-
dns
- DNS - Domain Name Server
-
服务名称
- named
-
功能
- 将域名解析为IP地址。也可以将IP地址解析为域名
-
协议端口
- tcp/53
- udp/53
域名解析
-
域名
- 域名是由一连串用点(.)分隔的字符串组成的,标识计算机在网络中的电子方位的
- 例: baidu.com 163.com sina.com.cn
-
全域名
-
FQDN(Fully Qualified Domain Name) 全域名,同时带有主机名和域名的名称
- host.edu.cn.
-
-
DNS系统
-
Domain Name System
-
体系结构
-
根域
-
顶级域
-
二级域
- 子域
- example.aliyun.com.
-
aliyun.com.
-
-
.com.
-
-
.
-
-
根域名服务器
- 整个互联网域名解析系统中级别最高的域名服务器
- 全球共13台,名称分别为“A”,“B”, …, “M”
- 主根域服务器A:在美国
- 12台辅根域服务器:B-M
-
DNS服务器分类
- 主DNS服务器
- 从DNS服务器
- 转发DNS服务器
-
DNS查询方式
-
递归查询
- A向B发出查询请求,B会给A返回一个明确的结果
- 一般客户机和本地DNS服务器之间的查询属于递归查询
-
迭代查询
- A向B发出查询请求,B没有,但向A返回C,A再向C发出请求,直到获得结果
-
-
-
解析过程
-
- 搜索浏览器的DNS缓存,如果没有,发起DNS请求
-
- 检查自己本地的hosts文件
-
linux
- /etc/hosts
-
windows
- C:\WINDOWS\system32\drivers\etc\hosts
-
- 向本地DNS服务器发出查询请求
- 自身缓存中查询(非权威)
- 解析记录中查询(权威)
-
- 本地DNS向根DNS发起迭代查询
- 1)向根DNS发起请求,根DNS返回对应顶级DNS的地址给本地DNS
- 2)向该顶级DNS发起请求,获取下一级DNS地址,本地DNS再向其发起请求……最终拿到权限DNS的地址
- 3)向权限DNS发起请求,得到该域名对应的IP地址
-
5.本地DNS将得到的IP地址返回给操作系统,同时自己将该IP地址缓存起来
-
- 客户端得到域名对应的IP地址,并将IP地址缓存
-
-
DNS资源记录
-
SOA
- 标记权威记录的开始
-
NS
-
指定DNS服务器域名
- 完整域名,后面加上根域
- dns.qf.com.
-
-
A
- IPV4正向解析记录
-
AAAA
- IPV6正向解析记录
-
CNAME
- 别名
-
PTR
- 反向解析记录
-
MX
- 邮件服务器主机记录
-
服务部署
-
服务器
-
软件安装
- yum -y install bind
-
主配置文件
-
/etc/named.conf
-
listen-on port 53 { 127.0.0.1; };
- 监听套接字
-
allow-query { localhost; };
- 允许哪些客户端查询
-
directory “/var/named”;
- 存放区域配置文件的目录
-
recursion yes;
- 是否启用递归查询
-
域设置
- zone “qf.com” IN { #自定义域设置
type master; #域类型master
file “qf.com.zone”; #域文件名称
};
- zone “qf.com” IN { #自定义域设置
-
-
域配置文件
-
/var/named/ #存放域名解析文件
-
cp -p named.empty qf.com.zone #创建域文件
- -p 保留源文件或目录的所有属性
-
解析配置
-
NS dns.qf.com.
-
-
-
dns A 192.168.10.11
www A 192.168.10.100
bbs A 192.168.10.101
- 连续域名解析
- $GENERATE 范围 域名 记录类型 IP地址
- NS dns.qf.com.
G
E
N
E
R
A
T
E
100
−
200
s
t
u
GENERATE 100-200 stu
GENERATE100−200stu A 1.1.1.$
#stu100-stu200分别对应1.1.1.100-1.1.1.200
- 泛域名解析
- 使用通配符实现所有的主机/子域均指向同一IP地址
- NS dns.qf.com.
A 1.1.1.11 #不输主机名时解析到1.1.1.11(放在第一位)
-
A 1.1.1.12 #qf.com下任意主机或子域解析到1.1.1.12
-
检查语法
-
named-checkconf
- 检查配置文件
-
named-checkzone qf.com /var/named/qf.com.zone
- 检查域文件
-
-
启动服务
- systemctl start named;systemctl enable named
-
-
客户端
-
安装工具
- yum -y install bind-utils
-
修改DNS服务器配置
- echo “nameserver 1.1.1.31” > /etc/resolv.conf
-
删除本地解析
- vim /etc/hosts
-
查询域名解析
-
host www.qf.com
-
nslookup www.qf.com
-
yum -y install bind-utils
-
nslookup www.qf.com 1.1.1.31
- 后面接DNS地址可指定DNS服务器
-
set type=a 设置查询域名A记录
-
set type=mx 设置查询域名邮件交换记录
-
-
dig www.qf.com
- +trace 显示解析过程
-
-
dns负载均衡
-
将负载分摊到多个服务器上
-
配置
- 为同一个主机名配置多个IP地址
-
优点
- 简单而有效,无须自己开发或维护负载均衡设备,成本低
-
缺点
- 不能区分服务器的差异,也不能反映服务器的当前运行状态
- 控制权不在使用者而是域名商,无法根据业务特点针对性做一些定制化功能,扩展性差
- 修改IP之后,由于存在缓存部分用户还会继续访问修改之前的地址导致访问失败
智能地址解析
-
CDN技术
- 通过就近访问来加速用户的访问速度,提高客户端体验
-
DNS视图实验
-
规划
- dns服务器:1.1.1.31,域名:www.qf.com
- north_user:1.1.1.41,解析成1.1.1.1
- south_user:1.1.1.42,解析成2.2.2.2
- other:1.1.1.11,解析成3.3.3.3
-
服务器
-
修改主配置文件
-
标记客户端
- acl “north_user” { 1.1.1.41; };
acl “south_user” { 1.1.1.42; };
- acl “north_user” { 1.1.1.41; };
-
north客户端配置
- view “north” {
match-clients { north_user; };
zone “.” IN {
type hint;
file “named.ca”;
};
zone “qf.com” IN {
type master;
file “n.qf.com.zone”;
};
};
- view “north” {
-
south客户端配置
- view “south” {
match-clients { north_user; };
zone “.” IN {
type hint;
file “named.ca”;
};
zone “qf.com” IN {
type master;
file “s.qf.com.zone”;
};
};
- view “south” {
-
其他客户端配置
- view “north” {
match-clients { north_user; };
zone “.” IN {
type hint;
file “named.ca”;
};
zone “qf.com” IN {
type master;
file “o.qf.com.zone”;
};
};
- view “north” {
-
注意
- view需要包含所有的zone文件,默认配置中未使用的注释掉
-
-
编辑域文件
-
north域文件
- cp -p named.empty n.qf.com.zone
-
NS dns
-
-
-
dns A 1.1.1.31
www A 1.1.1.1
- south域文件
- cp -p n.qf.com.zone s.qf.com.zone
- NS dns
dns A 1.1.1.31
www A 2.2.2.2
- other域文件
- cp -p n.qf.com.zone o.qf.com.zone
- NS dns
dns A 1.1.1.31
www A 3.3.3.3
- 重启服务
- systemctl restart named
- 客户端测试
- 1.1.1.41
- nslookup www.qf.com 1.1.1.31
- 1.1.1.42
- nslookup www.qf.com 1.1.1.31
- 1.1.1.11
- nslookup www.qf.com 1.1.1.31
dns主从
-
主从同步过程
- 1)Master DNS每次修改完成并重启服务后,将传送notify给所有的slave DNS服务器;
- 2)Slave DNS将查询master服务器的SOA记录,master DNS服务器收到请求后将SOA记录发送给Slave DNS服务器;
- 3)Slave DNS收到后对比查询结果中的serial值,如果serial值大于本机的话,slave DNS将发送zone transfer请求;
- 4)Master响应zone transfer请求并向其传送结果,直到slave更新完成。
-
域文件
-
配置
- $TTL 3H
@ IN SOA @ root.qf.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
- $TTL 3H
-
注释
-
$TTL
- 该域名(qf.com)各种记录在其他DNS服务器上的缓存时间
-
SOA
- Start Of Authority, 第一个资源记录,一个zone文件中必须只有一个SOA资源记录。SOA后面是DNS服务器和管理员邮箱
-
Serial
- 代表这个zone文件的版本号,每当zone文件内容有变动,Master DNS管理者就应该增加这个号码,以便Slave同步。一般使用日期
-
Refresh
- Slave server每隔这段时间,就会主动向Master server复核Serial是否有变,若有则进行更新
-
Retry
- 如Refresh过程不能完成,重试的时间间隔
-
Expire
- 当slave server无法和master取得连络超过此时间,那么slave会拒绝提供服务
-
Minimum
- 对否定回答(NXDOMAIN即访问的记录在权威DNS上不存在)的缓存时间
-
-
-
主从同步实验
-
规划
- 主DNS:1.1.1.31
- 从DNS:1.1.1.41
-
主DNS配置
-
主配置文件
- options {
…
listen-on port 53 { any; };
allow-query { any; };
notify yes;
also-notify { 1.1.1.41; };
allow-transfer { 1.1.1.41; };
…
};
…
zone “qf.com” IN {
type master;
file “qf.com.zone”;
};
- options {
-
zone文件
- 每次更新zone文件时修改serial版本号,需比上一次的值大
-
重启服务
-
-
从DNS配置
-
修改主配置文件
- zone “qf.com” IN {
type slave;
masters { 1.1.1.31; };
};
- zone “qf.com” IN {
-
重启服务
-
-
测试
-
1)正常解析
- nslookup www.qf.com 1.1.1.31
- nslookup www.qf.com 1.1.1.41
-
2)修改主DNS中www的解析地址,版本号不动
- nslookup www.qf.com 1.1.1.31
- nslookup www.qf.com 1.1.1.41
-
3)修改主DNS中www的解析地址,更新版本号
- nslookup www.qf.com 1.1.1.31
- nslookup www.qf.com 1.1.1.41
-
-
apache服务
介绍
-
apache
-
服务名称
- httpd
-
架构
- C/S B/S
-
官网
- www.apache.org httpd.apache.org
-
功能
- 目前世界占有率第二的web服务器,主要用来提供web服务
-
-
web服务器
-
也称为www(World Wide Web)服务器或http服务器,主要提供网页服务
-
常见的web服务器
-
nginx
- 开源项目
-
apache
- 开源项目
-
tomcat
- 开源项目
-
IIS
- 微软
-
weblogic
- oracle
-
webSphere
- IBM
-
-
编辑网页的语言
- html 、jsp、asp、php…
-
web服务器的工作过程
-
- 连接过程
-
- 请求过程
-
- 应答过程
-
- 关闭连接
-
-
互联网岗位
- PM项目经理 UI工程师 H5前端工程师(静态界面) 后端工程师 (java、python、php动态界面) 云计算运维
-
动静结合的网站
-
Apache/Nginx+数据库+中间件/web容器(LAMP架构+LNMP机构)
-
web中间件(web容器)
- 用来解析动态界面
- tomcat、weblogic;php;uwsgi
- 对应后端开发语言java、php、python
-
-
-
url
-
协议+IP/域名+[端口]+路径+[参数]
-
https://httpd.apache.org/download.cgi
-
Linux文本浏览器curl
- curl 192.168.1.10
- -I 显示响应状态码
-
协议端口
-
传输层
- TCP/80
-
应用层
-
HTTP/80
- 超文本传输协议,服务器使用http和客户机浏览器进行信息交流
-
HTTPS/443
-
服务部署
-
安装启动
- yum -y install httpd
- systemctl start httpd;systemctl enable httpd
- netstat -tlnp
-
相关文件
-
/etc/httpd
- 主目录
-
/etc/httpd/conf
- 主配置文件目录
-
/etc/httpd/conf.d
- 子配置文件目录
-
/etc/httpd/conf/httpd.conf
- 主配置文件
-
/etc/httpd/logs
- 日志目录,软链接
-
/etc/httpd/modules
- 模块目录
-
/usr/sbin/httpd
- 主进程
-
/var/www/html
-
主文档目录,默认网页发布目录
-
浏览器访问中的根目录
-
索引文件(访问内容)
- index.html
-
-
/var/log/httpd
- 日志目录
-
-
准备网页
- echo “hello apache” > /var/www/html/index.html
-
客户端访问
- 用浏览器访问:http://192.168.10.11
配置文件
-
目录
-
ServerRoot “/etc/httpd”
- 服务的根路径,此文件中的相对路径都是相对它而言的
-
DocumentRoot “/var/www/html”
- 文档目录,对应访问URL中的 / 目录
-
DirectoryIndex index.html
- 网站索引网页文件名
-
-
配置
-
Include conf.modules.d/*.conf
- 包含辅助配置文件目录下的所有以.conf 结尾的文件
-
IncludeOptional conf.d/*.conf
- 子配置文件
-
-
属性
-
Listen 80
- 监听套接字,还可写成 IP:PORT 形式
-
ServerName www.qf.com
- 服务器域名
-
User apache
- 运行web服务的用户,工作进程的权限取决于此用户
-
Group apache
-
-
标签
-
目录标签
-
对整个目录中的东西进行设置(权限等)
-
#对系统根目录设置
#目录标签闭合 -
设置
-
AllowOverride none
- 认证相关
-
Require all denied
- 全部不允许访问
-
Require all granted
- 全部允许访问
-
Options #属性
-
Indexes
- 索引目录,没有主页时,允许索引目录
-
FollowSymLinks
- 支持跟随软连接
-
-
-
-
文件标签
- <Files “.ht*”> #以所有.ht开头的文件
- <Files “.ht*”> #以所有.ht开头的文件
-
模块标签
- 一个模块对应一种功能
- #日志配置模块
-
-
日志
-
ErrorLog “logs/error_log”
- 错误日志
-
LogLevel warn
- 日志级别为warm
-
LogFormat “%h %l %u %t “%r” %>s %b” common
- 定义日志格式,格式+格式名称
-
CustomLog “logs/access_log” combined
- 访问日志文件及格式
-
-
别名
-
Alias /webpath /full/filesystem/path
- 别名
-
ScriptAlias /cgi-bin/ “/var/www/cgi-bin/”
- 脚本路径的别名
-
-
内容
-
TypesConfig /etc/mime.types
- 支持的文件类型
-
AddDefaultCharset UTF-8
- 默认字符集
-
日志格式
-
默认格式
- LogFormat “%h %l %u %t “%r” %>s %b “%{Referer}i” “%{User-Agent}i”” combined
-
格式
-
%h
- 客户端地址
- 若用户使用代理服务器会显示代理IP,在%h后面加上%{X-FORWARDED-FOR}i 即显示真实ip
-
%l
- 远程登陆的登陆名,通常-
-
%u
- 认证时的远程登陆名,通常-
-
%t
-
接收请求时的时间,为标准的英文格式+时区
- [19/Jul/2017:17:22:13 +0800]
-
-
%r
-
请求报文的起始行
- 方法 URL 协议版本
-
-
%>s
-
响应状态码
-
200
- 正常访问
-
403
- Forbidden禁止
-
404
- Not Found不存在
-
-
%b
- 字节数
-
%{Referer}i
- 从什么地方过来
-
%{User-Agent}i
- 客户端浏览器
-
别名
-
作用
- 将web访问路径映射到文件系统路径,可用于访问非文档目录下的文件
-
语法
- Alias /URL路径 /文件系统路径
-
配置
-
配置别名
Alias /abc /web
-
服务权限
- <Directory “/web”>
Require all granted
- <Directory “/web”>
-
ugo权限
- /web目录对apache有r权限
-
访问控制
-
对目录
- <Directory “/var/www/html”>
order allow,deny #后面的优先级高于前面的
allow from all
deny from 192.168.1.249
- <Directory “/var/www/html”>
-
对文件
- <Files “.ht”>
Require all denied
- <Files “.ht”>
-
对路径
- <Location “/abc”>
deny from all
- <Location “/abc”>
-
用户认证
-
创建用户
-
htpasswd -c /var/www/html/.htpasswd http1
- 文件不存在时加 -c
-
htpasswd /var/www/html/.htpasswd http2
-
-
修改配置文件
- <Directory “/var/www/html”>
AllowOverride AuthConfig
AuthType Basic #验证类型为Basic
AuthName “name&passwd” #验证的名字
Authuserfile “/var/www/html/.htpasswd” # 验证文件
Require valid-user #合法用户可以访问
- <Directory “/var/www/html”>
-
httpd命令
-
httpd -t
- 检查配置文件语法
-
httpd -V
- 查看Apache的工作模式,Server MPM
虚拟主机
-
简介
- 所谓虚拟主机,即看起来像一台主机,但实际上并不是一台真正独立的主机
- 从客户端的角度来看,每个虚拟主机都是一个独立的主机
- 从服务器的角度来看,一个主机可以包含多个虚拟主机
-
配置文件
- cp /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf /etc/httpd/conf.d/
-
类型
-
基于域名
-
通过域名来标识,使用不同的域名可以访问到不同的网站
-
配置
-
主机1
- <VirtualHost *:80>
DocumentRoot “/webs/web1”
ServerName www.web1.com
ErrorLog “/var/log/web1/error_log”
CustomLog “/var/log/web1/access_log” common
- <VirtualHost *:80>
-
主机2
- 修改域名及目录
-
服务权限
- <Directory “/webs”>
Require all granted
- <Directory “/webs”>
-
创建目录、网页文件
- /webs/web1/index.html
/var/log/web1 - /webs/web2/index.html
/var/log/web2
- /webs/web1/index.html
-
本地域名解析
- vim /etc/hosts
-
-
-
基于ip
-
通过 IP 来标识,使用不同的 IP 可以访问到不同的网站
-
配置
- 服务器添加IP
- <VirtualHost 1.1.1.11:80>
…
-
-
<VirtualHost 1.1.1.21:80>
…
- 基于端口
- 通过端口来标识,使用不同的端口可以访问到不同的网站
- 配置
- Listen 90
Listen 91
<VirtualHost *:90>
…
<VirtualHost *:91>
…
-
使用场景
- 对于访问量不是特别大,而且主机资源充足的服务器,可以划分虚拟主机,使其资源得到充分的利用
工作模式
-
查看
- httpd -V
-
类型
-
Prefork 进程模式
-
介绍
- 每个工作进程中只有一个线程,在一个时间点内,只能处理一个请求
-
特点
- 成熟稳定,兼容所有新老模块
- 一个进程相对占用更多的系统资源,消耗更多的内存
-
使用场景
- 并发量不是很高
- 对线程安全性要求较高
-
-
Worker 线程模式
-
介绍
- 每个工作进程中有多个线程,每个请求分配一个线程
- 如果一个线程异常,影响父进程内其他所有线程
-
特点
- 占据更少的内存,高并发下表现更优秀
- 稳定性较差,必须考虑线程安全的问题
-
长连接
- 为了让下一次的socket通信复用之前创建的连接从而减少开销
- 线程会一直被占据,需要一直等待到超时才会被释放
-
-
Event 事件模式
- 解决了keep-alive场景下,长期被占用的线程的资源浪费问题
- 有专门的线程用来管理这些keep-alive类型的线程,当有真实请求过来的时候,将请求传递给服务器的线程,执行完毕后,又允许它释放。这增强了在高并发场景下的请求处理
- 在遇到某些不兼容的模块时会失效,将会回退到worker模式
-
-
修改默认配置
- 将 /usr/share/doc/httpd-2.4.6/httpd-mpm.conf 文件拷贝到子配置文件目录中
-
切换
- 修改 /etc/httpd/conf.modules.d/00-mpm.conf,打开或关闭相应的模块
LAMP架构
-
架构
- Linux+Apache+Mysql/MariaDB+Perl/PHP/Python
- 是一组常用来搭建动态网站或者服务器的开源软件
-
LAMP部署
- yum -y install httpd* mariadb* php*(httpd mariadb-server mariadb php php-fpm php-mysql php-gd gd php-curl)
-
博客系统实验
-
目标
- 基于LAMP架构部署wordpress (博客系统)
-
安装启动
- yum -y install httpd mariadb mariadb-server php php-fpm php-mysql php-gd gd
- systemctl start httpd mariadb php-fpm
-
服务配置
-
apache
- vim /etc/httpd/conf.d/wordpress.conf
- mkdir /wordpress
- 设置本地域名解析
-
mariadb
- mysqladmin -u root password ‘123’#数据库设置密码
- mysql -u root -p123 #登录数据库
- create database wordpress; #在数据库中创建库名叫wordpress
- exit #退出数据库
-
-
服务上线
- wget http://www.xingdiancloud.cn:92/index.php/s/WZQJHBSPnMcSyMs/download/wordpress-4.9.1-zh_CN.tar.gz
- tar xf wordpress-4.9.1-zh_CN.tar.gz
- cp -r wordpress/* /wordpress/
- chmod 777 /wordpress/*
-
浏览器访问
-
-
打造云网盘
-
安装LAMP架构
-
指定php版本
-
下载7系列php仓库
- yum install http://rpms.remirepo.net/enterprise/remirelease-7.rpm
-
安装yum工具
- yum install yum-utils
-
启用指定版本仓库
- yum-config-manager --enable remi-php72
-
-
yum install httpd php php-gd php-json php-mysql phpcurl php-mbstring php-intl php-mcrypt php-imagick php-xml php-zip mariadb-server mariadb
-
-
启动服务
- systemctl start httpd
- systemctl start mariadb
-
服务部署
-
mysql
- MariaDB [(none)]> CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE
- utf8mb4_general_ci;
- MariaDB [(none)]> GRANT ALL ON nextcloud.* TO ‘nextclouduser’@‘localhost’
- IDENTIFIED BY ‘123456’;
- MariaDB [(none)]> FLUSH PRIVILEGES;
- MariaDB [(none)]> EXIT;
-
apache
- cd /etc/httpd/conf/
- 上传配置文件
-
-
产品上线
-
下载项目包
- wget https://download.nextcloud.com/server/releases/nextcloud-15.0.0.zip
-
解压项目包
- unzip nextcloud-15.0.0.zip
-
项目拷贝到网站发布目录下
- mv nextcloud /var/www/
-
设置权限
- chown apache.apache /var/www/nextcloud/ -R
-
重新启动apache
- systemctl restart httpd
-
-
浏览器访问
-
安装使用
-
nfs服务
介绍
-
nfs
- Network File System 网络文件系统
-
介绍
- 主要用于unix/linux和linux之间的文件共享,基于TCP/IP传输,授权的客户端可直接挂载使用
- 网络文件系统是一种将远程主机上的目录通过网络挂载到客户端本地系统的一种机制
- NFS服务的实现依赖于RPC (Remote Process Call,远端过程调用)机制,以完成远程到本地的映射过程
-
samba
- 同类产品:samba(文件系统为cifs),主要用于windows 和 linux 之间的文件共享
-
架构
- C/S
-
服务名称
- nfs
-
服务端口
-
nfs
- 2049
-
rpcbind
- 111
- 用于RPC支持
-
部署
-
服务器
-
安装启动
- yum -y install nfs-utils
- systemctl start nfs;systemctl enable nfs
-
创建共享目录
- mkdir /share
-
共享配置
-
示例
- echo “/share 192.168.10.12(rw)” >> /etc/exports
-
配置文件
-
/etc/exports
- 修改后reload,不要restart(会造成卡顿)
- exportfs -rv #重新加载
-
-
配置格式
- 共享路径 共享对象(共享属性)
-
共享对象
-
允许挂载的对象
-
写法
- 192.168.10.251 #主机IP
- 192.168.1.0/24 #网段
- desk.qf.com #主机名(必须要解析)
- *.qf.com #域 qf.com 中的所有主机
-
- #表示所有
-
-
共享属性
-
文件系统的属性,用“,”连接
-
常见
-
ro
- 只读
-
rw
- 可读写
-
no_root_squash
- 客户端root用户不映射为匿名用户
-
all_squash
- 客户端所有用户都映射为匿名用户 (nfsnobody)
-
-
-
-
-
客户端
-
安装驱动
- yum -y install nfs-utils
-
查看共享资源
- showmount -e 192.168.10.11
-
挂载
- mount 192.168.10.11:/share /mnt/
-
使用
-
默认情况下root用户会被映射为服务器的nfsnobody用户进行访问,普通用户仍以本用户访问
-
读
- ls /mnt
-
写
- 服务器共享文件系统有写权限
- 服务器共享目录有ugo写权限
-
-
jumpserver
堡垒机软件
部署
-
服务器最低配置2核4G
-
上传脚本文件到服务器
-
执行脚本
- bash docker-install.sh(报错重新执行)
- bash install.sh(报错删除/opt/下所有jumpserver相关重新执行)
运行
-
cd /opt/jumpserver-installer-v2.19.2
-
./jmsctl.sh start 启动
- stop停止
- restart重启
- upgrade升级
使用
- web输入服务器IP进入,,默认用户名密码admin
- 用户管理、资产管理、权限管理、会话管理、作业中心