一、基础系统 & 安全基线 & 常用工具

我个人使用的操作系统是 Ubuntu 24 ,以下各种命令可以直接复制运行。

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
# 0. 更新系统
apt update
apt -y upgrade

# 1. 设置时区为日本(你后面定时任务都按这个)
timedatectl set-timezone Asia/Shanghai

# 2. 安装常用工具
apt -y install \
ca-certificates \
curl wget \
git \
htop \
unzip zip \
vim \
net-tools \
lsof \
ufw \
fail2ban \
gnupg \
lsb-release

# 3. 基础防火墙:放行 SSH / HTTP / HTTPS
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable

# 4. 可选:创建 2G swap(建议做上,防止偶尔 OOM)
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
echo '/swapfile none swap sw 0 0' | tee -a /etc/fstab
swapon -a

二、Java 17 + MySQL + Docker / Compose + 日志控制

做 Java Web 服务,将最小的必要依赖安装好。

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
########################################
# 1. 安装 Java 17 + Maven
########################################
apt -y install openjdk-17-jdk-headless maven

# 检查一下
java -version
mvn -v

# 2. 安装 MySQL Server 8
apt -y install mysql-server

# 启动并设为开机自启(一般默认就是启用的)
systemctl enable --now mysql

# 运行基础安全向导
# 建议:设置 root 密码、禁用远程 root 登录、删除匿名用户、删除测试库
mysql_secure_installation

# 3. 安装 Docker 引擎(官方脚本)
curl -fsSL https://get.docker.com | sh

# 将当前用户 root 加入 docker 组
usermod -aG docker root || true

# 创建 Docker 数据目录,并设置 data-root + 日志限制
mkdir -p /srv/docker
mkdir -p /etc/docker

cat >/etc/docker/daemon.json <<'JSON'
{
"data-root": "/srv/docker",
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
JSON

systemctl daemon-reload
systemctl restart docker

# 4. 安装 docker compose 插件(使用 docker compose 命令)
apt -y install docker-compose-plugin

# 简单自检一下 Docker
docker version || echo "Docker 有问题,后面我们再查"
docker compose version || echo "docker compose 插件有问题"

# 5. 限制 systemd 日志占用
mkdir -p /etc/systemd/journald.conf.d
cat >/etc/systemd/journald.conf.d/size.conf <<'CONF'
[Journal]
SystemMaxUse=200M
SystemMaxFileSize=50M
CONF

systemctl restart systemd-journald

三、检查服务器各种情况

执行完后可直接扔给 AI 帮忙评估。

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
echo "==================== 1. 基本 OS / 内核信息 ===================="
uname -a
echo
lsb_release -a 2>/dev/null || cat /etc/os-release
echo
hostnamectl
echo
echo "当前时间与时区:"
date
timedatectl
echo
echo "开机时长:"
uptime

echo
echo "==================== 2. CPU 信息 ===================="
lscpu
echo
echo "逻辑 CPU 个数:"
nproc --all

echo
echo "==================== 3. 内存信息 ===================="
free -h
echo
echo "详细 /proc/meminfo(前 20 行):"
head -n 20 /proc/meminfo

echo
echo "==================== 4. 磁盘与文件系统 ===================="
echo "块设备与分区:"
lsblk -f
echo
echo "挂载点与使用率:"
df -hT
echo
echo "inode 使用情况:"
df -i

echo
echo "分区详细信息(需要 sudo):"
sudo fdisk -l 2>/dev/null || echo "fdisk -l 运行失败(可能权限不足或无传统磁盘)"

echo
echo "==================== 5. 硬件 / 虚拟化信息 ===================="
echo "虚拟化检测:"
systemd-detect-virt
echo
echo "简要硬件信息(需要 sudo,可能稍微等几秒):"
sudo lshw -short 2>/dev/null || echo "lshw 未安装或权限不足,可用: sudo apt install lshw"

echo
echo "PCI 设备(比如网卡、存储控制器):"
lspci 2>/dev/null || echo "lspci 未安装,可用: sudo apt install pciutils"

echo
echo "USB 设备:"
lsusb 2>/dev/null || echo "lsusb 未安装,可用: sudo apt install usbutils"

echo
echo "==================== 6. 网络信息 ===================="
echo "网卡与 IP:"
ip addr
echo
echo "路由表:"
ip route
echo
echo "监听的端口(当前应该几乎为空):"
ss -tulpen

echo
echo "==================== 7. 进程与资源占用快照 ===================="
echo "前 15 个最吃 CPU 的进程:"
ps aux --sort=-%cpu | head -n 15
echo
echo "前 15 个最吃内存的进程:"
ps aux --sort=-%mem | head -n 15

echo
echo "==================== 8. 日志与系统健康快照 ===================="
echo "最近 50 行系统日志:"
sudo journalctl -n 50 --no-pager 2>/dev/null || echo "journalctl 命令失败(可能权限不足)"

echo
echo "==================== 9. 已安装的关键软件(docker 等) ===================="
echo "Docker 版本:"
docker --version 2>/dev/null || echo "docker 尚未安装"
echo
echo "Java 版本:"
java -version 2>&1 || echo "java 尚未安装"
echo
echo "MySQL 客户端:"
mysql --version 2>/dev/null || echo "mysql 客户端尚未安装"

echo
echo "==================== 10. 磁盘 I/O 与文件描述符限制 ===================="
echo "磁盘 I/O 调度与队列:"
cat /sys/block/*/queue/scheduler 2>/dev/null || echo "无法读取磁盘 I/O 调度器信息(可能是云盘虚拟设备)"
echo
echo "当前用户的文件句柄限制:"
ulimit -n
echo
echo "系统级最大文件句柄数:"
cat /proc/sys/fs/file-max


本站总访问量