# 查看操作系统版本

查看版本:
cat /etc/issue
查看centos版本:
cat /etc/redhat-release
1
2
3
4

# 查看硬盘使用情况

df -h
1

# 查看分区和磁盘

lsblk
1

# 安装依赖包

yum install make cmake lsof libxml2 libxml2-devel expat-devel gcc gcc-c++  pcre-devel openssl-devel gd-devel ncurses-devel libtirpc-devel cairo cups-libs
# 如果还需要安装网络命令工具,则执行:
yum install net-tools
1
2
3

# 更改内核参数

echo "kernel.shmmni = 4096" >> /etc/sysctl.conf
echo "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf
#表示用于向外连接的端口范围。缺省情况下很小:32768到61000
echo "net.ipv4.ip_local_port_range = 1024 65500" >> /etc/sysctl.conf
echo "fs.file-max = 6815744" >> /etc/sysctl.conf
echo "fs.aio-max-nr=1048576" >> /etc/sysctl.conf
#关闭tcp_sack,启用有选择的应答(Selective Acknowledgment),这可以通过有选择地应答乱序接收到的报文来提高性能(这样可以让发送者只发送丢失的报文段);
#(对于广域网通信来说)这个选项应该启用,但是这会增加对 CPU 的占用。
echo "net.ipv4.tcp_sack = 1" >> /etc/sysctl.conf
#启用 RFC 1323 定义的 window scaling;要支持超过 64KB 的窗口,必须启用该值。
echo "net.ipv4.tcp_window_scaling = 1" >> /etc/sysctl.conf
#指定了接收套接字缓冲区大小的缺省值(以字节为单位)
echo "net.core.rmem_default = 8388608" >> /etc/sysctl.conf
#指定了接收套接字缓冲区大小的最大值(以字节为单位)
echo "net.core.rmem_max = 16777216" >> /etc/sysctl.conf
#定义默认的发送窗口大小
echo "net.core.wmem_default = 8388608" >> /etc/sysctl.conf
#定义发送窗口的最大大小
echo "net.core.wmem_max = 16777216" >> /etc/sysctl.conf
#与 tcp_wmem 类似,不过它表示的是为自动调优所使用的接收缓冲区的值
echo "net.ipv4.tcp_rmem = 4096  87380   16777216" >> /etc/sysctl.conf
#为自动调优定义每个 socket 使用的内存。
#第一个值是为 socket 的发送缓冲区分配的最少字节数。
#第二个值是默认值(该值会被 wmem_default 覆盖),缓冲区在系统负载不重的情况下可以增长到这个值。
#第三个值是发送缓冲区空间的最大字节数(该值会被 wmem_max 覆盖)。
echo "net.ipv4.tcp_wmem = 4096  16384   16777216" >> /etc/sysctl.conf
#确定 TCP 栈应该如何反映内存使用;每个值的单位都是内存页(通常是 4KB)。
#第一个值是内存使用的下限。
#第二个值是内存压力模式开始对缓冲区使用应用压力的上限。
#第三个值是内存上限。在这个层次上可以将报文丢弃,从而减少对内存的使用。对于较大的 BDP 可以增大这些值(但是要记住,其单位是内存页,而不是字节)
echo "net.ipv4.tcp_mem = 94500000 915000000 927000000" >> /etc/sysctl.conf
#开启TCP时间戳,以一种比重发超时更精确的方法(请参阅 RFC 1323)来启用对 RTT 的计算;为了实现更好的性能应该启用这个选项。
echo "net.ipv4.tcp_timestamps = 1" >> /etc/sysctl.conf

