Linux 系统生产环境配置指南
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 系统生产环境配置指南相关的知识,希望对你有一定的参考价值。
1.服务器基本配置
1、物理服务器使用RAID1或RAID10磁盘配置,虚拟服务器不受此限制
2、物理服务器操作系统使用整体物理硬盘
3、虚拟服务器系统盘80G,数据盘按业务需求新增并附加
2.安装步骤及注意事项
2.1.系统安装
最小化安装系统,安装基本的开发组件,不安装图形界面
2.2.配置软件源
配置升级使用阿里云资源,包括EPEL资源
https://opsx.alibaba.com/mirror
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 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 curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum install https://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm yum install https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.1-1.el7.x86_64.rpm yum makecache yum update |
2.3.安全设置
默认启动防火墙,禁用selinux,添加时间同步
yum install vim wget iftop lsof ntpdate systemctl enable firewalld systemctl start firewalld vim /etc/selinux/config crontab -e 00 00 * * * /usr/sbin/ntpdate 192.168.0.1 #每天0点定期更新 |
3.其他软件安装
3.1.zabbix
使用上面的资源安装zabbix
https://mirrors.cloud.tencent.com/mysql/yum/mysql-8.0-community-el7-x86_64/mysql80-community-release-el7-3.noarch.rpm vi /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.1 CentOS repository list - created 2016-12-31 08:44 UTC # http://downloads.mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://mirrors.aliyun.com/mariadb/yum/10.3/centos7-amd64 gpgkey = http://mirrors.aliyun.com/mariadb/yum//RPM-GPG-KEY-MariaDB gpgcheck = 1 |
3.3.容器安装
# step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # Step 2: 添加软件源信息 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Step 3: 更新并安装 Docker-CE sudo yum makecache fast sudo yum -y install docker-ce # Step 4: 开启Docker服务 sudo service docker start
注意:其他注意事项在下面的注释中 # 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,你可以通过以下方式开启。同理可以开启各种测试版本等。 # vim /etc/yum.repos.d/docker-ce.repo # 将 [docker-ce-test] 下方的 enabled=0 修改为 enabled=1 # # 安装指定版本的Docker-CE: # Step 1: 查找Docker-CE的版本: # yum list docker-ce.x86_64 --showduplicates | sort -r # Loading mirror speeds from cached hostfile # Loaded plugins: branch, fastestmirror, langpacks # docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable # docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable # docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable # Available Packages # Step2 : 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.0.ce.1-1.el7.centos) # sudo yum -y install docker-ce-[VERSION] # 注意:在某些版本之后,docker-ce安装出现了其他依赖包,如果安装失败的话请关注错误信息。例如 docker-ce 17.03 之后,需要先安装 docker-ce-selinux。 # yum list docker-ce-selinux- --showduplicates | sort -r # sudo yum -y install docker-ce-selinux-[VERSION]
# 通过经典网络、VPC网络内网安装时,用以下命令替换Step 2中的命令 # 经典网络: # sudo yum-config-manager --add-repo http://mirrors.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo # VPC网络: # sudo yum-config-manager --add-repo http://mirrors.could.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo |
3.4.高版本 gcc
yum install centos-release-scl scl-utils-build yum list all --enablerepo=centos-sclo-rh yum list all --enablerepo=centos-sclo-rh | grep "devtoolset-" yum install -y devtoolset-8-toolchain scl enable devtoolset-8 bash gcc --version |
3.5.npm 源
curl -sL https://rpm.nodesource.com/setup_12.x | bash - yum install nodejs npm config set registry https://registry.npm.taobao.org npm config ls |
3.6.github 加速
通过直接解析 github 的 CDN 地址实现加速访问。
yum -y install bind-utils nslookup github.global.ssl.fastly.net nslookup github.com vim /etc/hosts |
3.7.Golang 加速
go env -w GO111MODULE=on go env -w GOPROXY="https://goproxy.io,direct" |
3.8.安装 yarn
完成 npm 安装后,通过 npm 方式安装。
3.9.git 版本升级
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc gcc perl-ExtUtils-MakeMaker wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.27.0.tar.gz tar zxvf git-2.27.0.tar.gz make prefix=/usr/local/git all yum remove git make prefix=/usr/local/git install echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile source /etc/profile |
4.参考内容
4.1.fs 参数
fs 参数主要是调整系统的文件打开数,适用与文件交互频繁的系统场景,例如 Oracle 数据库服务器或 nginx 代理服务器。
cat > /etc/sysctl.d/99-fs.conf <<EOF # 最大文件句柄数 fs.file-max=1048576 # 最大文件打开数 fs.nr_open=1048576 # 同一时间异步IO请求数 fs.aio-max-nr=1048576 # 在CentOS7.4引入了一个新的参数来控制内核的行为。 # /proc/sys/fs/may_detach_mounts 默认设置为0 # 当系统有容器运行的时候,需要将该值设置为1。 fs.may_detach_mounts=1 EOF |
4.2.vm 参数
vm 参数用于优化 vmware 虚拟机的系统配置
cat > /etc/sysctl.d/99-vm.conf <<EOF # 内存耗尽才使用swap分区 vm.swappiness=10 # 当内存耗尽时,内核会触发OOM killer根据oom_score杀掉最耗内存的进程 vm.panic_on_oom=0 # 允许overcommit vm.overcommit_memory=1 # 定义了进程能拥有的最多内存区域,默认65536 vm.max_map_count=262144 EOF |
4.3.net 参数
net 参数主要用于调整系统的网络参数
cat > /etc/sysctl.d/99-net.conf <<EOF # 二层的网桥在转发包时也会被iptables的FORWARD规则所过滤 net.bridge.bridge-nf-call-arptables=1 net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-ip6tables=1 # 关闭严格校验数据包的反向路径,默认值1 net.ipv4.conf.default.rp_filter=0 net.ipv4.conf.all.rp_filter=0 # 进程间通信发送数据, 默认100 net.unix.max_dgram_qlen=512 # 设置 conntrack 的上限 net.netfilter.nf_conntrack_max=1048576 # 设置连接跟踪表中处于TIME_WAIT状态的超时时间 net.netfilter.nf_conntrack_tcp_timeout_timewait=30 # 设置连接跟踪表中TCP连接超时时间 net.netfilter.nf_conntrack_tcp_timeout_established=1200 # 端口最大的监听队列的长度 net.core.somaxconn=21644 # 接收自网卡、但未被内核协议栈处理的报文队列长度 net.core.netdev_max_backlog=262144 # 系统无内存压力、启动压力模式阈值、最大值,单位为页的数量 #net.ipv4.tcp_mem=1541646 2055528 3083292 # 内核socket接收缓存区字节数min/default/max net.core.rmem=4096 65536 8388608 # 内核socket发送缓存区字节数min/default/max net.core.wmem=4096 65536 8388608 # 开启自动调节缓存模式 net.ipv4.tcp_moderate_rcvbuf=1 # TCP阻塞控制算法BBR,Linux内核版本4.9开始内置BBR算法 #net.ipv4.tcp_congestion_control=bbr #net.core.default_qdisc=fq # 用作本地随机TCP端口的范围 net.ipv4.ip_local_port_range=10000 65000 # 打开ipv4数据包转发 net.ipv4.ip_forward=1 # 允许应用程序能够绑定到不属于本地网卡的地址 net.ipv4.ip_nonlocal_bind=1 # 系统中处于 SYN_RECV 状态的 TCP 连接数量 net.ipv4.tcp_max_syn_backlog=16384 # 内核中管理 TIME_WAIT 状态的数量 net.ipv4.tcp_max_tw_buckets=5000 # 指定重发 SYN/ACK 的次数 net.ipv4.tcp_synack_retries=2 # TCP连接中TIME_WAIT sockets的快速回收 # 4.12内核版本开始移除了 tcp_tw_recycle net.ipv4.tcp_tw_recycle=0 # 不属于任何进程的tcp socket最大数量. 超过这个数量的socket会被reset, 并告警 net.ipv4.tcp_max_orphans=1024 # TCP FIN报文重试次数 net.ipv4.tcp_orphan_retries=8 # 加快系统关闭处于 FIN_WAIT2 状态的 TCP 连接 net.ipv4.tcp_fin_timeout=15 # TCP连接keepalive的持续时间,默认7200 net.ipv4.tcp_keepalive_time=600 # TCP keepalive探测包发送间隔 net.ipv4.tcp_keepalive_intvl=30 # TCP keepalive探测包重试次数 net.ipv4.tcp_keepalive_probes=10 # TCP FastOpen # 0:关闭 ; 1:作为客户端时使用 ; 2:作为服务器端时使用 ; 3:无论作为客户端还是服务器端都使用 net.ipv4.tcp_fastopen=3 # 限制TCP重传次数 net.ipv4.tcp_retries1=3 # TCP重传次数到达上限时,关闭TCP连接 net.ipv4.tcp_retries2=15 EOF |
4.4.修改limits参数
cat > /etc/security/limits.d/99-centos.conf <<EOF * - nproc 1048576 * - nofile 1048576 root - nproc 1048576 root - nofile 1048576 EOF |
4.5.修改journal设置
sed -e s,^#Compress=yes,Compress=yes, \\ -e s,^#SystemMaxUse=,SystemMaxUse=2G, \\ -e s,^#Seal=yes,Seal=yes, \\ -e s,^#RateLimitBurst=1000,RateLimitBurst=5000, \\ -i /etc/systemd/journald.conf |
4.6.修改终端提示符
export PS1="[\\t]\\[$(tput setaf 1)\\][\\u@\\h:\\W]\\[$(tput setaf 7)\\]\\\\$ \\[$(tput sgr0)\\]" echo export PS1="[\\t]\\[$(tput setaf 1)\\][\\u@\\h:\\W]\\[$(tput setaf 7)\\]\\\\$ \\[$(tput sgr0)\\]" >> ~/.bashrc |
4.7.修改网卡配置信息
CentOS安装设置网卡后,会添加很多不需要的字段,例如UUID、HWADDR什么的
删减后字段信息如下
cat /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet BOOTPROTO=none NAME=ens33 DEVICE=ens33 ONBOOT=yes IPADDR=172.16.80.200 NETMASK=255.255.255.0 GATEWAY=172.16.80.2 DNS1=114.114.114.114 NM_CONTROLLED=no USERCTL=no |
4.8.配置 lvs 模块
LVS的调度算法简介
cat > /etc/modules-load.d/ipvs.conf <<EOF ip_vs # 负载均衡调度算法-最少连接 ip_vs_lc # 负载均衡调度算法-加权最少连接 ip_vs_wlc # 负载均衡调度算法-轮询 ip_vs_rr # 负载均衡调度算法-加权轮询 ip_vs_wrr # 源地址散列调度算法 ip_vs_sh EOF |
4.9.配置连接状态跟踪模块
cat > /etc/modules-load.d/nf_conntrack.conf <<EOF nf_conntrack nf_conntrack_ipv4 #nf_conntrack_ipv6 EOF |
4.10.配置 kvm 模块
cat > /etc/modules-load.d/kvm.conf <<EOF # Intel CPU开启嵌套虚拟化 options kvm-intel nested=1 options kvm-intel enable_shadow_vmcs=1 options kvm-intel enable_apicv=1 options kvm-intel ept=1
# AMD CPU开启嵌套虚拟化 #options kvm-amd nested=1 EOF |
5.内核更新
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgyum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
yum list available --disablerepo=* --enablerepo=elrepo-kernel
yum -y install kernel-lt-4.4.241-1.el7.elrepo --enablerepo=elrepo-kernel
以上是关于Linux 系统生产环境配置指南的主要内容,如果未能解决你的问题,请参考以下文章
容器指南之自定义LNMP容器镜像
RabbitMQ生产部署指南
L09-10老男孩Linux运维实战培训-Nginx服务生产实战应用指南05(架构解决方案)
对刚装好系统的Linux系统配置软件开发生产环境,让你开发效率一飞冲天!
20171109L09-02老男孩Linux运维实战培训-Lamp系列-Apache服务生产实战应用指南05-基于端口的
Linux使用:环境变量指南和CPU和GPU利用情况查看