mirror of
https://github.com/Colin-XKL/Colinx-Blog.git
synced 2026-01-13 11:11:26 +08:00
feat: update article
This commit is contained in:
@@ -8,16 +8,14 @@ tags:
|
|||||||
- 技术
|
- 技术
|
||||||
- Linux
|
- Linux
|
||||||
- Debian
|
- Debian
|
||||||
- Traefik
|
|
||||||
- Headless CMS
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
一份 Linux 初始化清单,避免每次拿到新的服务器都要一个个去各种地方搜集指令,以做备忘 & 供有需要的朋友参考。
|
一份 Linux 初始化清单,避免每次拿到新的服务器都要一个个去各种地方搜集指令,以做备忘 & 供有需要的朋友参考。
|
||||||
|
|
||||||
服务器发行版我个人推荐 Debian 系列,CentOS 系现在已经开始分裂而且说实话对新手其实并不友好。Debian 是在兼容性,易用性和稳定性之间都取得不错平衡的发行版。新手推荐 Ubuntu, 不过最近商业化有点过度,夹带了越来越多的私活,我个人所有新安装的 Linux 已经全线转向 Debian. 下文以目前最新的 Debian 11 Bullseye 为例
|
服务器发行版我个人推荐 Debian 系列,CentOS 系现在已经开始分裂而且说实话对新手其实并不友好。Debian 是在兼容性,易用性和稳定性之间都取得不错平衡的发行版。新手推荐 Ubuntu, 不过最近商业化有点过度,夹带了越来越多的私活,我个人所有新安装的 Linux 已经全线转向 Debian. 下文以目前最新的 Debian 11 Bullseye 为例. Debian 12 bookworm 也测试通过.
|
||||||
|
|
||||||
> azure 干净的 debian 11 镜像,资源使用情况供参考
|
> azure 干净的 debian 11 镜像,资源使用情况供参考:
|
||||||
>
|
>
|
||||||
> ~1G Disk, ~100M RAM, ~300 packages
|
> ~1G Disk, ~100M RAM, ~300 packages
|
||||||
|
|
||||||
@@ -32,12 +30,15 @@ tags:
|
|||||||
检查服务商防火墙和系统自带防火墙 (debian 系一般为 `ufw`, cent os 系一般为 `firewall-cmd`).放行 SSH(22), 新的 SSH(自定义), HTTP, HTTPS, 以及其他常用开发端口
|
检查服务商防火墙和系统自带防火墙 (debian 系一般为 `ufw`, cent os 系一般为 `firewall-cmd`).放行 SSH(22), 新的 SSH(自定义), HTTP, HTTPS, 以及其他常用开发端口
|
||||||
|
|
||||||
### 1.2 新建用户与检查 sudoer
|
### 1.2 新建用户与检查 sudoer
|
||||||
|
登录到root用户, 创建个人账户并设定密码
|
||||||
```shell
|
```shell
|
||||||
// -m 创建对应home文件夹
|
// -m 创建对应home文件夹
|
||||||
// 添加到 sudo 用户组自动获得sudo权限, 部分发行版为wheel组
|
// 添加到 sudo 用户组自动获得sudo权限, 部分发行版为wheel组
|
||||||
|
|
||||||
useradd -m --groups sudo colin
|
useradd -m --groups sudo colin
|
||||||
|
|
||||||
|
// 设定密码
|
||||||
|
passwd colin
|
||||||
```
|
```
|
||||||
|
|
||||||
也可直接编辑`/etc/sudoers` 文件为新用户添加 sudo 权限,使用 `visudo` 指令可以自动帮你校验,避免配置写错把系统搞崩
|
也可直接编辑`/etc/sudoers` 文件为新用户添加 sudo 权限,使用 `visudo` 指令可以自动帮你校验,避免配置写错把系统搞崩
|
||||||
@@ -54,7 +55,6 @@ useradd -m --groups sudo colin
|
|||||||
//for debian
|
//for debian
|
||||||
sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
|
sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
|
||||||
|
|
||||||
|
|
||||||
//for ubuntu
|
//for ubuntu
|
||||||
sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list
|
sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list
|
||||||
```
|
```
|
||||||
@@ -73,7 +73,8 @@ sudo apt install zsh tmux htop duf htop tldr screenfetch tree
|
|||||||
|
|
||||||
### 1.4 SSH 安全
|
### 1.4 SSH 安全
|
||||||
|
|
||||||
修改端口,配置文件`/etc/ssh/sshd_config`. 重启机器或 sshd 服务后生效
|
修改端口,配置文件`/etc/ssh/sshd_config`. 重启机器或 sshd 服务后生效.
|
||||||
|
此外最好将`PermitRootLogin`修改为`no`, 可以禁用root登录.
|
||||||
|
|
||||||
在本机检查`~/.ssh/`有无 id_rsa 等已生成的 key. 如没有再使用 `ssh-keygen` 生成私钥
|
在本机检查`~/.ssh/`有无 id_rsa 等已生成的 key. 如没有再使用 `ssh-keygen` 生成私钥
|
||||||
将本机的公钥上传到远端,再写入远端的 `authorized_keys` 中
|
将本机的公钥上传到远端,再写入远端的 `authorized_keys` 中
|
||||||
@@ -83,12 +84,10 @@ sudo apt install zsh tmux htop duf htop tldr screenfetch tree
|
|||||||
注意修改权限,`~/.ssh/authorized_keys` 权限为 600. `~/.ssh/`为 700
|
注意修改权限,`~/.ssh/authorized_keys` 权限为 600. `~/.ssh/`为 700
|
||||||
|
|
||||||
可以参考以下设置
|
可以参考以下设置
|
||||||
|
|
||||||
> .ssh/ 0700/rwx------
|
> .ssh/ 0700/rwx------
|
||||||
> .ssh/*.pub 644/rw-r--r--
|
> .ssh/*.pub 644/rw-r--r--
|
||||||
> .ssh/* 0600/rw-------
|
> .ssh/* 0600/rw-------
|
||||||
|
|
||||||
|
|
||||||
如失败可参考这篇文章 debug. [https://superuser.com/questions/1137438/ssh-key-authentication-fails](https://superuser.com/questions/1137438/ssh-key-authentication-fails)
|
如失败可参考这篇文章 debug. [https://superuser.com/questions/1137438/ssh-key-authentication-fails](https://superuser.com/questions/1137438/ssh-key-authentication-fails)
|
||||||
|
|
||||||
### 1.5 设置 hostname
|
### 1.5 设置 hostname
|
||||||
@@ -100,6 +99,8 @@ sudo hostnamectl set-hostname my-new-server
|
|||||||
sudo hostnamectl status
|
sudo hostnamectl status
|
||||||
```
|
```
|
||||||
|
|
||||||
|
此外`/etc/hosts` 中默认会有个本机hostname映射到`127.0.0.1` 的配置, 修改host之后这里别名的映射也要修改下,不然终端执行命令会一直弹 `sudo: unable to resolve host xxx: Name or service not known`
|
||||||
|
|
||||||
修改后需重启
|
修改后需重启
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -132,8 +133,6 @@ sudo swapon -s
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
每次重启后都要重新挂载磁盘分区。因此为了使之持久化,就像上面一样,我们编辑 `/etc/fstab` 并输入下面行:
|
每次重启后都要重新挂载磁盘分区。因此为了使之持久化,就像上面一样,我们编辑 `/etc/fstab` 并输入下面行:
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -146,7 +145,6 @@ sudo swapon -s
|
|||||||
还可以按需选择使用 zram,提升内存可用量,不过会略微增加 cpu 使用和内存延时。可以搜索 zramctl, zramswap 等关键字
|
还可以按需选择使用 zram,提升内存可用量,不过会略微增加 cpu 使用和内存延时。可以搜索 zramctl, zramswap 等关键字
|
||||||
|
|
||||||
|
|
||||||
注意 Debian 新版本 swapon 等工具所在的目录 /usr/sbin 不在普通用户的 PATH 中,可能需要手动执行前缀使用。如 /usr/sbin/swapon
|
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -200,7 +198,7 @@ docker mirror 配置可以加速 image pull, 国内公开可用的加速站点
|
|||||||
],
|
],
|
||||||
"log-opts": {
|
"log-opts": {
|
||||||
"max-file": "5",
|
"max-file": "5",
|
||||||
"max-size": "10m"
|
"max-size": "1m"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -290,12 +288,14 @@ sudo systemctl enable fail2ban
|
|||||||
```conf
|
```conf
|
||||||
[sshd]
|
[sshd]
|
||||||
enabled = true
|
enabled = true
|
||||||
port = 20000 # 这里修改为实际的 sshd 端口
|
# 这里修改为实际的 sshd 端口
|
||||||
|
port = 20000
|
||||||
filter = sshd
|
filter = sshd
|
||||||
banaction = iptables-allports
|
banaction = iptables-allports
|
||||||
|
|
||||||
[DEFAULT]
|
[DEFAULT]
|
||||||
findtime = 3600 # 1h 时间窗口
|
# 1h 时间窗口
|
||||||
|
findtime = 3600
|
||||||
maxretry = 3
|
maxretry = 3
|
||||||
bantime = 6h
|
bantime = 6h
|
||||||
```
|
```
|
||||||
@@ -332,7 +332,7 @@ Status for the jail: sshd
|
|||||||
|
|
||||||
配置文件位置 `/etc/sysctl.conf`
|
配置文件位置 `/etc/sysctl.conf`
|
||||||
|
|
||||||
```c
|
```conf
|
||||||
# mem
|
# mem
|
||||||
vm.swappiness = 10
|
vm.swappiness = 10
|
||||||
|
|
||||||
@@ -349,7 +349,74 @@ net.ipv4.tcp_slow_start_after_idle=0
|
|||||||
sudo sysctl -p
|
sudo sysctl -p
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3.2 其他进阶配置
|
|
||||||
|
### 3.2 更多内存空间 - ZRAM
|
||||||
|
ZRAM 内存压缩, 对于个人服务器来说, 始终活跃的程序占用的内存只有比较小一部分,启用zram 可以将这部分内存压缩, 从而可以部署更多的服务.
|
||||||
|
|
||||||
|
建议使用`zramtool`, 简单方便
|
||||||
|
```shell
|
||||||
|
sudo apt install zram-tools
|
||||||
|
```
|
||||||
|
修改`/etc/default/zramswap`, 末尾添加
|
||||||
|
```ini
|
||||||
|
ALGO=zstd
|
||||||
|
PERCENT=60
|
||||||
|
```
|
||||||
|
|
||||||
|
之后执行`sudo service zramswap reload`重载生效.
|
||||||
|
可以使用swapon 命令查看生效情况
|
||||||
|
```
|
||||||
|
~ » sudo swapon -show
|
||||||
|
NAME TYPE SIZE USED PRIO
|
||||||
|
/swap_space file 2G 32.1M -2
|
||||||
|
/dev/zram0 partition 489.9M 0B 100
|
||||||
|
```
|
||||||
|
|
||||||
|
这样依赖, 会将机器物理内存的50%配置zram, 使用zstd压缩算法,一般压缩比能达到3:1, 也就是说,1G的机器,可以相当于有`0.5G+3*0.5G=2G`的内存.
|
||||||
|
|
||||||
|
注意 Debian 新版本 swapon 等工具所在的目录 /usr/sbin 不在普通用户的 PATH 中,可能需要手动执行前缀使用。如 /usr/sbin/swapon
|
||||||
|
|
||||||
|
### 3.3 更多内存空间 - 关闭kdump,释放预留的内存空间
|
||||||
|
|
||||||
|
新服务器开起来之后, 你会发现无论是htop还是free等命令, 看到的总内存就是比你买服务器时页面上写的要小.比如我开的两核1G的机器,实际机器上看到的总内存只有816M. 这是因为linux系统会默认开启kdump,预留了一部分内存不让我们使用.
|
||||||
|
|
||||||
|
Kdump是Linux系统的一种内核崩溃转储机制,它允许在系统发生内核崩溃(例如内核panic)时,捕获内存的转储信息,从而帮助事后分析故障原因。 默认的配置`2G-8G:256M,8G-16G:512M,16G-:768M`, 如果你买的是2G的机器,上来就有1/8的空间用不了.
|
||||||
|
|
||||||
|
但是我们个人日常使用的linux机器基本用不到这个功能, 不用预留这部分空间.
|
||||||
|
|
||||||
|
操作方法有两种: 将预留内存改为0 or 直接关闭kdump服务. 对于个人玩家小内存机器我建议直接关闭. 操作如下:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 备份grub配置文件
|
||||||
|
sudo cp /etc/default/grub /etc/default/grub.bak
|
||||||
|
|
||||||
|
# 编辑grub配置,删除 crashkernel=0M-2G:0M,2G-8G:192M 这样的部分
|
||||||
|
sudo nano /etc/default/grub
|
||||||
|
|
||||||
|
# 部分发行版镜像可能还有单独的kdump配置文件,直接删除
|
||||||
|
sudo rm /etc/default/grub.d/kdump-tools.cfg
|
||||||
|
|
||||||
|
# 更新grub配置
|
||||||
|
sudo update-grub
|
||||||
|
|
||||||
|
# 关闭并禁用Kdump服务
|
||||||
|
sudo systemctl disable kdump-tools
|
||||||
|
sudo systemctl stop kdump-tools
|
||||||
|
|
||||||
|
# 重启系统
|
||||||
|
sudo reboot
|
||||||
|
|
||||||
|
# 检查是否生效, 状态为 inactive(dead),即 kdump 服务已停止运行
|
||||||
|
sudo systemctl status kdump
|
||||||
|
|
||||||
|
# 检查 crash size 是否为0
|
||||||
|
cat /sys/kernel/kexec_crash_size
|
||||||
|
```
|
||||||
|
|
||||||
|
更多内容可以参见这篇文档: [预留内存相关文档-阿里云](https://help.aliyun.com/zh/ecs/use-cases/view-and-change-the-size-of-reserved-memory-on-a-linux-instance#7d5ae6803amdp) 或者 [预留内存相关文档-腾讯云](https://cloud.tencent.com/document/product/213/115734)
|
||||||
|
|
||||||
|
|
||||||
|
### 3.3 其他进阶配置
|
||||||
|
|
||||||
一些其他的系统维护技巧与策略,如
|
一些其他的系统维护技巧与策略,如
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user