手里的 vps 越来越多了,常用的配置的越来越复杂,专门开一篇,记录下每次重装系统时,几乎都会用到的命令。
修改 root 密码(对于很多人来说可能不需要设置 root 密码,据说 root 用户没有密码更安全呢)
sudo passwd root
切换到 root 权限以及环境。
su -
更新库,安装常用软件
apt update && apt full-upgrade -y && apt autoremove && apt autoclean
apt install sudo htop git wget curl screen emacs-nox net-tools -y
开启 BBR,root 账户执行
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
检查 bbr 状态
sysctl net.ipv4.tcp_congestion_control | grep bbr
下面的命令不需要 root 权限了,如果你也进入了 root 环境,记得退出来。
exit
设置 git 账户信息,指定 git 的编辑器。
git config --global user.name "acytoo" # 你的用户名
git config --global user.email acytoo@gmail.com # 你的邮箱
git config --global core.editor emacs
安装 zsh,oh-my-zsh 框架
sudo apt install zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
安装两个小玩具
sudo apt install toilet lolcat
设置 bullet-train 主题
wget https://raw.githubusercontent.com/caiogondim/bullet-train.zsh/master/bullet-train.zsh-theme -O $ZSH/themes/bullet-train.zsh-theme
emacs ~/.zshrc
将下列配置写入到 ~/.zshrc
中
export PATH=$HOME/bin:/usr/local/bin:$PATH
export ZSH="$HOME/.oh-my-zsh"
ZSH_THEME="bullet-train"
BULLETTRAIN_PROMPT_ORDER=(
time
status
custom
context
dir
virtualenv
git
cmd_exec_time
)
DISABLE_AUTO_UPDATE="true"
plugins=(git)
export EDITOR='emacs'
alias lg="ls | grep"
alias rt="move_to_trash"
move_to_trash () {
mv "$@" $HOME/.trash
}
ZSH_CACHE_DIR=$HOME/.cache/oh-my-zsh
if [[ ! -d $ZSH_CACHE_DIR ]]; then
mkdir $ZSH_CACHE_DIR
fi
source $ZSH/oh-my-zsh.sh
echo "Hi, Acytoo" | toilet | lolcat
应用 zsh 配置
source ~/.zshrc
修改默认 ssh 端口
sudo nano /etc/ssh/sshd_config
别急着删除默认的端口号,在默认端口号下面添加一个新的端口号,试试能不能连接,能正常连接,再删除默认端口号。
Port 22
Port 23456 # 设置一个端口号
然后重启 sshd 进程,应用修改
sudo systemctl restart sshd
通过新端口号连接,本地执行
ssh username@domain -p 23456
每次修改 ssh 端口号,都要先能通过新端口号连接,再删除旧端口号,避免端口占用导致奇奇怪怪的问题。
安装 ufw 管理防火墙
sudo apt install ufw
防火墙允许 ssh
sudo ufw allow 23456 # 你的 ssh 连接端口
开启防火墙
sudo ufw enable
开启防火墙后,记得有新的服务要开放相对应的端口。
添加 swap 前,用 free -h
查看你是否有 swap。swap 不是必备的分区,尤其是现在的机器内存都比较大了,很少真正需要到 swap。
添加 swap 。这个是针对小内存又默认没有 swap 分区小机器准备的。但是要注意,swap 分区频繁写入删除的话,算 Disk IO,有的 VPS 提供商可能会因此停止服务。
添加一个1024M的 swap 文件,修改其权限,把这个文件变成 swap,并激活 swap
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 status=progress
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
上面的命令执行完毕,检查 swap,会发现 1024M 大小的 swap:free -h
如果一切正常,将配置写入分区表,每次开机自动配置。
sudo nano /etc/fstab
粘贴下面一行到文件末尾
/swapfile none swap defaults 0 0
系统中有一个配置,是使用 swap 的意愿程度,这个数值越大,系统越愿意使用 swap。
使用cat /proc/sys/vm/swappiness
查看当前的意愿程度,默认是 60.
我会调低这个数值,免得被主机提供商以长期高 IO 为由停止服务。
sudo sysctl vm.swappiness=30
内存低于 512M 的机器,其网络性能可能受限于默认的低 buffer size,修改/etc/sysctl.conf
[1]。
sudo nano /etc/sysctl.conf
在文件末尾添加下面四行。
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
然后应用新配置。
sudo sysctl -p
有些机器会自动添加 ipv6 地址,不通的ipv6地址,除了设置为 static 以外,还可以设置取消自动 ipv6: 修改/etc/sysctl.conf
,添加
net.ipv6.conf.eth0.autoconf=0
net.ipv6.conf.eth0.accept_ra=0
然后应用配置sudo sysctl -p
上面的两行第一行取消了 eth0
的自动配置公网 ipv6,第二行取消了 eth0
的自动配置本地 ipv6 (fe80..)
如果想取消所有 interface 的自动配置,可以用[2]
sudo sysctl -w net.ipv6.conf.all.autoconf=0
sudo sysctl -w net.ipv6.conf.all.accept_ra=0
此外,Debian 设置静态 ip 的一个例子:
sudo nano /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 111.222.123.123
gateway 111.222.123.193
netmask 255.255.255.0
dns-nameservers 8.8.8.8 1.1.1.1
iface eth0 inet6 static
address 2601:6400:30:cc1b::1234
gateway 2601:6400:30::1
netmask 48
dns-nameservers 2001:4860:4860::8888
本文配置来自 Debian 文档, Arch Wiki,网络博客等。针对特殊任务优化,可以搜索 Linux tuning。