1. 系统安装

本着纯净系统的原则,我们在安装系统时,应选择minimal install选项,来执行最小化安装,以便有需要时,安装我们需要的安装软件包。

操作系统为CentOS7.3 1611

下载地址:

https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-Everything-1611.iso

2. 修改yum源,并安装常用软件

由于系统的yum源并不能每次都选择到国内的yum源进行安装,影响安装效率,可以替换为国内的yum源,进行使用,当然我们有条件,也可以自己定制自己的yum服务器进行安装。

yum -y install wget
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum -y install vim net-tools lrzsz bash-completion rsync sysstat git chrony

3. 清除系统信息

> /etc/issue
> /etc/motd

4. 设置主机名

hostnamectl set-hostname  myserver.com
sed -i '$a10.0.7.100 myserver.com' /etc/hosts

5. 关闭防火墙和SELinux

systemctl disable firewalld
sed -ri 's@^(SELINUX=).*@\1disabled@g' /etc/selinux/config

6. 开启时钟同步

systemctl enable chronyd
#重启之后,验证是否启动
chronyc sources -v

7. 添加普通用户登陆系统

useradd xiaohou
echo "123456"|passwd --stdin xiaohou

8. 用户sudo授权

visudo

#设置一个命令别名
Cmnd_Alias SHUTDOWN = /sbin/halt, /sbin/shutdown, /sbin/poweroff, /sbin/reboot, /sbin/init
#对用户xiaohou进行授权,面密码进行一些操作,可以把ALL替换为你想要的命令路径
xiaohou ALL=(root) NOPASSWD:ALL,!SHUTDOWN
#sudo的日志记录
Defaults logfile=/var/log/sudo.log
Defaults !syslog

9. SSH设置

cat >> /etc/ssh/sshd_config <<EOF
#监听的IP和端口
Port 10022
ListenAddress 0.0.0.0
#禁止root远程登陆
PermitRootLogin no
#重试次数
MaxAuthTries 3
#SSH的最大连接数
MaxSessions 10
#禁止空密码用户登陆
PermitEmptyPasswords no
#禁止DNS和GSSAPI认证,加速响应
UseDNS no
GSSAPIAuthentication no
EOF

10. 命令历史记录和超时环境变量设置

cat >> ~/.bashrc << EOF
# ~/.bash_history的文件大小
export HISTFILESIZE=5000000
# 滚动保存的历史命令条目数
export HISTSIZE=10000
# 实时记录历史命令,默认只有在用户退出之后才会统一记录,容易造成多个用户间的相互覆盖。
export PROMPT_COMMAND="history -a"
# 记录每条历史命令的执行时间
export HISTTIMEFORMAT="%F %T $(whoami) "
EOF

11. ulimit优化

#打开文件数
cat >> /etc/security/limits.conf <<EOF
* soft nofile 100000
* hard nofile 100000
* - nproc 1024000
EOF
#打开进程数
cat >> /etc/security/limits.d/20-nproc.conf <<EOF
* soft nproc 10000
root soft nproc unlimited
EOF

12. 内核参数优化

cat >> /etc/sysctl.conf <<EOF
#所有用户打开文件描述符的总和
fs.file-max = 1000000
#修改防火墙连接数
net.netfilter.nf_conntrack_max=655360
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
#关闭ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
#关闭路由转发
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
#关闭组合键功能
kernel.sysrq = 0
#使用swap的概率
vm.swappiness = 10
#开启TCP连接中time_wait sockets的快速回收
net.ipv4.tcp_tw_recycle = 1
#timewait的数量,默认是180000
net.ipv4.tcp_max_tw_buckets = 6000
#开启TCP连接复用功能,允许将time_wait sockets重新用于新的TCP连接(主要针对time_wait连接)
net.ipv4.tcp_tw_reuse = 1
#1st低于此值,TCP没有内存压力,2nd进入内存压力阶段,3rdTCP拒绝分配socket(单位:内存页)
net.ipv4.tcp_mem = 94500000 915000000 927000000
#保持在FIN-WAIT-2状态的时间。
net.ipv4.tcp_fin_timeout = 15
#普通用户可使用的端口范围
net.ipv4.ip_local_port_range = 2048 65000
#arp抑制,lvs时用到
#net.ipv4.conf.lo.arp_ignore = 1
#net.ipv4.conf.lo.arp_announce = 2
#net.ipv4.conf.all.arp_ignore = 1
#net.ipv4.conf.all.arp_announce = 2
#当keepalive 起用的时候,TCP 发送keepalive 消息的频度。缺省是2小时
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 5
#开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理
net.ipv4.tcp_syncookies = 1
#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
net.core.netdev_max_backlog = 32768
#记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M内存的系统而言,缺省值是1024,小内存的系统则是128
net.ipv4.tcp_max_syn_backlog = 20000
#web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值
net.core.somaxconn = 32768
#为TCP socket预留用于发送缓冲的内存默认值(单位:字节)
net.core.wmem_default = 8388608
#为TCP socket预留用于发送缓冲的内存最大值(单位:字节)
net.core.wmem_max = 16777216
#为TCP socket预留用于接收缓冲的内存默认值(单位:字节)
net.core.rmem_default = 8388608
#为TCP socket预留用于接收缓冲的内存最大值(单位:字节)
net.core.rmem_max = 16777216
#时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉
net.ipv4.tcp_timestamps = 0
#系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。这个限制仅仅是为了防止简单的DoS攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)
net.ipv4.tcp_max_orphans = 3276800
#为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量
net.ipv4.tcp_synack_retries = 1
#在内核放弃建立连接之前发送SYN包的数量
net.ipv4.tcp_syn_retries = 1
EOF

