侧边栏壁纸
  • 累计撰写 7 篇文章
  • 累计创建 14 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

CentOS基础设置和优化

Shihd
2024-02-06 / 0 评论 / 0 点赞 / 62 阅读 / 0 字 / 正在检测是否收录...

设置默认语言和字符编码

# root用户执行
# 默认语言设置为简体中文(zh_CN),字符编码为UTF-8
# 方式一,无需重启
echo "" >> /etc/profile
echo "export LANG='zh_CN.UTF-8'" >> /etc/profile

# 方式二,需重启
localectl set-locale LANG=zh_CN.UTF-8

设置shell历史记录的最大条目数

# root用户执行
echo "" >> /etc/profile
echo "export HISTSIZE=12000" >> /etc/profile

设置进程的资源限制

# root用户执行
# S表示软限制(soft limit),用户可以超过的限制,但在超过一定时间后,系统会尝试减少进程数量
# H表示硬限制(hard limit),用户无法超过的限制
# n表示文件描述符(file descriptor)限制
echo "" >> /etc/profile
echo "ulimit -SHn 65536" >> /etc/profile

# nproc:创建的进程数量
# nofile: 打开的文件数量
# shd用户
echo "shd soft nproc 16384" >> /etc/security/limits.conf
echo "shd hard nproc 16384" >> /etc/security/limits.conf
echo "shd soft nofile 65536" >> /etc/security/limits.conf
echo "shd hard nofile 65536" >> /etc/security/limits.conf

设置提示符外观

# root用户执行
# \u表示当前用户名,\h表示主机名,\w表示当前工作目录。
echo "" >> /etc/profile
echo "export PS1='[\u@\h \w]$'" >> /etc/profile

设置MOTD

# root用户执行
# MOTD(Message of the Day):每日箴言
# 当用户通过SSH登录到系统时,MOTD文件的内容会自动显示在用户的终端上
vim /etc/motd

# 也可以通过echo的方式写入
echo -e "\033[1;33m" >> /etc/motd
echo -e "提示内容" >> /etc/motd
echo -e "\033[0m" >> /etc/motd

设置源

# root用户执行
# 备份
mkdir /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup

# 阿里云CentOS 7镜像仓库
wget http://mirrors.aliyun.com/repo/Centos-7.repo -O /etc/yum.repos.d/Centos-7.repo

# 网易CentOS 7镜像仓库
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo -O /etc/yum.repos.d/CentOS7-Base-163.repo

# 刷新
yum update

安装vim、lsof等基础软件

# root用户执行
# vim:功能强大的文本编辑器
# lsof:列出打开文件的实用程序
# curl:用于从服务器获取或向服务器发送数据的命令行工具
# telnet:用于远程登录主机的网络协议
# ntp:网络时间协议,用于同步系统时间
# wget:用于从网络上下载文件的工具
# iputils:用于诊断网络问题的工具,包括ping、tracepath和traceroute
# traceroute:用于显示数据包在网络中传输路径的工具
yum install -y vim lsof curl telnet ntp wget iputils traceroute

设置主机名

# root用户执行
hostnamectl set-hostname 主机名

设置时区

# root用户执行
timedatectl set-timezone Asia/Shanghai

设置时间同步

# root用户执行
# 添加新server配置
echo "" >> /etc/ntp.conf
echo "server ntp1.aliyun.com prefer" >> /etc/ntp.conf
echo "server ntp2.aliyun.com" >> /etc/ntp.conf

# 启动服务
systemctl start ntpd

# 设置开机自启动
systemctl enable ntpd

关闭selinux

# root用户执行
# 设置为SELINUX=disabled
vi /etc/sysconfig/selinux

设置网络相关

# root用户执行
echo "" >> /etc/sysctl.conf
# 套接字接收缓冲区的默认大小(单位字节)
echo "net.core.rmem_default=262144" >> /etc/sysctl.conf
# 套接字接收缓冲区的最大大小(单位字节)
echo "net.core.rmem_max=4194304" >> /etc/sysctl.conf
# 套接字发送缓冲区的默认大小(单位字节)
echo "net.core.wmem_default=262144" >> /etc/sysctl.conf
# 套接字发送缓冲区的最大大小(单位字节)
echo "net.core.wmem_max=1048576" >> /etc/sysctl.conf
# 系统允许的最大TCP监听队列长度
echo "net.core.somaxconn=8192" >> /etc/sysctl.conf

echo "" >> /etc/sysctl.conf
# 系统允许的最大异步I/O(AIO)事件数
echo "fs.aio-max-nr=1048576" >> /etc/sysctl.conf
# 系统允许的最大文件描述符数量
echo "fs.file-max=6815744" >> /etc/sysctl.conf

echo "" >> /etc/sysctl.conf
# 内核在遇到Oops时是否发生panic,1表示会panic
# panic是指操作系统遇到一个无法处理的错误或异常情况时,强制关闭系统并生成一个panic日志
# 日志通常保存在/var/log/messages或/var/log/syslog文件中
# 异常通常是由于内核或硬件故障、软件错误或系统资源耗尽等原因导致的
echo "kernel.panic_on_oops=1" >> /etc/sysctl.conf
# 系统中可用的信号量(semaphore)数量
# SEMMSL表示系统中可用的信号量集的最大数量
# SEMMNS表示系统中可用的信号量的最大数量
# SEMOPM表示单个进程可以同时执行的信号量操作的最大数量
# SEMVMX表示信号量的最大值
echo "kernel.sem=4096 128000 64  512" >> /etc/sysctl.conf

