新装系统操作步骤
更换系统源
采用阿里云的镜像源:https://developer.aliyun.com/mirror/
1. 备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2.下载Repo文件
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
3. 运行 yum makecache
生成缓存
4. 其他
可选
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
epel安装
yum install epel-release wget -y
或者
yum install -y http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
epel更换阿里源
1. 备份(如有配置其他epel源)
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
2. 下载新repo 到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
系统更新
yum update -y
添加 End Point Package Repository
在
CentOS 7
上安装新版本Git
最快的方法是通过End Point
库。
sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
其他版本的 CentOS
替换成对应版本安装,可参考:packages.endpointdev.com/
常用组件工具安装
yum install htop git vim net-tools telnet zip unzip wget tree gcc nc jq gcc-c++ pcre-devel zlib zlib-devel rpmdevtools rpmbuild yum-utils createrepo openssl openssl-devel pwgen -y
Docker安装
1.下载安装源文件
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
或者
wget -P /etc/yum.repos.d/ https://download.docker.com/linux/centos/docker-ce.repo
2.更换安装源
sudo sed -i 's+download.docker.com+mirrors.cloud.tencent.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
3.建立本地缓存
sudo yum makecache fast
4.安装Docker-CE
yum install -y docker-ce
Docker配置修改
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://d3is0bty.mirror.aliyuncs.com","http://f1361db2.m.daocloud.io"],
"insecure-registries": ["http://hub.nercoa.com"],
"data-root": "/mnt/DockerRootDir",
"storage-driver": "overlay2",
"log-driver":"json-file",
"log-opts": {"max-size":"5m", "max-file":"3"}
}
// "graph": "/mnt/DockerRootDir", 亦可指定Docker的根目录位置。
解决docker运行容器自动开放防火墙端口
# 解决docker运行容器自动开放防火墙端口, Firewalld无法控制docker端口情况
# 被这个东西坑了几次了,总以为自己屏蔽了端口,但是发现没有屏蔽导致两次被清库,这次终于找到原因了。因为docker是直接走iptables转发,不受自带防火墙的控制,坑死了。
#需要修改/usr/lib/systemd/system/docker.service
vi /usr/lib/systemd/system/docker.service
// 找到 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 在中间添加 --iptables=false
// 修改之后 :
ExecStart=/usr/bin/dockerd --iptables=false -H fd:// --containerd=/run/containerd/containerd.sock
// 上面的位置不能放错,放错启动会报错。
:wq 保存退出
#然后
systemctl daemon-reload
systemctl restart docker
限制Docker容器生成大量core文件
限制Docker容器生成大量core文件,上面之前配置文件中限制了日志的文件,但无法限制错误时生成的转储文件
vi /usr/lib/systemd/system/docker.service
// 在容器服务当中添加默认值 `--default-ulimit core=0:0`
/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --iptables=false -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit core=0:0
Docker-Compose安装
# curl -SL https://github.com/docker/compose/releases/download/v2.24.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
curl -SL https://img.winjay.cn/md/docker-compose-linux-x86_64-v2.24.3 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
命令自动补全
yum install bash-completion -y
安装好后,重新登陆即可(刷新bash环境)。
关闭防火墙、SELINUX
systemctl stop firewalld.service && systemctl disable firewalld.service
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
reboot
启用IPV4转发功能
Docker启动报错
WARNING:IPv4 forwarding is disabled. Networking will not work.
解决办法:
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
重启network服务
systemctl restart network && systemctl restart docker
查看是否修改成功 (备注:返回1,就是成功)
sysctl net.ipv4.ip_forward
-
正常会输出
net.ipv4.ip_forward = 1
-
IP 转发是一种网络功能,允许 Linux 主机将接收到的 IP 数据包从一个网络接口转发到另一个网络接口。当 Linux 主机作为一个网络中的路由器或者网络中继时,启用 IP 转发功能是必需的。这样,它可以将数据包从一个网络发送到另一个网络,实现不同网络之间的通信。
-
具体地说,
net.ipv4.ip_forward=1
的设置将使 Linux 内核允许 IP 数据包的转发。默认情况下,这个选项的值是0,表示禁用 IP 转发。通过将其设置为1,你告诉内核启用 IP 转发功能。
请注意,在启用 IP 转发之前,确保了解网络拓扑和网络安全需求。开启 IP 转发功能可能会对网络安全产生影响,因为它允许数据包在不同网络之间传递。确保合理地配置防火墙规则和网络访问控制,以确保网络的安全性。
SSH配置
- 上传公钥
// 修改ssh端口号
# Port 22
Port $(YourPort)
// 修改断开时间
ClientAliveInterval 600
ClientAliveCountMax 3
// 关闭密码登陆,只允许证书登陆:这两个参数值修改为no:
PasswordAuthentication no
ChallengeResponseAuthentication no
// 然后重启SSH服务。
现在我们就已经限制用户的SSH登录方式,只允许用key方式登录。进一步测试,如果我们用一台不带信任key的机器尝试登录,那么会提示如下信息。Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
证明限制SSH登录方式成功。
网络配置
vim /etc/sysctl.conf
// 新增如下数据加入文件尾部
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0
退出vim 执行重新加载文件生效
sysctl -p
1. net.ipv4.tcp_fin_timeout = 30 // 这个参数定义了一个 TCP 连接在关闭时等待的时间。TCP 连接的关闭分为多个阶段,FIN_WAIT_1、FIN_WAIT_2 和 TIME_WAIT 等。这个参数设置了在关闭连接时等待的时间,单位是秒。默认情况下,这个值是比较长的,但是通过将它设置为较小的值(例如30),可以更快地释放连接资源。
2. net.ipv4.tcp_keepalive_time = 1800 // TCP Keepalive 是一种机制,用于检测空闲的 TCP 连接,并在需要时终止它们。这个参数定义了 TCP Keepalive 包发送的间隔时间,单位是秒。默认情况下,它是 7200 秒(2 小时),但是通过将它设置为较小的值(例如1800,即30 分钟),可以更快地检测并终止空闲连接。
3. net.ipv4.tcp_window_scaling = 0 // 这个参数控制是否启用 TCP 窗口缩放机制。TCP 窗口缩放允许在高带宽网络上进行更高效的数据传输。将这个参数设置为 0 将禁用窗口缩放,可能会对某些网络环境更加稳定和可靠。
4. net.ipv4.tcp_sack = 0 // SACK(Selective Acknowledgment,选择性确认)是一种机制,用于在 TCP 连接中确认接收到的数据段。将这个参数设置为 0 将禁用 SACK,可能会影响 TCP 的拥塞控制算法。在某些情况下,禁用 SACK 可能会提高性能和可靠性。
5. net.ipv4.tcp_timestamps = 0 // 这个参数控制是否启用 TCP 时间戳选项。TCP 时间戳用于在网络上同步时间,以提高数据包的排序和处理。将这个参数设置为 0 将禁用时间戳选项,可能会在某些情况下提高性能和安全性。
// 在修改完`/etc/sysctl.conf`文件后,如果你想立即使修改的参数生效,可以运行以下命令之一:
-
使用
sysctl -p
命令: 运行sysctl -p
命令将重新加载/etc/sysctl.conf
文件中的参数,并使其立即生效。 -
使用
sysctl -w
命令: 使用sysctl -w
命令可以直接设置某个参数并立即生效。例如,如果要立即生效地设置net.ipv4.tcp_keepalive_time
参数为1800,可以运行以下命令:
sysctl -w net.ipv4.tcp_keepalive_time=1800
# 请将上述命令中的参数名和值替换为你实际修改的参数和值。
这些命令将使你对内核参数的修改立即生效,而无需重新启动系统。
评论区