CentOS 初始化 & 环境准备
系统:CentOS 7.9.2009 最小化安装
# 一、初始设置
按需进行设置
# 1.修改主机名
#查看当前主机名
cat /etc/hostname
#修改主机名
echo 'xxx' > /etc/hostname
#修改 hosts
vi /etc/hosts
1
2
3
4
5
6
2
3
4
5
6
# 2.设置网络
# 2.1.静态指定地址
网卡配置文件存放在:/etc/sysconfig/network-scripts/ 目录
vi /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static
IPADDR=192.168.1.103
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=223.5.5.5
DNS2=8.8.8.8
……
ONBOOT=yes
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
添加第二块网卡
#获取 UUID
nmcli con
#获取 MAC
ip addr
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1
vi /etc/sysconfig/network-scripts/ifcfg-eth1
#替换增加如下字段
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
IPADDR=192.168.1.103
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=223.5.5.5
DNS2=8.8.8.8
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eth0"
UUID="6e099b8a-6fea-4c25-80f0-f7ec48e18efa"
DEVICE="eth0"
ONBOOT="yes"
IPV6_PRIVACY="no"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 2.2.设置 DNS
echo "nameserver 114.114.114.114" > /etc/resolv.conf
systemctl restart network
1
2
2
# 2.3.关闭 Selinux
#查看状态,enforcing 表示开启,disabled 则是关闭
getenforce
#临时操作开启关闭
setenforce 0/1
#永久关闭,需要重启
sed -i 's/SELINUX=enforcing/SELINUX=disable/g' /etc/selinux/config
#重启
reboot
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 2.4.关闭防火墙
#关闭并删除开机启动
systemctl stop firewalld
systemctl disable firewalld
1
2
3
2
3
# 3.关闭 Swap
#删除 Swap 区所有内容
swapoff -a
#注释 swap 行
vi /etc/fstab
#重启
reboot
#Swap 行全部是 0 表示删除成功
free -h
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 4.时间同步
#安装同步软件
yum install -y ntpdate
#手动同步
ntpdate ntp.aliyun.com
#利用 crontab 自动同步
#每天 0 点执行
echo '0 0 * * * /usr/sbin/ntpdate ntp.aliyun.com' >> /var/spool/cron/root
#每次重启执行
echo '@reboot /usr/sbin/ntpdate ntp.aliyun.com' >> /var/spool/cron/root
systemctl restart crond
crontab -l
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 二、性能优化
# 1.资源限制
- 系统级:当前系统可打开的最大数量,通过 fs.file-max 参数可修改
- 用户级:指定用户可打开的最大数量,修改 /etc/security/limits.conf
- 进程级:单个进程可打开的最大数量,通过 fs.nr_open 参数可修改
vi /etc/sysctl.conf
#多留点 buffer
fs.file-max=1100000
#要比 hard nofile 大一点
fs.nr_open=1100000
1
2
3
4
5
2
3
4
5
修改 /etc/security/limits.conf 文件,格式:限制对象 限制级别 限制参数 限制大小
- 限制对象:用户、用户组(前面添加@区分),可以使用通配符(*、%)
- 限制级别:hard & soft 分别表示报错和告警的级别
- 限制参数:nofile & nproc 表示最大文件数和最大进程数
还有其他参数,一般很少用到:
# - core - limits the core file size (KB)
# - data - max data size (KB)
# - fsize - maximum filesize (KB)
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open file descriptors
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of processes
# - as - address space limit (KB)
# - maxlogins - max number of logins for this user
# - maxsyslogins - max number of logins on the system
# - priority - the priority to run user process with
# - locks - max number of file locks the user can hold
# - sigpending - max number of pending signals
# - msgqueue - max memory used by POSIX message queues (bytes)
# - nice - max nice priority allowed to raise to values: [-20, 19]
# - rtprio - max realtime priority
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
查看当前数值
#查看当前句柄数,切换到不同用户进行测试
ulimit -a
1
2
2
查看进程句柄数
ps -ef | grep nginx
1
然后使用进程号查看
cat /proc/进程号/limits
1
使用以下命令或者直接修改(如果多用户环境,不建议使用 * 设置)
- soft nproc:单个用户可用的最大进程数量(告警)
- hard nproc:单个用户可用的最大进程数量(报错)
- soft nofile :可打开的文件描述符的最大数(告警)
- hard nofile:可打开的文件描述符的最大数(报错)
cat >> /etc/security/limits.conf <<EOF
root soft nofile 65536
root hard nofile 65536
root soft nproc 65536
root hard nproc 65536
app soft nofile 65536
app hard nofile 65536
app soft nproc 65536
app hard nproc 65536
EOF
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
PS.针对被限制无法修改的句柄数
- 修改 /etc/ssh/sshd_config,将 UseLogin 参数值改为 yes
vi /etc/ssh/sshd_config
UseLogin yes
UsePrivilegeSeparation no
1
2
3
2
3
- 修改
/etc/pam.d/login
,增加条目
vi /etc/pam.d/login
session required pam_limits.so
1
2
2
- 再去修改 limits.conf 之后重启 sshd 服务
# 2.内核参数
修改 /etc/sysctl.conf 添加如下配置,修改完成后输入 sysctl -p 生效
cat >> /etc/sysctl.conf << EOF
#控制系统调试内核的功能,不同的值对应不同的功能:
#0 禁用 sysrq 组合键
#1 启用 sysrq 组合键
#2 启用控制台日志级别控制
#4 启用键盘控制(SAK、unraw)
#8 启用进程的调试信息输出等
#16 启用同步命令
#32 启用重新挂载为只读
#64 启用进程信号(终止、杀死、溢出杀死)
#128 允许重启、关机
#256 控制实时任务的优先级控制(nicing)
kernel.sysrq = 0
#尽量使用内存,减少使用磁盘交换分区,内存速度明显高于磁盘一个数量级
vm.swappiness = 0
vm.max_map_count=262144
#避免放大攻击
net.ipv4.icmp_echo_ignore_broadcasts = 1
#开启恶意 ICMP 错误消息保护
net.ipv4.icmp_ignore_bogus_error_responses = 1
#开启 SYN 洪水攻击保护
net.ipv4.tcp_syncookies = 1
#开启并记录欺骗,源路由和重定向包
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1
#处理无源路由的包
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
#开启反向路径过滤
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
#启用转发
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
#确保无人能修改路由表
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
#开启 execshild
kernel.exec-shield = 1
kernel.randomize_va_space = 1
#IPv6 设置
net.ipv6.conf.default.router_solicitations = 0
net.ipv6.conf.default.accept_ra_rtr_pref = 0
net.ipv6.conf.default.accept_ra_pinfo = 0
net.ipv6.conf.default.accept_ra_defrtr = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.default.dad_transmits = 0
net.ipv6.conf.default.max_addresses = 1
#优化 LB 使用的端口
#增加系统文件描述符限制
fs.file-max = 65535
#允许更多的 PIDs (减少滚动翻转问题)
kernel.pid_max = 65536
#增加系统 IP 端口限制
net.ipv4.ip_local_port_range = 5000 65535
#FIN-WAIT-2 状态超时时间
net.ipv4.tcp_fin_timeout = 30
#保持 TIME_WAIT 状态的最大数量
net.ipv4.tcp_max_tw_buckets = 32768
#开启 TCP 连接中 TIME_WAIT 套接字的快速回收
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tw_recycle = 1
#Linux 4.1 内核删除
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
#Keepalive 生效时,发送 TCP 消息的频度
net.ipv4.tcp_keepalive_time = 1200
#TCP Socket
net.ipv4.tcp_mem = 64608 86144 129216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_window_scaling = 1
EOF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# 3.内存阈值
修改 /etc/rc.local 文件
#无内存过量使用处理策略,使用这个设置会增大内存超载的可能性,但也可以增强大量使用内存任务的性能
echo 1 > /proc/sys/vm/overcommit_memory
#设置最大连接队列
echo 8192 > /proc/sys/net/core/somaxconn
#禁用大页内存
echo never > /sys/kernel/mm/transparent_hugepage/enabled
reboot
1
2
3
4
5
6
7
2
3
4
5
6
7
# 三、工具依赖
#编译依赖
yum install gcc gcc-c++ openssl openssl-devel pcre pcre-devel zlib zlib-devel patch make
#调试
yum install vim zip unzip tar net-tools telnet curl wget fontconfig lrzsz
1
2
3
4
2
3
4
网页编辑 (opens new window)
最近提交: 2023/03/22, 11:52:35