ubuntu18.04通用初始化

环境:Ubuntu 18.04.6 LTS

1、开启root密码登录并限制 AllowUsers

1
2
3
4
5
6
7
8
9

# 查看访问本机的公网地址使用
curl ifconfig.me
# 首先为 root 设置密码 后允许root用户登录
vim /etc/ssh/sshd_config
PermitRootLogin yes
AllowUsers root@127.0.0.1/32 root@本机所在的外网网段/31 root@内网ip段

systemctl restart ssh

如果出现无法ssh到主机的情况,查看主机/var/log/auth.log日志,可以知晓为什么 ssh 连不上

2、centos关闭selinux2.

1
2
3
4
5
# 关闭 selinux:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config && setenforce 0

setenforce 0 > /dev/null 2>&1 || true
sed -i s/^SELINUX=.*/SELINUX=disabled/g /etc/selinux/config

3、设置主机名

1
2
# 设置主机名
hostnamectl set-hostname zznn1

设置完主机名后,输入 bash,或者重新 ssh 到主机,可以显示设置后的主机名

4、设置host

1
2
3
4
vim /etc/hosts
10.0.0.18 zznn1
10.0.0.19 zznn2
10.0.0.20 zznn3

5、设置免密登录

1
2
3
4
5
# 通常只用在第一台服务器上配置免密ssh
ssh-keygen
ssh-copy-id zznn1
ssh-copy-id zznn2
ssh-copy-id zznn3

6、修改ulimit

1
2
3
4
5
6
7
8
9
cat >> /etc/security/limits.conf <<EOF
* - nofile 65535
* - nproc 65535
root - nofile 65535
root - nproc 65535
EOF

ulimit -HSn 65535
ulimit -a

6、关闭swap

1
2
swapoff -a
sed -i /swap/d /etc/fstab

7、修改内核参数

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
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.ip_local_port_range = 1024 65535
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_mem = 786432 1048576 1572864
net.ipv4.tcp_rmem = 32768 436600 873200
net.ipv4.tcp_wmem = 8192 436600 873200
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_sack = 0
net.core.netdev_max_backlog = 30000
net.ipv4.tcp_no_metrics_save = 1
net.core.somaxconn = 282144
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
vm.overcommit_memory = 1
vm.max_map_count = 262144
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_keepalive_probes=3
net.ipv4.tcp_keepalive_intvl=15
net.ipv4.tcp_keepalive_time=1800
net.core.somaxconn=65535
fs.file-max = 2000000
fs.inotify.max_user_watches = 2000000

sysctl -p

8、配置没有外网ip的主机访问外网

参考:配置snat使无法出外网的机器通过其他机器出外网

9、设置DNS

1
2
sed -i s/#DNS=.*/DNS=223.5.5.5/g /etc/systemd/resolved.conf
systemctl restart systemd-resolved.service

