防火墙
硬件防火墙: 次要是进攻DDOS攻打, 流量攻打. 兼顾数据包过滤.
软件防火墙: 次要解决数据包的过滤.
- iptables
- firewalld
包过滤防火墙
应用层防火墙
iptables
CentOS 6 默认防火墙, 次要是包过滤防火墙, 对 ip, 端口, tcp, udp, icmp 协定管制.
配置清晰, 很简单.属于包过滤防火墙
iptables [选项]选项 -n --numeric # 数字输入。IP地址和端口会以数字的模式打印。默认状况下,程序试显 示主机名、网络名或者服务(只有可用) -v --verbose # 让 -L 显示更具体的 -L -list <规定链> # 显示所选链的所有规定。如果没有抉择链,所有链将被显示。也能够和z选项一起 应用,这时链会被主动列出和归零。准确输入受其它所给参数影响。 -t <规定表=filter> # 要操作的匹配包的表(默认是操作 filter)
规定"表"
filter 过滤
ip, 端口, tcp,udp,icmp协定
- nat 网络地址转换
- mangle
- raw
罕用, 需重点学习的: filter 和 nat不同的表有本人的默认规定, eg.
Chain INPUT (policy ACCEPT)
示意若未匹配任意规定则默认承受
规定"链"
- INPUT (C->S 方向)规定链
- OUTPUT (S->C 方向)规定链
- FORWARD 转发规定链
- PREROUTING 路由前转换(扭转指标地址)规定链
- POSTROUTING 路由后转换(管制源地址)规定链
filter 表操作
默认操作的是 filter 表, 因而个别书写时能够省略.filter [-t filter] <命令> <规定链> <规定>命令 -L -list # 查看状态 -I -insert # 增加规定(插入到最后面), 留神规定的程序是有优先级的(排在后面的优先级高) -A -append # 增加规定(追加到最初面), 留神规定的程序是有优先级的(排在后面的优先级高) -D -delete <规定序号或具体规定> # 删除某一条规定 -F -flush # 清空所有规定(默认的Policy规定不会扭转) -P -policy # 设置默认规定 自定义规定链 -N -new-chain # 创立自定义规定链 -X -delete-chain -E -rename-chain 规定链 INPUT OUTPUT规定 -s -source [!] address[/mask] # 指定源地址 ip # eg. 10.0.0.0 # eg. 10.0.0.0/24 -d --destination [!] address[/mask] # 指定指标地址 ip, 用于 INPUT 没意义 -i -in-interface [!] [name] # 进入的网络接口(网卡) -o --out-interface [!][name] # 进来的网络接口(网卡) -p -protocal [!]protocol # 协定: tcp, udp, icmp -j --jump <target> # 指定规定的指标(动作)tcp协定相干选项 --sport, --source-port [!] [port[:port]] # 起源端口或端口范畴 --dport, --destionation-port [!] [port:[port]] # 指标端口或端口范畴 udp协定相干选项 --sport, --source-port [!] [port[:port]] # 起源端口或端口范畴 --dport, --destionation-port [!] [port:[port]] # 指标端口或端口范畴icmp协定相干选项动作(target) -j ACCEPT # 容许 DROP # 禁止 QUEUE RETURN 示例 iptables -vnL # 查看filter表具体状态, 可不便查看以后的所有规定 iptables -t filter -A INPUT -s 10.0.0.1 -j ACCEPT # 容许来自 10.0.0.1 的包进入 iptables -t filter -A INPUT -s 10.0.0.2 -j DROP # 容许来自 10.0.0.1 的包进入 iptables -D INPUT -s 10.0.0.2 -j DROP # 删除匹配的规定 iptables -t filter -D INPUT 3 # 删除第3条规定(第1条的序号是1) iptables -P INPUT DROP # 批改INPUT规定链的默认规定为 DROP iptables -t filter -A INPUT -i eth0 -s 10.0.0.2 -p tcp --dport 80 -j ACCEPT # 容许从 eth0 网卡进入, 来自10.0.0.2的包拜访本地的80端口.
罕用策略
默认ACCEPT, 配置特定规定 DROP
罕用于测试
默认 DROP, 配置特定规定 ACCEPT
常见于生产环境
输入字段解释
以后的默认策略是ACCEPT ????Chain INPUT (policy ACCEPT 501 packets, 33820 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- * * 10.0.0.1 0.0.0.0/0 ???? ???? ???? ???? ???? ???? 策略 协定 进入网卡 进来网卡 起源地址 目标地址 (tcp,udp,icmp)
nat 表操作
NAT表 - 网络地址转换表
filter -t nat <命令> <规定链> <规定>规定链 PREROUTING # 路由前转换 - 目标地址转换 POSTROUTING # 路由后转换 - 管制源地址动作(target) -j DNAT规定 --to-destination <ip>[/<mask>] # 批改目标地址 --to-source <ip>[/<mask>] # 批改源地址示例 iptables -t nat -vnL # 查看nat表具体状态 # 假如 iptables 所在主机ip为 114.115.116.117, 此处配置外网拜访该地址(eth0网卡)时将拜访tcp协定且是80端口的数据包目标地址转换内网主机 iptables -t nat -A PREROUTING -i eth0 -d 114.115.116.117 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.1 # 另内网拜访该地址(eth1网卡)时将数据包源地址转换成iptables所在主机ip 114.115.116.117 iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth1 -j SNAT --to-source 114.115.116.117
可用于: 端口转发
配置文件
iptables 配置文件 /etc/sysconfig/iptables
在 CentOS 6 中, 治理 iptables:
service iptables save|start|stop|restart命令 save # 将以后内存中的配置保留为配置文件 /etc/sysconfig/iptables # 理论执行了 iptables-save > /etc/sysconfig/iptables # 下次启动时 iptables-restore < /etc/sysconfig/iptables
在CentOS 7 中, 须要装置该服务 yum install iptables-services
才能够应用该命令
留神:
- iptables 的命令是写在内存中, 重启后生效.
firewalld
CentOS 7 在 iptables 上又封装了一层, 也就是 firewalld , 应用更简洁(底层应用 netfilter).
属于包过滤防火墙
firewalld 的特点
反对区域 "zone" 概念
即 iptables 的自建规定链
- firewall-cmd 管制防火墙
firewalld 服务治理
systemctl start|stop|enable|disable firewalld.serivce
留神: firewalld 与 iptables 服务是抵触的.
firewall-cmd
firewall-cmd [选项]选项 状态选项 --state # 查看firewalld以后状态 --reload # 从新加载配置 --zone=public # 指定区域, 不指定时默认就是 public Zone选项 --get-zones # 查看所有的区(除了public外还有一些iptables默认规定链一样) --get-default-zone # 查看默认的区 --get-active-zone # 查看激活的zone 永久性选项 --permanent # 设置选项写入配置, 须要 reload 能力失效 批改和查问zone的选项 --list-all # 查看具体状态(蕴含以下内容) --list-interfaces # 查看某一项状态 - 网卡接口 --list-ports # 查看某一项状态 - 端口 --list-services # 查看某一项状态 - 服务端口 --add-service <服务> # 增加service端口 --add-port <端口/协定> # 增加指定协定指定端口, eg. 81/tcp --add-source <源ip[/网段]> # 增加源地址 --add-interface <网卡接口> --remove-service <服务> --remove-port <端口/协定> --remove-source <源ip[/网段]> --remove-interface <网卡接口>
待整顿的示例
# 只容许某个IP段拜访3306firewall-cmd --permanent --zone=public --add-rich-rule 'rule family=“ipv4” source address=“192.168.0.4/24” port port protocal=“tcp” port=“3306” accept'
firewall-cmd --list-all
输入字段解释
#public区域 激活状态# ???? ????public (active) target: default # ???? icmp-block-inversion: no interfaces: eth0 # ???? public区域绑定了 eth0 网卡 sources: # 容许拜访的源ip services: ssh dhcpv6-client # 容许拜访的服务端口 ports: # 容许拜访的端口 protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
telnet 服务
telnet 是明文传输, 危险, 因而不能利用于远程管理.
装置服务
## telnet 是客户端工具## telnet-server 是服务端服务## xinetd 是因为 telnet-server 无奈自启动, 因而须要应用它来治理 telnet-server 的启动yum install telnet telnet-server xinetd -y
启动服务
systemctl start xinetd systemctl start telnet.socket
telnet 不负责端口的监听, 只负责解决传过来的数据.端口监听工作交由 xinetd 负责, xinetd 负责端口监听并将申请转发给 telnet
root 用户无奈用于telnet 近程登录
SSH 服务
客户端配置文件 /etc/ssh/ssh_config
服务配置文件 /etc/ssh/sshd_config
Port 22 # 服务端口号(默认是22)PermitRootLogin yes # 是否容许root登录AuthorizedKeysFile .ssh/authorized_keys # 密钥验证的公钥存储文件. 默认是放在 ~/.ssh/authorized_keys
使配置失效
systemctl restart sshd.service
ssh 命令
ssh 选项 [<user>@]<host>选项 罕用 -p <port> # 指定连贯端口 -4 # 强制 ssh 只应用 IPv4 地址 -f # 要求 ssh 在执行命令前退至后盾. 端口转发 -N # 不执行近程命令. 用于转发端口. -L port:host:hostport # local, 将本地机(客户机)的某个端口转发到远端指定机器的指定端口 # 工作原理是这样的, 本地机器上调配了一个 socket 侦听 port 端口, 一旦这个端口上有了连贯, 该连贯就通过平安通道转发进来, 同时近程主机和 host 的 hostport 端口建设连贯. 能够在配置文件中指定端口的转发. # 只有 root 能力转发特权端口. IPv6 地址用另一种格局阐明: port/host/hostport -R port:host:hostport # remote, 将近程主机(服务器)的某个端口转发到本地端指定机器的指定端口 # 工作原理是这样的, 近程主机上调配了一个 socket 侦听 port 端口, 一旦这个端口上有了连贯, 该连贯就通过平安通道转向进来, 同时本地主机和 host 的 hostport 端口建设连贯. # 能够在配置文件中指定端口的转发. 只有用 root 登录近程主机 能力转发特权端口. IPv6 地址用另一种格局阐明: port/host/hostport 示例 ssh -fNL 27117:127.0.0.1:27017 <近程主机地址> # 建设local隧道, 将来自27117的连贯通过<近程主机>转发至127.0.0.1(其实还是<近程主机>)的27017端口 # 通常实用于<近程主机>未对外开放27017端口 ssh -fNR 2222:127.0.0.1:22 <近程主机地址> # 建设remote隧道(也叫反向隧道), 将来自<近程主机>2222端口的连贯通过本机转发给127.0.0.1(实际上还是本机) # 通常实用于外网拜访内网服务
示例: 配置拜访特定主机时应用特定的私钥文件
- 以后主机存在多个私钥文件
- 拜访特定主机时需应用特定私钥文件(非默认)
# 假如私钥文件门路: ~/.ssh/xxx_id_rsacat > ~/.ssh/config <<'EOF'Host 192.168.0.143 PubkeyAuthentication yes IdentityFile ~/.ssh/xxx_id_rsaEOF# 留神 config 文件和私钥文件的权限都必须是 600chmod 600 ~/.ssh/config
公钥认证
ssh-keygen 命令
生成密钥对ssh-keygen [选项]选项 -t <密钥类型=rsa> # 指定密钥类型: dsa|ecdsa|ed25519|rsa|rsa1 -C <comment=$USER@$HOSTNAME> # 正文(追加在公钥文件最初)
留神:
- 生成密钥对肯定是在客户端上做, 而后再将公钥传给服务端.
默认生成的文件
~/.ssh/id_rsa
~/.ssh/id_rsa.pub
ssh-copy-id 命令
将公钥(通过ssh)拷贝到指标主机ssh-copy-id 选项 [user@]hostname选项 -n # dry-run, 不真正执行命令 -i <identity_file=~/.ssh/id_rsa.pub> # 手动指定公钥文件 -p port -o ssh_option
留神:
- 指标主机的公钥存储文件
~/.ssh/authorized_keys
, 600 权限
scp 命令
近程文件复制scp [选项] <src> <dest>选项 -C 容许压缩 -r 递归复制整个目录 -P portsrc 和 dest 能够是以下任意的 [<user>@]<host>:/remote/path # 指定近程文件或目录 /local/path # 指定本地文件或目录 示例 scp a.txt 192.168.0.16:/tmp/ # 拷贝本地的 a.txt 到近程的 /tmp/ 目录下
传递大文件更举荐用 rsync(断点续传, 压缩)
rsync 命令
疾速、通用的近程和本地文件传输工具语法 # 本地复制 rsync [选项] <src> <dest> # 通过 ssh 近程复制 Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST:DEST # 通过 rsync 服务 Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST::DEST rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST 选项 # 罕用 -P # 断点续传(保留那些因故没有齐全传输的文件,以便放慢随后的再次传输), 等同于 --partial --progress -z, --compress # 对备份的文件在传输时进行压缩解决, 放慢传输 -e, --rsh=<COMMAND> # 以ssh形式进行数据传输, -e "ssh -p2222" 指定连贯2222端口, 如果是ssh形式默认应用22端口 --bwlimit # 限速, 字节/秒 -r,--recursive # 对子目录以递归模式解决 --progress # 显示传输进度 --partial # 断点续传 -c, --checksum # 关上校验开关,强制对文件传输进行校验。(而不是基于文件的批改工夫及大小) --delete # 删除那些 DEST 中 SRC 没有的文件。 --delete-before # rsync 首先读取 src 和 dest 的文件列表, 并删除那些 DEST 中 SRC 没有的文件, 之后再执行同步操作。 # 因为分两步骤执行, 因而须要更多的内存耗费以及工夫耗费. 因而仅在 dest 的可用空间较小时用这种形式. --delete-excluded # 除了删除 DEST 中 SRC 没有的文件外, 还会一并移除 dest 中 --exclude 或 --exclude-from 指定的文件/目录. -u, --update # 如果 DEST 中的文件比 SRC 新(指批改工夫), 就不会对该文件进行同步. --exclude=PATTERN # 指定排除不须要传输的文件, 比方 --exclude="logs" 会过滤掉文件名蕴含 "logs" 的文件或目录, 不对齐同步. --include=PATTERN # 指定不排除而须要传输的文件模式。 -v, --verbose # 具体模式输入。 -q, --quiet # 精简输入模式。 -a, --archive # 归档模式,示意以递归形式传输文件,并放弃所有文件属性,等于-rlptgoD -t, --list # list the contents of an archive -l, --links # 保留软链 -L, --copy-links # 同步软链时, 以理论的文件来代替 -p, --perms # 放弃文件的权限属性 -o, --owner # 保留文件的属主(super-user only) -g, --group # 保留文件的属组 -D # 放弃设施文件信息, 等同于 "--devices --specials" -t, --times # 放弃文件的工夫属性 示例 rsync -P -z -r root@xx.xx.xx.xx:/data/transfer/archive.zip /data/archive.zip rsync -P -e "ssh -p2222" --bwlimit=200 root@xx.xx.xx.xx:/data/transfer/archive.zip /data/archive.zip
当带宽足够大时, 应用 -z
反而会拖慢速度.
FTP 服务
ftp 协定
ftp 协定: 文件传输协定
- 须要同时建设命令链路(21端口, 先建设, 传输命令)和数据链路(传输文件名称, 目录名称, 文件数据)
数据链路
被动模式
命令链路建设后, 服务端(应用20端口)被动向客户端发动建设数据链路申请(理论可能会被客户端防火墙之类的挡住, 导致无响应)
被动模式(理论罕用)
命令链路建设后, 服务端会凋谢大于1024的端口被动等客户端连贯.
vsftpd 服务
# 装置必要软件## vsftpd 是服务端## ftp 是客户端yum install vsftpd ftp# 启动 vsftpd 服务systemctl start vsftpd.service && systemctl enable vsftpd.service
通过
man 5 vsftpd.conf
能够查看配置文件详解.留神
- 默认提供匿名账号:
ftp
- 默认以后零碎的账号
vsftpd 配置文件
/etc/vsftpd/vsftpd.conf
主配置文件/etc/vsftpd/ftpusers
用户相干/etc/vsftpd/user_list
用户黑白名单, 比方禁止 root 登录
vsftpd.conf
配置
anonymous_enable=YES # 是否容许匿名用户(ftp)local_enable=YES # 是否容许零碎本地用户账号登录. 同时会受到 SELinux(ftp_home_dir 项)的影响write_enable=YES # 本地用户是否可写connect_from_port_20=YES # 是否容许开启被动模式(不会影响被动模式)userlist_enable=YES # 是否启用用户黑白名单userlist_deny=YES # 管制用户列表是黑名单还是白名单, YES 示意黑名单. # 仅在 userlist_enable=YES 时失效 # 虚构用户配置相干guest_enable=YES # 容许虚构用户进行验证guest_username=<零碎用户名> # 指定登录身份为某个零碎用户user_config_dir=/etc/vsftpd/<零碎用户名>config # 指定虚构用户权限管制文件所在目录allow_writeable_chroot=YES # 虚构用户是否可写pam_service_name=vsftpd.vuser # 虚构用户的"可插拔验证模块(pam)"对应文件名称
YES
和NO
必须是大写的.能够应用
man 5 vsftpd.conf
来查看该配置文件的帮忙
强制访问控制对 ftpd 的影响
# 查看 SELinux 中和 ftpd 相干的布尔配置项getsebool -a | grep ftpd# 批改## -P 同时写入配置文件## 0 示意 off, 敞开## 1 示意 on, 关上setsebool -P <配置项名> 1|0
默认匿名账号
- 账号:
ftp
- 明码: 空
- 默认目录:
/var/ftp/
一般账号
- 账号: 零碎账号
- 明码: 零碎账号的明码
- 默认目录:
~
- 能拜访一般账号的 home 目录
ftpusers 配置
vsftp 虚构用户
示例: 新增3个虚构用户
# 1. 建设一个实在零碎账号## 指定 /data/ftp 为该用户的home目录## 指定该用户不可登录到零碎useradd -d /data/ftp -s /sbin/nologin vuser# 2. 编写存储虚构用户账号和明码的临时文件## 该文件格式是: 一行虚构用户名, 一行对应明码cat <<'EOF' > /etc/vsftpd/vuser.tmpu1123456u2123456u3123456EOF# 3. 将上述临时文件转成数据库专用格局db_load -T -t hash -f /etc/vsftpd/vuser.temp /etc/vsftpd/vuser.db# 4. 创立可插拔验证模块配置cat <<'EOF' > /etc/pam.d/vsftpd.vuserauth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuseraccount sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuserEOF# 5. 批改 /etc/vsftpd/vsftp.conf 确保其中相干配置如下 guest_enable=YES guest_username=vuser user_config_dir=/etc/vsftpd/vuserconfig allow_writeable_chroot=YES pam_service_name=vsftpd.vuser # 正文掉以下语句后, 就不再反对匿名和本地用户登录了 #pam_service_name=vsftpd # 6. 创立虚构用户配置所在目录mkdir /etc/vsftpd/vuserconfig# 7. 在虚构用户配置目录中创立和所要创立虚构用户名同名的配置文件## 此处创立 u1, u2, u3 的配置文件## 省略 u2 的...## 省略 u3 的...cat <<'EOF' > /etc/vsftpd/vuserconfig/u1local_root=/data/ftp # 用户登录后进入的目录write_enable=YES # 可写anon_umask=022anon_world_readable_only=NO # 可写?anon_upload_enable=YES # 可上传anon_mkdir_write_enable=YES # 可创立目录?anon_other_write_enable=YES # 可写?download_enable=YES # 可下载EOF# 8. 重启 vsftpd 服务systemctl restart vsftpd.service
ftp 命令
ftp客户端ftp <地址>选项
如果提醒"没有到主机的路由", 个别是因为被防火墙挡住.
相干命令
ls # 在近程执行 ls!ls # 在本地执行 lspwd # 在近程执行 pwd!pwd # 在本地执行 pwdcd # 切换近程目录lcd # 切换本地目录put <file> # 上传文件, 若提醒无权限则应查看 "write_enable" 配置项get <file> # 下载文件
samba 服务
samba 服务
- 应用 smb 协定
- 应用 cifs 文件系统
/etc/samba/smb.conf
配置文件
smb 协定是微软持有的版权, 用于windows之间的共享.而samba则是模仿这种协定, 次要用于共享给windows.
若是 Linux 之间的共享则倡议应用 nfs
# 装置yum install samba# 服务systecmtl start|stop|restart|reload smb.service
配置文件
配置文件 /etc/samba/smb.conf
局部格局阐明
[global] # 全局设置 workgroup = SAMBA security = user passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw[share] # 共享名 comment = my share path = /data/share # 共享门路 read only = No # 是否只读, No 示意可写
man 5 smb.conf
可查看该配置文件的帮忙文档
smbpasswd 命令
samba 用户的创立和删除smbpasswd [选项]选项 -a # 增加用户(零碎中必须有一个同名的用户, samba 用户拜访权限是参考零碎同名用户的) -x # 删除用户 -s # silent, 从规范输出上读取原口令和新口令, 罕用于脚本解决smb
新创建的用户默认会间接共享出本人的home目录, 也就是 /home/用户名
这个目录.
pdbedit 命令
samba 用户查看pdbedit [选项]选项 -L # 查看用户
示例
# 1. 创立零碎用户, 此处以 user1 为例useradd user1# 2. 创立同名samba用户echo -e "123456\n123456" | smbpasswd -a user1# 3. 启动samba服务systemctl start smb.service# 4. 应用## windows 客户端能够通过映射网络驱动器或windows共享来应用## Linux 客户端能够通过磁盘挂载应用(将 127.0.0.1 上的 /home/user1 挂载到了以后的 /mnt 目录)### -t cifs 可省略, 由 mount 自行判断### 输出明码后就挂载胜利了### 挂载结束后可通过 df -hT 或 mount | tail -1 查看挂载信息mount -t cifs -o username=user1 //127.0.0.1/user1 /mnt # 挂载后面在 /etc/samba/smb.conf 里配置的 [share] 共享所指定的目录mount -t cifs -o username=user1 //127.0.0.1/share /mnt2 # 此处举例, 挂载在 /mnt2 文件夹上# 不须要后就卸载掉umount /mntumount /mnt2
nfs 服务
次要用于 Linux 之间的共享服务.
默认已装置
治理
systemctl start|stop|reload nfs.service
/etc/exports 主配置文件
man 5 exports
可查看帮忙
配置格局
<共享目录> <容许起源主机>(权限)... ???? 这里不得有空格 可指定多个共享目录 必须是已存在的目录.容许起源主机 * # 任意主机 具体ip # 指定该ip可拜访 权限(用逗号分隔) rw # 读写权限 ro # 只读权限 sync # (内存)数据同步写入磁盘, 防止失落数据 all_squash # 应用 nfsnobody 零碎用户 示例/data/share *(rw,sync,all_squash)
若权限设置了
all_squash
, 则会应用 nfsnobody 这个用户来做实际操作, 因而须要将该共享目录的属主和属组设为 nfsnobodychown -R nfsnobody:nfsnobody /data/share/
showmount 命令
显示对于 NFS 服务器文件系统挂载的信息showmount [选项] <host>选项 -e, --exports # 查看所有共享的目录
挂载
mount 主机:/path/dir /local/path/to/mount示例 mount localhost:/data/share /mnt # 将localhost上共享的 /data/share 目录挂载到本地的 /mnt 目录
Nginx/OpenResty
- Nginx(engine X) 是一个高性能的 Web 和反向代理服务器.
Nginx 反对 HTTP, HTTPS 和电子邮件代理协定
Nginx 模块因为是用c/c++编写的, 要增加新模块还须要从新编译.
- OpenResty 是基于 Nginx 和 Lua 实现的 Web 利用网关,集成了大量的第三方模块.
装置
# 增加 yum 源yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo# 装置 openrestyyum install -y openresty
治理
systemctl start|reload|stop openresty
配置文件
/usr/local/openresty/nginx/conf/nginx.conf
Nginx 配置
/usr/local/openresty/nginx/conf/nginx.conf
worker_processes 1; # 配置多少个worker过程, 最大值倡议不大于CPU外围数error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;pid logs/nginx.pid;events { # use epoll; worker_connections 1024; # 每个worker容许的并发连贯, 超过会返回 503 Service Unavailable 谬误}http {# 此处的配置会对上面所有 server 失效 # 拜访日志格局定义 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; # 拜访日志记录文件及采纳的格局配置 access_log logs/access.log main; # sendfile 和 tcp_nopush 是在内核层面上优化传输链路 sendfile on; # 传输文件时的优化: 间接在内核中将文件数据拷贝给socket. tcp_nopush on; # 仅sendfile启用时失效, 将http头和实体一起返回, 缩小报文段数量 keepalive_timeout 65; # HTTP 协定的 keepalive, 建设长连贯, 重用TCP连贯 gzip on; # 传输时启用 gzip 压缩, 节俭带宽, 造成CPU额定耗费. server { listen 80; # 监听端口 server_name localhost; # 域名(虚拟主机) location / { root html; index index.html index.htm; } }}
上述配置中的相对路径是基于编译nginx时指定的特定门路, 个别是nginx所在目录, 对应此处是 `/usr/local/openresty/nginx/
LNMP
MySQL
- mariadb 是 MySQL 的社区版
# 装置# mariadb 是客户端# yum install mariadb mariadb-server
批改配置文件 /etc/my.cnf
[mysqld]character_set_server=utf8init_connect='SET NAMES utf8'
或者是采纳 utf8mb4 编码, 兼容4字节的unicode, 须要存emoji表情的话应应用 utf8mb4
PHP
yum install php-fpm php-mysqlsystemctl start php-fpm.service
默认源的版本是 5.4, 须要更高的能够用 webtatic 源此处仅作示范
Nginx
server { location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }}
通过 fastcgi 协定将申请转发给 php-fpm
DNS 服务
DNS 服务介绍
- DNS(Domain Name System) 域名零碎
- FQDN(Full Qualified Domain Name) 齐全限定域名
- 域分类: 根域、顶级域(TLD)
- 查问形式: 递归、迭代
- 解析形式: 正向解析(主机 -> ip)、反向解析(ip -> 主机)
- DNS 服务器的类型: 缓存域名服务器、主域名服务器(master)、从域名服务器(salve)
www.baidu.com.???? ???? ????主机名 域名 根域.com 顶级域. 根域
BIND 软件
提供 DNS 服务
# 装置## bind 提供服务的软件包## bind-utils DNS服务的相干工具yum install bind bind-utils# 服务治理systemctl start named.service
主配置文件: /etc/named.conf
options { listen-on port 53 { any; }; // 监听端口及对应网卡 ... allow-query { any; }; // any 容许任何人查问}// 根域zone "." IN { type hint; file "named.ca"; // /var/named/named.ca};
named-checkconf
确认配置文件是否正确named-checkconf
...........DNS 本节课后续略过, 看不下去
NAS
NAS(Network attached storage)网络从属存储
反对的协定:
- nfs
- cifs
- ftp
个别是通过创立磁盘阵列RAID后, 再通过上述协定共享.
创立步骤
假如此处提供了2个新硬盘
- /dev/sde
- /dev/sdf
1. 创立共享空间
# 磁盘分区fdisk /dev/sdefdisk /dev/sdf# 创立 RAID## 此处创立 RAID1 级别的磁盘阵列mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sd{e,f}1# 长久化 RAID 配置信息mdadm --detail --scan --verbose > /etc/mdadm.conf# 通过逻辑卷的形式以不便后续扩容## 初始化物理卷pvcreate /dev/md0## 创立卷组vgcreate vg1 /dev/md0## 创立逻辑卷### 此处示例, 因而只创立个 200M 的逻辑卷lvcreate -L 200M -n nas vg1# 分区格式化mkfs.xfs /dev/vg1/nas# 分区挂载mkdir /sharemount /dev/vg1/nas /share
2. 通过协定共享
# 创立专用用户 shareuseruseradd shareuser -d /share/shareuserecho 123456 | passwd --stdin shareuser# 1. 配置ftp共享 - 通过 shareuser 用户登录ftp并拜访home目录 (也能够用虚构用户)确认 /etc/vsftpd/vsftpd.conf 配置 pam_service_name=vsftpd local_enable=YES write_enable=YESsystemctl restart vsftpd.service# 2. 配置samba服务echo -e "123456\n123456" | smbpasswd -a shareusersystemctl restart smb.service# 3. 配置nfs服务## 配置为 ro (nfs因为没有用户级别的限度, 因而这种状况下不举荐设置为 rw)echo '/share/shareuser *(ro)' >> /etc/exportssystemctl restart nfs.service## 配置为 rw (配合 facl 权限访问控制列表)echo '/share/shareuser *(rw,sync,all_squash)' >> /etc/exportssetfacl -d -m u:nfsnobody:rwx /share/shareusersetfacl -m u:nfsnobody:rwx /share/shareuser