Linux10-9
iptables扩展匹配:
tcp扩展:
- -p:执行协议(tcp、udp、icmp)
- -p tcp --sport:指定源端口
- -p tcp --dport:指定目的端口
- -p tcp --tcp-flags 列表1 列表2:列表1指定要检查的状态标志位,列表2指定列表1中必须为1,如果列表1中有,但是列表2中没有,这个标志位是0
案例:禁止别人访问主机的22号端口
iptables -t filter -A INPUT -p tcp --dport 22 -j DROP
案例:将源IP地址为1.2.3.4的IP,三次握手的第一次数据包丢弃
iptables -t filter -A INPUT -s 1.2.3.4 -p tcp --tcp-flags syn,ack,fin syn -j DROP
icmp扩展:
例子:将所有的源IP地址的数据包发送的ping包放行
iptables -t filter -A INPUT -p icmp -j ACCEPT
ping命令使用的是icmp协议
格式:-p icmp
-p icmp --icmp-type num
- 8:ping的请求包类型
- 0:ping的响应包类型
案例:禁止让外部主机ping虚拟机,但是虚拟机可以ping外部主机
方法一:iptables -t filter -A INPUT -p icmp --icmp-type 8 -j DROP
方法二:iptables -t filter -A OUTPUT -p icmp --icmp-type 0 -j DROP
LNMP
L:Linux
N:nginx
M:mysql
P:php
- 静态资源
可以直接通过浏览器展示给客户端的都是静态资源
例如:html文件、图片文件、js文件
- 动态资源
无法直接展示给客户端,必须先执行程序,然后将执行结果展示给客户端
例如:shell文件、php文件、pythen文件
在处理客户端请求的时候,不同的软件可以处理不同的请求
nginx/apache 只可以处理对应的静态请求
php可以处理php的资源
数据库
储存数据
建议:
关闭防火墙
关闭selinux
systemctl stop iptables
systemctl stop firewalld
setenforce 0
lsof命令
lsof -i :80 查看80端口是哪个程序在运行
ss
显示网络的连接状态
ss -tnl 查看IP地址监听的端口
-t:表示显示tcp连接
-u:udp
-n:表示不进行域名解析
-l:显示处于监听状态
web节点:
- web节点:安装nginx------安装依赖
yum install gcc gcc-c++ zlib-devel pcre-devel openssl-devel lsof wget -y
- 下载nginx软件包
wget https://nginx.org/download/nginx-1.22.1.tar.gz
- 解压目录
tar -xvf nginx-1.22.1.tar.gz
cd nginx-1.22.1
mkdir -p /usr/local/nginx
./configure --prefix=/usr/local/nginx && make && make install
- 启动nginx
安装目录/usr/local/nginx
lsof -i :80
- 测试访问
在浏览器中输出IP
php节点
- 安装php
yum install php-fpm php php-mysql php-gd -y
- 修改php的配置文件
/etc/php-fpm.d/www.conf
listen = 127.0.0.1:9000 设置php服务的监听地址
listen.allowed_clients = 127.0.0.1 设置允许哪个客户端发送请求过来
- 启动php
systemctl start php-fpm
lsof -i :9000
ss -tnl | grep 9000
systemctl status php-fpm
再修改nginx的配置文件
安装目录/conf/nginx.conf
将前面的#去掉
location ~ \.php$ {root /web/php; 找个php存储路径(自定义需要存在该目录)fastcgi_pass 127.0.0.1:9000; php的IP地址fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
#创建目录 /web/php[root@php ~]# mkdir /web/php -p#在目录中创建php文件[root@php ~]# cd /web/php/[root@php php]# vim a.php<?phpphpinfo();?>
测试
访问该文件
安装MySQL
yum install mysql mariadb-server -y
启动
systemctl start mariadb
docker的安装
容器技术
容器其实就是虚拟机,每个虚拟机可以运行不同系统
为什么要使用docker?
- docker容器之间的相互隔离,可以提高安全性
安装配置 docker
- 第一步:确保系统的软件包是最新的:
apt update
- 第二步:安装一些必要的软件包以允许apt通过HTTPS使用存储库
apt install apt-transport-https ca-certificates curl gnupg-agent software- properties-common
- 第三步:添加docker的官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- 第四步:添加docker存储库
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu$(lsb_release -cs) stable"
- 第五步:安装docker
apt install docker-ce docker-ce-cli containerd.io
docker-ce:docker的社区版
docker-ce-cli:是docker社区版的命令行界面工具
containerd.io:容器管理:负责启动、停止、暂停和恢复,以及资源分配、镜像管理等
- 第六步:验证安装
docker version 查看docker的版本信息
操作:
查看运行或查看已停止运行的容器
docker ps
docker ps -a
下载镜像:
docker pull 镜像名:版本
案例:下载 centos7的镜像
docker pull centos:7
查看现有镜像
docker images
删除现有镜像
方法一:docker rmi 镜像id
方法二:docker image rm 镜像id
启动容器
docker run
- -t:指定一个终端,如果没有终端,是无法登录这个容器的
- -i:交互式访问,需要就用这个选项
- --name string:指定这个容器的名字
- --rm:当容器停止的时候,自动删除容器
- -d:让当前容器运行在后台
- -P:暴露的端口号,将容器端口和宿主机的任意端口进行端口映射
- -p:宿主机的端口:可以将宿主机的指定端口和容器的端口进行映射
案例:创建centos的系统
docker run -tid --name al -P 605c77e624dd
再次进入
docker exec -it 1dfe3546051e /bin/bash
退出容器
ctrl+p+q
exit
停止容器
docker stop 容器id/名称
删除容器
docker rm 容器id/名称 需要先停止
查看内存使用情况
方法一:cat /proc/meminfo
方法二:free命令
查看cpu的使用情况
top命令