1. Linux系统优化
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
。
其他可选配置
- 精简开机启动服务,建议开启的服务crond,network,syslog,sshd、iptables、udev-post、sysstat
systemctl list-unit-files --type=service|grep enabled
- 修改语言环境
vim /etc/locale.conf
LANG="en_US.UTF-8"
- 更新软件包
yum update -y
- 禁止Linux系统被ping
echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf
sysctl -p
- 定时自动清理邮件临时目录垃圾文件,防止磁盘的inodes数被小文件占满
find /var/spool/postfix/maildrop/ -type f |xargs rm -rf
- 锁定一些关键文件,放置被删除
chattr +i file
- 对于一些分区,可以在挂载时选择noexec,nosuid选项
/dev/sda1 /tmp xfs default,noexec,nosuid 0 0
- 设置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系统优化的更多相关文章
- Linux系统优化及基础命令
1.Linux系统优化及基础命令 2. vim编辑器 vim 操作命令 在命令模式下操作 pageup 往上翻页(重要指数****)pagedown 往下翻页(重要指数****)H 移动到屏幕首行gg ...
- linux系统优化基础
linux系统优化基础 tags: linux 优化 kingle---### 1, 查看centos版本:cat etc/redhat-release 看看centos架构信息:uname -m 查 ...
- Linux 系统优化-workstation实践
Linux 系统优化 关闭SELinux [root@workstation ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/seli ...
- Linux系统优化
前言:这篇博客主机讲下安装Linux系统后调优及安全设置 基础环境 一.使用网易163镜像做yum源 默认国外的yum源速度很慢,所以换成国内的. 先备份 下载163yum源:http://mirro ...
- Linux系统优化脚本
#!/bin/bash ############################################################################## # File Na ...
- linux 系统优化+定时任务
安装软件 通过yum安装 自动补全工具:yum completion yum install -y tree bash-completion wget vim find -[TAB] 更改系统的yum ...
- 五、Centos linux系统优化-实战
一.linux用户名和密码远程登陆的修改: windows默认的远程端口和管理员:user:administrator prot:3389在管理--->本地用户和组 进行权限设置或者修 ...
- 四、Centos linux系统优化
1. 无论是哪个版本的linux,都会提供32位和64位的两个版本的镜像. i386为32位 x86_64为64位 两者的区别: 1)目标:需要大量的内存需求的行业为64位,普通用户的需求为3 ...
- Linux系统优化之网络IO调优
修改 vi /etc/sysctl.conf后执行命令 sysctl -p立即生效 首先,系统的不同也会导致 /etc/下的 文件的不同,原本powerpc 环境下 在 /etc/init.d/下有个 ...
- 007 Linux系统优化进阶
一.更改 ssh 服务远程登录的配置 windows:默认远程端口和管理员用户 管理员:administrator port :3389 Linux:远程连接默认端口和超级用户 管理员:root ...
随机推荐
- .net Core使用sql语句实现批量修改数据状态
上图为查出的所有满足条件的数据,要选中若干条数据将其状态设置为作废 一共选中6条数据,当点击确认后修改数据状态. 前端代码 1.安装NuGet包 [Abp.Dapper]于EFCore中, 2.创建文 ...
- excel如何写宏?如何用按钮?
注:本次测试版本 excel版本2019 写宏? 准备工作(使用宏的一切前提)===========文件-选项-自定义功能区 (勾选开发工具) 开始写宏=======右击sheet1--查看代码 ...
- Linux下mv命令高级用法
mv 也是 Linux 下一个使用频率非常高的命令,但除了一些基本用法,你还知道它的哪些高级用法呢? 1. 基本用法 移动一个/多个文件: 移动一个/多个目录: 重命名文件/目录. 这些都是很基本的用 ...
- 手把手教你使用VUE+SpringMVC+Spring+Mybatis+Maven构建属于你自己的电商系统之vue后台前端框架搭建——猿实战01
猿实战是一个原创系列文章,通过实战的方式,采用前后端分离的技术结合SpringMVC Spring Mybatis,手把手教你撸一个完整的电商系统,跟着教程走下来,变身猿人找到工作不是 ...
- Asp.net Core 3.1 引用ORM工具包 yrjw.ORM.Chimp(EF + dapper + Autofac)使用教程
yrjw.ORM.Chimp 介绍 It is not the encapsulation of ORM,a based on EF + dapper + Autofac, is repository ...
- JavaScript学习系列博客_7_JavaScript中的逻辑运算符、三元运算符
逻辑运算符 ! 非 - 非运算可以对一个布尔值进行取反,true变false false边true - 当对非布尔值使用!时,会先将其转换为布尔值然后再取反 - 我们可以利用 !! 来将其他的数据类型 ...
- openvswitch 流表操作
流表组成 每条流表规则由一些列字段组成,可以分为**基础字段.匹配字段和动作字段**三部分. 在打印流表时,在流表中还存在一些显示字段,如duration,idle_age等,此处把这些字段也暂时归之 ...
- Build PhantomJS from Source
Getting the Code To obtain the code using Git from the official repository github.com/ariya/phantomj ...
- DVWA之文件上传(一)
实验环境为三台虚拟机,网络互通,分别是: 1.kali,IP为192.168.230.131 2.win10,IP为192.168.230.142 3.server 2019,IP为192.168.2 ...
- App 自动化,Appium 凭什么使用 UiAutomator2?
1. UiAutomator2 是什么 可能很多人对 UiAutomator2 和 UiAutomator 傻傻分不清楚 UiAutomator 是 Google 开发的一款运行在 Android 设 ...