13. VIM创建文件自动添加注释信息

添加至~/.vimrc中

autocmd BufNewFile *.py,*.sh exec ":call SetTitle()"
function! SetTitle()
if &filetype == 'sh'
call setline(1, "\#!/bin/bash")
call setline(2, "\# ******************************************************")
call setline(3, "\# Author: xiaohou")
call setline(4, "\# Email: xx@xx.com")
call setline(5, "\# Created Time : ".strftime("%c"))
call setline(6, "\# Last Modified: ")
call setline(7, "\# File Name: ".expand("%"))
call setline(8, "\# Description: ")
call setline(9, "\# ******************************************************")
normal G
endif
if &filetype == 'python'
call setline(1, "\#!/usr/bin/env python")
call setline(2, "\# ******************************************************")
call setline(3, "\# coding=utf8")
call setline(4, "\# Author: xiaohou")
call setline(5, "\# Email: xx@xx.com")
call setline(6, "\# Created Time : ".strftime("%c"))
call setline(7, "\# Last Modified: ")
call setline(8, "\# File Name: ".expand("%"))
call setline(9, "\# Version: ")
call setline(10,"\# Description: ")
call setline(11,"\# ******************************************************")
normal G
endif
endfunction
function! SetLastModifiedTime(lineno)
let modif_time = strftime("%c")
if a:lineno == "-1"
let line = getline(6)
else
let line = getline(a:lineno)
endif
if line =~ '^////\sLast Modified'
let line = substitute( line,':\s\+.*\d\{4\}', ':'.modif_time, "" )
else
let line = '# Last Modified: '.modif_time
endif
if a:lineno == "-1"
call setline(5, line)
else
call append(a:lineno, line)
endif
endfunction
au BufWrite *.py,*.sh call SetLastModifiedTime(-1)

唔,貌似不错,重启系统吧,reboot

其他可选配置

  1. 精简开机启动服务,建议开启的服务crond,network,syslog,sshd、iptables、udev-post、sysstat
systemctl list-unit-files --type=service|grep enabled
  1. 修改语言环境
vim /etc/locale.conf
LANG="en_US.UTF-8"
  1. 更新软件包
yum update -y
  1. 禁止Linux系统被ping
echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf
sysctl -p
  1. 定时自动清理邮件临时目录垃圾文件,防止磁盘的inodes数被小文件占满
find /var/spool/postfix/maildrop/ -type f |xargs rm -rf
  1. 锁定一些关键文件,放置被删除
chattr +i file
  1. 对于一些分区,可以在挂载时选择noexec,nosuid选项
/dev/sda1 /tmp xfs default,noexec,nosuid 0 0
  1. 设置eth0网卡
sed -ri 's@(GRUB_CMDLINE_LINUX=.*)"@\1 net.ifnames=0"@g' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
mv /etc/sysconfig/network-scripts/ifcfg-{ens32,eth0}
sed -i 's@ens32@eth0@g' /etc/sysconfig/network-scripts/ifcfg-eth0
rm /etc/udev/rules.d/70-persistent-ipoib.rules -f