10、设置apt源(参考阿里云miorrs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 设置apt源
cp /etc/apt/sources.list /etc/apt/sources.list.bakcup

cat > /etc/apt/sources.list <<EOF
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
EOF

apt update

(10. 设置apt源(22.04))

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
cp /etc/apt/sources.list /etc/apt/sources.list.bakcup

#清华大学源
cat > /etc/apt/sources.list <<EOF
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
EOF

#163源(速度较快,推荐)
cat > /etc/apt/sources.list <<EOF
deb http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse
EOF

apt update

11、安装常用软件

1
2
3
4
5
# 安装常用软件
apt install -y python sshpass telnet vim wget curl unzip git gcc make lrzsz nmon smartmontools ntpdate

# 在安装过程中python安装失败,建议后期单独装
apt install -y sshpass telnet vim wget curl unzip git gcc make lrzsz nmon smartmontools ntpdate

12、设置时区

1
2
3
4
5
6
# 设置时区
timedatectl set-timezone 'Asia/Shanghai'
ntpdate ntp1.aliyun.com

# 设置时区后,重启 crond 服务,这样 crontab 定时任务会按照新的时区来执行
systemctl restart cron

1
2
3
4
5
6
7
# 设置时区
cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime > /dev/null 2>&1 && echo 'Asia/Shanghai' > /etc/timezone
timedatectl set-timezone 'Asia/Shanghai'
# 进行时间同步
ntpdate ntp1.aliyun.com > /dev/null 2>&1
# 设置时间同步写入定时任务
(crontab -l 2>/dev/null | grep -v "^#" || true; echo "0 * * * * /usr/sbin/ntpdate ntp1.aliyun.com") | sort - | uniq - | crontab -

设置时间为24小时制

1
2
3
# 需要修改时间为24小时,可以修改/etc/default/locale,默认没有LC_TIME这个变量,在文件中增加一行:
vim /etc/default/locale
LC_TIME=en_DK.UTF-8

然后重启服务器即可生效,date命令查看是24小时时间格式

13、清空磁盘

如果服务器上有多块磁盘,建议除系统盘外,对所有盘执行清理操作

1
2
3
# 清空磁盘
dmsetup remove_all
wipefs -a /dev/sd{b..g}

14、docker 挂盘

如果系统盘小于 100g,需要为 docker 单独挂盘,如果系统盘比较大,则无需为 docker 单独挂盘

1
2
3
4
5
6
7
# docker挂盘
mkfs -t ext4 /dev/sdb
mkdir -p /var/lib/docker
mount /dev/sdb /var/lib/docker

vim /etc/fstab
/dev/sdb /var/lib/docker ext4 defaults,noatime,data=writeback,barrier=0,commit=10 0 0

note: 挂载时必须要确保挂载目录为空没有任何数据 否则会造成数据丢失 如果需要挂载目录存在数据 则需要先进行数据迁移挂载后再次迁入 否则一旦挂载 该目录数据 会即刻消失 且无法找回。

15、扩展

关于defaults,noatime,data=writeback,barrier=0,commit=10 0 0

  • 这是一个典型的 /etc/fstab 文件中的行,用于挂载一个磁盘分区到 /mnt 目录,并指定了一些挂载选项。让我为您解释这个行中的各个部分:
  • /dev/vdb:这是要挂载的磁盘分区的设备文件路径。在这个例子中,/dev/vdb 表示第二个磁盘(通常,第一个磁盘是 /dev/vda)上的第一个分区。
  • /mnt:这是要将磁盘分区挂载到的目标目录。在这个例子中,磁盘分区将被挂载到 /mnt 目录下。
  • ext4:这是文件系统类型,指示磁盘分区使用的文件系统。在这个例子中,它是 ext4 文件系统。
  • defaults:这是一组默认挂载选项,通常包括文件系统的读写权限等。这里指示使用默认选项。
  • noatime:这是一个文件系统挂载选项,它告诉系统不要更新文件和目录的访问时间戳(atime)。这可以提高性能,因为系统不必在每次文件访问时更新时间戳。
  • data=writeback:这是用于指定文件系统的数据写入策略的选项。在这里,使用了 writeback 策略,它可以提高写入性能。
  • barrier=0:这个选项禁用了数据同步(barrier)操作,同样是为了提高性能。但请注意,禁用 barrier 可能会增加数据丢失的风险,因此在特定用例中需要小心使用。
  • commit=10:这个选项设置数据提交(commit)的延迟时间,单位是秒。在这里,设置为10秒,这意味着系统将每隔10秒将挂载的文件系统中的未提交数据写入磁盘。
  • 0 0:这是文件系统的 dump 和 fsck 选项。通常情况下,这些设置为0,表示不需要进行备份和文件系统检查。
  • 请确保在修改 /etc/fstab 文件之前,你了解自己的需求和文件系统的特性,以确保选项的设置是适合的。错误的挂载选项可能会导致数据损坏或性能问题。

详情参考: note环境部署部分 初始化到此结束。