echo "net.ipv4.tcp_max_tw_buckets = 6000" >> /etc/sysctl.conf
#表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
echo "net.ipv4.tcp_fin_timeout = 20" >> /etc/sysctl.conf
echo "net.ipv4.tcp_orphan_retries = 1">> /etc/sysctl.conf
echo "net.ipv4.tcp_retries1 = 2">> /etc/sysctl.conf
echo "net.ipv4.tcp_retries2 = 2">> /etc/sysctl.conf
#把TCP的直接拥塞通告(tcp_ecn)关掉
echo "net.ipv4.tcp_ecn = 0">> /etc/sysctl.conf
# 避免放大攻击
echo "net.ipv4.icmp_echo_ignore_broadcasts = 1">> /etc/sysctl.conf
# 开启恶意icmp错误消息保护
echo "net.ipv4.icmp_ignore_bogus_error_responses = 1">> /etc/sysctl.conf
#防止不正确的udp包的攻击
#echo "net.ipv4.udp.checksum = 1">> /etc/sysctl.conf
#表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf
#表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
echo "net.ipv4.tcp_tw_reuse = 1" >> /etc/sysctl.conf
#表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭
echo "net.ipv4.tcp_tw_recycle = 1" >> /etc/sysctl.conf
#表示SYN队列长度,默认1024,改成16384,可以容纳更多等待连接的网络连接数
echo "net.ipv4.tcp_max_syn_backlog = 16384" >> /etc/sysctl.conf
#表示系统同时保持TIME_WAIT套接字的最大数量
echo "net.ipv4.tcp_max_tw_buckets = 1000" >> /etc/sysctl.conf
#该参数指定了每个套接字所允许的最大缓冲区的大小,默认为10K
#echo "net.core.optmem_max = 102400" >> /etc/sysctl.conf

#该参数决定了,网络设备接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
echo "net.core.netdev_max_backlog = 262144" >> /etc/sysctl.conf
echo "net.ipv4.tcp_no_metrics_save=1" >> /etc/sysctl.conf
#表示socket监听的backlog(监听队列)上限
echo "net.core.somaxconn = 8192" >> /etc/sysctl.conf
echo "net.ipv4.tcp_max_orphans = 262144" >> /etc/sysctl.conf
echo "net.ipv4.tcp_synack_retries = 1" >> /etc/sysctl.conf
#在内核放弃建立连接之前发送SYN包的数量
echo "net.ipv4.tcp_syn_retries = 1" >> /etc/sysctl.conf
#keepalive探测包的发送间隔,默认为75秒
echo "net.ipv4.tcp_keepalive_intvl = 15" >> /etc/sysctl.conf
#如果对方不予应答,探测包的发送次数
echo "net.ipv4.tcp_keepalive_probes = 1" >> /etc/sysctl.conf
#当keepalive起用的时候,TCP发送keepalive消息的频度,600秒,默认为2小时
echo "net.ipv4.tcp_keepalive_time = 60">> /etc/sysctl.conf
echo "net.ipv4.tcp_mtu_probing=1" >> /etc/sysctl.conf
#额外的,对于内核版本新于**3.7.1**的,可以开启tcp_fastopen:
echo "net.ipv4.tcp_fastopen=3" >> /etc/sysctl.conf
#路由缓存刷新频率,当一个路由失败后多长时间跳到另一个路由,默认是300
echo "net.ipv4.route.gc_timeout = 100" >> /etc/sysctl.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81

# 更改环境变量

# 关闭SELINUX

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
1

# 更改启动级别

sed -i 's/id:5:initdefault/id:3:initdefault/g' /etc/inittab
1

# 设置加载模块

echo "session required pam_limits.so" >> /etc/pam.d/login
1

# 更改limits限制

echo "* soft nproc 65536" >> /etc/security/limits.conf
echo "* hard nproc 65536" >> /etc/security/limits.conf
echo "* soft nofile 65536" >> /etc/security/limits.conf
echo "* hard nofile 65536" >> /etc/security/limits.conf
1
2
3
4

# 更改profile

echo "ulimit -HSn 65536" >> /etc/profile
echo "ulimit -u 10000" >> /etc/profile
echo "ulimit -d unlimited" >> /etc/profile
echo "ulimit -m unlimited" >> /etc/profile
echo "ulimit -s unlimited" >> /etc/profile
echo "ulimit -t unlimited" >> /etc/profile
echo "ulimit -v unlimited" >> /etc/profile

source /etc/profile
1
2
3
4
5
6
7
8
9

# 删除不需要的用户及组

userdel adm
userdel userdel
userdel lp
userdel sync
userdel shutdown
userdel halt
userdel news
userdel uucp
userdel operator
userdel games
userdel gopher
userdel ftp
groupdel adm
groupdel lp
groupdel news
groupdel uucp
groupdel games
groupdel dip
groupdel pppusers
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 防火墙配置