1. Linux系统优化的更多相关文章

  1. Linux系统优化及基础命令

    1.Linux系统优化及基础命令 2. vim编辑器 vim 操作命令 在命令模式下操作 pageup 往上翻页(重要指数****)pagedown 往下翻页(重要指数****)H 移动到屏幕首行gg ...

  2. linux系统优化基础

    linux系统优化基础 tags: linux 优化 kingle---### 1, 查看centos版本:cat etc/redhat-release 看看centos架构信息:uname -m 查 ...

  3. Linux 系统优化-workstation实践

    Linux 系统优化 关闭SELinux [root@workstation ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/seli ...

  4. Linux系统优化

    前言:这篇博客主机讲下安装Linux系统后调优及安全设置 基础环境 一.使用网易163镜像做yum源 默认国外的yum源速度很慢,所以换成国内的. 先备份 下载163yum源:http://mirro ...

  5. Linux系统优化脚本

    #!/bin/bash ############################################################################## # File Na ...

  6. linux 系统优化+定时任务

    安装软件 通过yum安装 自动补全工具:yum completion yum install -y tree bash-completion wget vim find -[TAB] 更改系统的yum ...

  7. 五、Centos linux系统优化-实战

    一.linux用户名和密码远程登陆的修改: windows默认的远程端口和管理员:user:administrator    prot:3389在管理--->本地用户和组   进行权限设置或者修 ...

  8. 四、Centos linux系统优化

    1.     无论是哪个版本的linux,都会提供32位和64位的两个版本的镜像. i386为32位 x86_64为64位 两者的区别: 1)目标:需要大量的内存需求的行业为64位,普通用户的需求为3 ...

  9. Linux系统优化之网络IO调优

    修改 vi /etc/sysctl.conf后执行命令 sysctl -p立即生效 首先,系统的不同也会导致 /etc/下的 文件的不同,原本powerpc 环境下 在 /etc/init.d/下有个 ...

  10. 007 Linux系统优化进阶

    一.更改 ssh 服务远程登录的配置 windows:默认远程端口和管理员用户 管理员:administrator port :3389 Linux:远程连接默认端口和超级用户 管理员:root   ...

随机推荐

  1. CODING DevOps 代码质量实战系列最后一课,周四发车

    随着 ToB(企业服务)的兴起和 ToC(消费互联网)产品进入成熟期,线上故障带来的损失越来越大,代码质量越来越重要,而「质量内建」正是 DevOps 核心理念之一. <DevOps 代码质量实 ...

  2. 记一次生产环境tomcat线程数打满情况分析

    前言 旨在分享工作中遇到的各种问题及解决思路与方案,与大家一起学习. -- 学无止境, 加油 ! Just do it ! 问题描述 运行环境描述 tomcat-8.5 单节点(该应用集群20个节点) ...

  3. Ubuntu18.04 安装 Fabric & 使用 Fabric 测试网络

    前言: 本文介绍在 Ubuntu 18.04 中安装 Fabric, 并对 官方文档中的一个小案例(Using the Fabric test network)进行测试. 目的: 初步了解 Fabri ...

  4. C++生成元

    生成元对于正整数N,N的数字总和定义为N本身及其数字的总和.当M 是N的数字总和,我们称N为M的生成元. 例如,245的数字总和为256(= 245 + 2 + 4 + 5).因此,245是 256. ...

  5. SpringMVC实现客户端跳转

    之前无论是/index跳转到index.jsp 还是/addProduct 跳转到showProduct.jsp,都是服务端跳转. 这一篇练习如何进行客户端跳转 @ 目录 修改IndexControl ...

  6. java应用中的日志介绍

    日志在应用程序中是非常非常重要的,好的日志信息能有助于我们在程序出现 BUG 时能快速进行定位,并能找出其中的原因. 但是,很多介绍 AOP 的地方都采用日志来作为介绍,实际上日志要采用切面的话是极其 ...

  7. SparkStreaming简单例子(oldAPI)

    SparkStreaming简单例子 ◆ 构建第一个Streaming程序: (wordCount) ◆ Spark Streaming 程序最好以使用Maven或者sbt编译出来的独立应用的形式运行 ...

  8. oracle创建用户操作

    打开命令提示框输入以下内容 1.输入:sqlplus /nolog //进入oralce控制台2.输入:conn /as sysdba //以管理员权限登录3.输入:create user abc i ...

  9. 使用client-go自定义开发Kubernetes

    参考链接:使用client-go自定义开发Kubernetes 1.本地运行 apiserver demo [root@wangjq demo]# apiserver-boot run local / ...

  10. lx

    自我介绍:我是18软件技术5班 张震. -统计截止目前为止我自己写过代码3000行,我希望在本课结束后累计到10000行代码, 选择自测题17分,错题大多是运算符和运算符先 后级一类的题,编程题不会, ...