echo "" >> /etc/sysctl.conf
# TCP连接在空闲多长时间后发送keepalive探测消息(单位秒)
echo "net.ipv4.tcp_keepalive_time=600" >> /etc/sysctl.conf
# 本地TCP和UDP端口的范围
echo "net.ipv4.ip_local_port_range=10000 65000" >> /etc/sysctl.conf
# 允许正在等待接受的TCP连接的最大数量
echo "net.ipv4.tcp_max_syn_backlog=8192" >> /etc/sysctl.conf
# 系统允许的最大TCP时间等待(TIME_WAIT)状态的连接数
echo "net.ipv4.tcp_max_tw_buckets=5000" >> /etc/sysctl.conf
# 默认路由器接收到的数据包的源地址检查,1表示启动接收路径过滤
echo "net.ipv4.conf.default.rp_filter=1" >> /etc/sysctl.conf
# 设置所有网络接口接收到的数据包的源地址检查,0表示禁用接收路径过滤
echo "net.ipv4.conf.all.rp_filter=0" >> /etc/sysctl.conf
# 是否忽略所有ICMP回显请求,0表示不忽略,即允许ping
echo "net.ipv4.icmp_echo_ignore_all=0" >> /etc/sysctl.conf

echo "" >> /etc/sysctl.conf
# 禁用所有网络接口的IPv6
echo "net.ipv6.conf.all.disable_ipv6=1" >> /etc/sysctl.conf
# 禁用默认网络接口的IPv6
echo "net.ipv6.conf.default.disable_ipv6=1" >> /etc/sysctl.conf
# 禁用本地回环接口的IPv6
echo "net.ipv6.conf.lo.disable_ipv6=1" >> /etc/sysctl.conf

# 刷新
sysctl -p

设置SSH

# root用户执行
echo "" >> /etc/ssh/sshd_config
# SSH登录端口
echo "Port 11028" >> /etc/ssh/sshd_config
# 禁止root用户通过SSH登录
echo "PermitRootLogin no" >> /etc/ssh/sshd_config
# 每600秒向客户端发送一次保持连接的信号
echo "ClientAliveInterval 600" >> /etc/ssh/sshd_config
# 客户端没有响应保持连接信号时,最多尝试0次重新连接
echo "ClientAliveCountMax 0" >> /etc/ssh/sshd_config
# 允许客户端最多尝试4次身份验证
echo "MaxAuthTries 4" >> /etc/ssh/sshd_config
# 禁止使用空密码进行身份验证
echo "PermitEmptyPasswords no" >> /etc/ssh/sshd_config
# 启用基于密码的身份验证
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
# 密码有效期(单位天)
echo "PasswordExpirationDays 30" >> /etc/ssh/sshd_config

# 重启服务
systemctl restart sshd

安装docker

# shd用户执行
# 安装
sudo yum install -y docker

# 验证查看版本
docker version

# 创建docker组
sudo groupadd docker

# 将shd用户添加到docker组
sudo gpasswd -a shd docker

# 切换到docker组
newgrp docker

# 启动docker
sudo systemctl start docker

# 开机自启动
sudo systemctl enable docker

安装docker-compose

下载docker-compose二进制文件上传到服务器/usr/local/bin目录,并命名为docker-compose

# shd用户执行
# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证查看版本
docker-compose version

更新docker

# shd用户执行
# 卸载旧版本
sudo yum -y remove docker docker-common docker-selinux docker-engine

# 安装系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 创建一个新的软件包元数据缓存
sudo yum makecache fast

# 安装
sudo yum -y install docker-ce

# 启动docker
sudo systemctl start docker

# 开机自启动
sudo systemctl enable docker

安装mail

下载证书上传到服务器/etc/pki/nssdb目录,并命名为GlobalSign_Root_CA.cer

# root用户执行
# 安装服务
yum install -y sendmail mailx

# 配置邮箱相关信息
echo "set bsdcompat" >> /etc/mail.rc
echo "set from=邮箱地址" >> /etc/mail.rc
echo "set smtp=smtps服务器" >> /etc/mail.rc
echo "set smtp-auth-user=邮箱用户名" >> /etc/mail.rc
echo "set smtp-auth-password=邮箱密码" >> /etc/mail.rc
echo "set smtp-auth=login" >> /etc/mail.rc
echo "set ssl-verify=ignore" >> /etc/mail.rc
echo "set nss-config-dir=/etc/pki/nssdb/" >> /etc/mail.rc

# 创建相关文件夹
mkdir -p /etc/pki/nssdb/
chmod g+rx /etc/pki/nssdb/
chmod o+rx /etc/pki/nssdb/

# 证书相关
certutil -L -d /etc/pki/nssdb/
echo -n | openssl s_client -connect smtp.mxhichina.com:465
echo -n | openssl s_client -connect smtp.mxhichina.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /etc/pki/nssdb/mxhichina.com.crt
certutil -A -n "*.mxhichina.com" -t "C,," -d /etc/pki/nssdb/ -i /etc/pki/nssdb/mxhichina.com.crt
curl http://secure.globalsign.com/cacert/gsorganizationvalsha2g2r1.crt -o /etc/pki/nssdb/gsorganizationvalsha2g2r1.crt
certutil -A -n "GlobalSign Organization Validation CA - SHA256 - G2" -t "C,," -d /etc/pki/nssdb/ -i /etc/pki/nssdb/gsorganizationvalsha2g2r1.crt
certutil -A -n "GlobalSign Root CA" -t "C,," -d /etc/pki/nssdb/ -i /etc/pki/nssdb/GlobalSign_Root_CA.cer

# 测试
echo "FYI" | mail -s "test" 收件邮箱地址

配置防火墙

# root用户执行
# 启动防火墙
systemctl start firewalld

# 放行80、443和10212端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=10212/tcp --permanent

# 关闭防火墙
sudo systemctl stop firewalld

# 禁止自启动
sudo systemctl disable firewalld

0

评论区