# 查看已经开放的端口

firewall-cmd --zone=public --list-ports
1

# 设置开放端口

例如设置打开防火墙80端口

firewall-cmd --zone=public --add-port=80/tcp --permanent
1

# 设置关闭端口

例如设置关闭防火墙80端口

firewall-cmd --remove-port=80/tcp --permanent
1

# 设置永久开启firewall防火墙

systemctl enable firewalld
1

# 启停防火墙

systemctl stop firewalld.service #停止防火墙
systemctl start firewalld.service #启动防火墙
systemctl restart firewalld.service #重启服务
firewall-cmd --reload #重新加载防火墙规则
1
2
3
4

# 设置永久开启firewall防火墙

systemctl enable firewalld
1

以下软件安装假设将安装文件下载到 /usr/app/soft 目录。

export soft_dir="/usr/app/soft"
1

# 安装 apr

# 下载 apr

最新版apr下载地址 (opens new window) 本例版本下载

# 安装 apr

本例安装到 /usr/local/apr 目录下。

cd $soft_dir
tar --no-same-owner -zxvf $soft_dir/apr-1.7.0.tar.gz
cd $soft_dir/apr-1.7.0
./configure --prefix=/usr/local/apr
make -j2 && make install
1
2
3
4
5

# 安装 apr-iconv

# 下载 apr-iconv

最新版apr-iconv下载地址 (opens new window) 本例版本下载

# 安装 apr-iconv

本例安装到 /usr/local/apr-iconv 目录下。

cd $soft_dir
tar --no-same-owner -zxvf $soft_dir/apr-iconv-1.2.2.tar.gz
cd $soft_dir/apr-iconv-1.2.2
#默认安装到/usr/local/apache2/bin/apriconv目录下了
./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
make -j2 && make install
1
2
3
4
5
6

# 安装 apr-util

# 下载 apr-util

最新版apr-util下载地址 (opens new window) 本例版本下载 本例安装到 /usr/local/apr-util 目录下。

# 安装 apr-util

cd $soft_dir
tar --no-same-owner -zxvf $soft_dir/apr-util-1.6.1.tar.gz
cd $soft_dir/apr-util-1.6.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make -j2 && make install
1
2
3
4
5

# 安装 libunwind

# 下载 libunwind

最新版libunwind下载地址 (opens new window) 本例版本下载

# 安装 libunwind

本例安装到 /usr/local/libunwind 目录下。

cd $soft_dir
tar --no-same-owner -zxvf $soft_dir/libunwind-1.4.0.tar.gz
cd $soft_dir/libunwind-1.4.0
CFLAGS=-fPIC
./configure --prefix=/usr/local/libunwind
make CFLAGS=-fPIC && make CFLAGS=-fPIC install
1
2
3
4
5
6

# 安装 gperftools

# 下载 gperftools

最新版gperftools下载地址 (opens new window) 本例版本下载

# 安装 gperftools

本例安装到 /usr/local/gperftools 目录下。

cd $soft_dir
tar --no-same-owner -zxvf $soft_dir/gperftools-2.8.tar.gz
cd $soft_dir/gperftools-2.8
./configure  --enable-shared --enable-frame-pointers --prefix=/usr/local/gperftools
make -j2 && make install2

#软连接,nignx可能需要
ln -sv /usr/local/gperftools/lib/libprofiler.so.0.5.0 /lib64/libprofiler.so.0
1
2
3
4
5
6
7
8

# 安装 tomcat-native

# 下载 tomcat-native

最新版tomcat-native下载地址 (opens new window) 本例版本下载

# 安装 tomcat-native

本例安装到 /usr/local/native 目录下。

cd $soft_dir
tar --no-same-owner -zxvf $soft_dir/tomcat-native-1.2.25-src.tar.gz
cd $soft_dir/tomcat-native-1.2.25-src/native
./configure --prefix=/usr/local/native --with-apr=/usr/local/apr --with-java-home=/usr/app/java2
make -j2 && make install
1
2
3
4
5