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. 实型(浮点型):float、double

    #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib. ...

  2. ElasticSearch 7.8.1集群搭建

    通往集群的大门 集群由什么用? 高可用 高可用(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间.如果系统每运行100个时间 ...

  3. webpack打包原理

    什么是 webpack ? 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler).当 webpack 处理应用程序时,它会递归地构建一个依 ...

  4. 报错:org.apache.ibatis.type.TypeException: Could not resolve type alias 'com.deppon.gis.module.job.server.server.impl.HaoDuanEntity'.

  5. Dataway与SpringBoot集成干掉后台开发

    Dataway与SpringBoot集成干掉后台开发 Dataway让SpringBoot不在需要Controller.Service.DAO.Mapper了. 第一步:引入相关依赖 <depe ...

  6. Linux C++实现一服务器与多客户端之间的通信

    通过网络查找资料得到的都是一些零碎不成体系的知识点,无法融会贯通.而且需要筛选有用的信息,这需要花费大量的时间.所以把写代码过程中用到的相关知识的博客链接附在用到的位置,方便回顾. 1.程序流程 服务 ...

  7. 第3章 SparkSQL解析

    第3章 SparkSQL解析 3.1 新的起始点SparkSession 在老的版本中,SparkSQL提供两种SQL查询起始点,一个叫SQLContext,用于Spark自己提供的SQL查询,一个叫 ...

  8. golang IPv6 转 十进制

    IPv4 互换: package main import ( "fmt" "math/big" "net" ) func InetNtoA( ...

  9. 什么是RPC,RPC好处,常用的RPC框架

    RPC简介 RPC(Remote Procedure Call Protocol)远程过程调用协议.一个通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应用 ...

  10. wc.exe程序

    1.gitHub地址:https://github.com/loveYuJun/wc.exe.git 2.PSP表格 psp2.1 Personal Software Process Stages 预 ...