SSM WEB环境搭建记录(一)
防火墙
防火墙定义: 通过制定一系列有顺序的规则,管制进出我的网络的数据包,能够实现这个功能的软件或硬件称为防火墙
Linux 中有两种防火墙软件,Centos7.0以上使用的是firewall,
Centos7.0以下使用的是iptables
TCP Wrapper
-
概述: 通过分析程序来进行控制。
-
例子: 比如iptables是通过数据包头信息[ip:port]来限制,
tcp wrapper的tcpd进程是通过进程名来控制进程,而不是数据包[ip:port]来控制
-
软件: xinetd
Iptables
-
组成:1. Filter 2.Nat 3.Mangle(破坏者,与数据包中的flag有关,很少使用),每一条规则都是一条chain,串行判断,顺序很重要
-
Filter: 预设的过滤表,用来决定数据包是否通过。
INPUT: 进入本机
OUTPUT: 输出本机
FORWARD: 数据包向后传递,跟spring mvc中的转发(forward)一样
-
NAT(Network Address Transaction): 数据包转发表,将来源数据包(src) 与NAT后面的(IP:PORT)进行映射
-
-
默认策略(Default Policy)
当数据包不在所有的规则范围内,那么就以Default Policy决定是否通过
-
表table---filter,nat 链chain--INPUT,OUTPUT,PREROUTING.... 策略Policy--ACCEPT,DROP,REJECT,LOG
-
查看默认策略和规则
## 查看iptables的规则(推荐, 因为会显示规则作用于哪张网络接口Network Interface) ## 一般将本机的INPUT链的默认策略设置为DROP [root@yang1 ~]# iptables-save [-t table(nat 或 filter)] # Generated by iptables-save v1.4.21 on Fri Aug 7 14:30:53 2020 *nat # *后是表格名称 :PREROUTING ACCEPT [164557:52755548] # 冒号后是chain链(若数据包在规则中都没有命中则进入默认策略),这里都是通过 :INPUT ACCEPT [15546:3696497] :OUTPUT ACCEPT [155:12485] :POSTROUTING ACCEPT [155:12485] COMMIT # Completed on Fri Aug 7 14:30:53 2020 # Generated by iptables-save v1.4.21 on Fri Aug 7 14:30:53 2020 *filter :INPUT ACCEPT [401:82988] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [68:6272] COMMIT # Completed on Fri Aug 7 14:30:53 2020 ---------------------------------------------------------------------------------------- ## 查看(不推荐,因为不显示规则作用于那张网络卡net interface) [root@yang1 ~]# iptables [-t tables] [-L] [-nv] ## -t table表,默认是filter表,可以指定为nat表 ## -L 列出目前的规则 ## -n ip与hostname的解释,会耗费时间,可以不加 ## -v 显示每条规则的更多信息 Chain INPUT (policy ACCEPT) # ACCEPT-数据包通过 DROP-丢弃 target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
-
删除规则
---------------------------------------------------------------------------------------- ## 删除规则,但不会影响默认策略(default policy) [root@yang1 ~]# iptables [-t table] [-FXZ] -F: 清除已订规则 -X: 杀掉所有自定义table -Z: 将chain的统计清空
-
修改
## 修改filter默认策略 iptables -P [INPUT,OUTPUT,FORWARD] [DROP,ACCEPT] -P: Policy 策略 DROP: 封包丢弃 ACCEPT: 允许通过 ----------------------------------------------------------------------------------------
-
创建规则
## 通过规则 不仅仅是tcp和udp iptables [-AI chain] [-io 网络接口] [-p protocal] [-s srcIP/domain] [-d dstIP/domain] -j [ACCEPT|DROP|REJECT|LOG] -AI : A-append 累计追加,在指定的chain的尾巴追加一条规则,e.g nat INPUT前面后4条,-A后则变成第5条 I-insert 插入,在指定的chain的头上插入一条规则,则封包比对规则的时候这条规则就是第一条比对 -io : i-input 网络接口的输入端, 网络接口指的是[eth,lo(local本地回环测试接口)等] o-output 网络接口的输出端 -p : p-protocal 协议,tcp,udp,icmp,all等 -s : s-source 源,包括IP(192.168.1.10)和网段(192.168.1.0/24 或 192.168.1.0/255.255.255.0) -s !192.168.1.10 表示除了192.168.1.10的地址,感叹号表示去反 -d : d-dist 目标,同src -j : j-jump 跳入目中后续动作, 练习1:设定来自lo(localLoopStack)网络接口的封包都可以进入系统(本地回环测试的数据都能进入系统) iptables -A INPUT -i lo -j ACCEPT 常规错误: 数据包进入chain的判断是串行判断的,一旦符合某一条规则,就停止 示例: 本地回环封包通过,192.168.1.0/24网络封包通过,192.168.1.100主机的封包拒绝 错误设置: -A INPUT -s 192.168.1.0/24 -i lo -j ACCEPT ## 本地回环地址的数据包通过 -A INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT ## 该网段的数据包通过,那么来自100主机的数据也是符合该规则的,数据也会通过,下面这条规则就永远不会进行判断 -A INPUT -s 192.168.1.100 -i eth0 -j DROP ## tcp和udp的端口限制 iptables [-AI chain] [-io 网络接口] [-p tcp|udp] [-s srcIP/domain] 【--sport srcPort】 ## 也可以使用端口范围 21:1024 [-d dstIP/domain] 【--dport dstPort】 -j [ACCEPT|DROP|REJECT|LOG] ## 限制mac地址 (通过外置审核模块 -m module) iptables -I INPUT -m mac --mac-srouce 具体mac地址 -j DROP ## 按封包状态进行过滤 (通过外置模块 -m state --state [INVALID,ESTABLISHED,NEW,RELATED]) ## 将ESTABLISHED和RELATED(本机发出的请求的响应包)通过 iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-
保存规则到文件
## iptables命令添加的规则及时有效,但是在内存中,需要使用save刷新到磁盘文件中 iptables -save
Firewall
CentOS 7.0默认使用的是firewall作为防火墙,使用时需要配置iptables
-
防火墙 开关
systemctl start firewalld #开启防火墙 systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动 systemctl enable firewalld # 设置开机启动 firewall-cmd --reload #重启防火墙
-
防火墙 状态
systemctl status firewalld
-
设置 iptables service
yum -y install iptables-services
-
端口 查看所有打开的端口
iptables -nvL firewall-cmd --list-ports ## 查看开放的端口
-
端口 拦截
## -A 添加IO规则 ## -p 指定端口 iptables -A INPUT -p tcp --drop 端口号 -j DROP iptables -A OUTPUT -p tcp --dport 端口号 -j DROP
-
端口 添加与关闭
## 端口添加后需要重启防火墙 firewall-cmd --zone=public --add-port=8080/tcp --permanent ## 端口关闭 firewall-cmd --zone=public --remove-port=8080/tcp --permanent
iptables -A INPUT -p tcp --dport 端口号 -j ACCEPT
-
日志???
将某些规则的包 log 到/var/log/message 中 iptables -I {position} INPUT -J log --prefix "xxx"
-
iptables配置
IP设置
-
查看ip
centos不使用ifconfig命令,而是
ip addr
, 网卡名是ens开头的信息。 -
动态获取IP
vi /etc/sysconfig/network-scripts/ifcfg-ens[系统特征的数字,e.g32] ,修改到下图的配置,重启服务
systemctl restart network
-
静态设置IP,重启服务。
systemctl restart network
-
此时重新查看ip,已经有inet ipv4地址了,ping 一下宿主机也是成功的
jdk安装
1 创建一个文件夹用来存放jdk压缩文件
mkdir -p /home/test/tar
2 把下载好的jdk压缩文件上传到linux对应目录
3 创建jdk解压目录
mkdir /usr/local/jdk
4 解压文件
tar -zxvf /home/jdk-8u201-linux-x64.tar.gz -C /usr/local/jdk
5 切换root用户
6 修改/etc/profile
vim /etc/profile
添加
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_201
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
7 重新加载/etc/profile
source /etc/profile
8 检查jdk版本
java -version
Tomcat 命令
1. 解压
tar -zxvf /home/test/tar/apache-tomcat-8.5.55.tar.gz -C /usr/local/
2. 进入bin目录启动
sh ./startup.sh
Redis安装
https://www.cnblogs.com/chengxs/p/9833911.html
https://www.cnblogs.com/happywish/p/10944253.html
## 安装
yum install redis
yum install epel-release
## 开机自启动
chkconfig redis on
或
systemctl enable redis.service
## 修改默认密码
vim /etc/redis.conf
查找 requirepass foobared 将foobared改为自定义密码
auth password 验证进入
## 重启
ps -ef | grep redis
kill -9 XXX
redis-server /etc/redis.conf & ## 使用这个配置后台启动
或
service redis stop
service redis start
或
systemctl start redis.service
## 测试
redis-cli -h 127.0.0.1 -p 6379
插入字符串: SET ylj redis
获取: GET ylj
## 端口开放
# 开启6379
/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
# 开启6380
/sbin/iptables -I INPUT -p tcp --dport 6380 -j ACCEPT
# 保存
/etc/rc.d/init.d/iptables save
# centos 7下执行
service iptables save
## 命令
# 启动redis
service redis start
# 停止redis
service redis stop
# 查看redis运行状态
service redis status
# 查看redis进程
ps -ef | grep redis
nginx安装
一. gcc 安装
yum install -y gcc-c++
二. PCRE pcre-devel 安装
yum install -y pcre pcre-devel
三. zlib 安装
yum install -y zlib zlib-devel
四. OpenSSL 安装
yum install -y openssl openssl-devel
五.nginx安装
https://blog.csdn.net/fukai8350/article/details/80634566
0. cd /usr/local/src
1. wget -c https://nginx.org/download/nginx-1.15.0.tar.gz
解压tar -zxvf nginx-1.15.0.tar.gz
cd nginx-1.15.0
2. 配置默认参数 ./configure
(此处若要开启ssl功能,则
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
)
3. 编译 make && make install
六.开机自启动
vim /etc/rc.local
添加一行: /usr/local/nginx/sbin/nginx
加权限: chmod 755 /etc/rc.local
nginx配置ssl
查询nginx是否开启了ssl模块
/usr/local/nginx/sbin/nginx -V
NOTE:
编译时需要打开ssl模块
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
https://help.aliyun.com/document_detail/98728.html?spm=5176.2020520163.0.0.723a56a7Q5Vrc2
常用命令
nginx -s quit 优雅停止nginx,有连接时会等连接请求完成再杀死worker进程
nginx -s reload 优雅重启,并重新载入配置文件nginx.conf
nginx -s reopen 重新打开日志文件,一般用于切割日志
nginx -v 查看版本
nginx -t 检查nginx的配置文件
nginx -h 查看帮助信息
nginx -V 详细版本信息,包括编译参数
nginx -c filename 指定配置文件
nginx问题
问题 HTTP 413 POST 文件上传过大报错
报错信息: <span style="color:#ff0000;">Failed to load resource: the server responded with a status of 413 (Request Entity Too Large)</span>
解决: 在nginx.conf输入
client_max_body_size 8M;(配置请求体缓存区大小, 不配的话)
client_body_buffer_size 128k;(设置客户端请求体最大值)
fastcgi_intercept_errors on;
重启nginx: service nginx restart
nginx命令
nginx 常用命令
nginx -s quit //优雅停止nginx,有连接时会等连接请求完成再杀死worker进程
nginx -s reload //优雅重启,并重新载入配置文件nginx.conf
nginx -s reopen //重新打开日志文件,一般用于切割日志
nginx -v //查看版本
nginx -t //检查nginx的配置文件
nginx -h //查看帮助信息
nginx -V //详细版本信息,包括编译参数
nginx -c filename //指定配置文件
注:后来发现使配置文件生效不需要重启系统
只需要输入 source /etc/profile //让配置文件重新生效一下即可
nginx 跨域
//直接请求nginx也是会报跨域错误的这里设置允许跨域;
如果代理地址已经允许跨域则不需要这些, 否则报错(虽然这样nginx跨域就没意义了)
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
定位nginx执行的配置文件
mysql安装
https://www.linuxidc.com/Linux/2016-09/135288.htm
https://www.linuxidc.com/Linux/2016-09/135288.htm
1. 下载mysql5.7 rpm包
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
2. 本地安装 rpm包(noarch.rpm只是一些脚本,写入了mysql的yum源,在/yum/repo.d/下,没有二进制软件包)
yum localinstall mysql57-community-release-el7-8.noarch.rpm
3. 查看mysql的yum源是否安装上
ll /etc/yum.repos.d
yum repolist enabled | grep "mysql.*-community.*"
4.
一.开放root远程连接
1.mysql -u root -p; // 登录mysql, 并输入密码
2.use mysql; // 打开 mysql 数据库
3.update user set host='%' where user='root' and host='localhost';//允许远程登录
update user set host='localhost' where user='root'; //禁止远程登录
4. flush privileges; //刷新权限表,使配置生效
5. service mysqld restart // 重启mysql服务
二.配置默认编码为utf-8
配置文件地址: /etc/my.cnf
添加配置项
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
重启服务 systemctl restart mysqld
show variables like '%character%';
硬盘挂载
https://help.aliyun.com/document_detail/25426.html?spm=a2c4g.11186623.2.28.483e7d56T6YKVi#concept-jl1-qzd-wdb
测试
wget --no-check-certificate 'https://www.kernel.org/pub/software/scm/git/git-2.0.5.tar.gz'