Ubuntu Linux 系统初始化设置
- 2024-10-02 17:01:00
- 丁国栋
- 原创 197
开始安装前
安装前主要是要思考以下几个方面:
- 硬件配置是否满足安装要求和业务需要,主要是CPU内存磁盘性能以及网络性能等,以及可扩展性等;
- 安装过程中是否可以访问网络;
- 磁盘如何使用;
安装过程中
- 安装的语言,通常建议选择英文,防止后续使用乱码;
- 设置主机名
- 选择区域和时区和时间同步,如果NTP协议受限,可以使用http协议(sudo htpdate -a time.windows.com)
- 选择安装位置和磁盘设置,通常来说建议使用LVM,便于后续扩容;
- 用户设置,创建一个管理员用户,后续使用sudo执行或者切换到根用户;
- 网络设置,在安装时连接到Internet或者配置好软件源,便于安装过程中安装更新和安装驱动程序;
- 是否启用SELinux安全设置和内核转储等(如果有)
- 建议使用最小化安装
- 如果必要,可以设置GRUB密码
安装完成后
如果有一些必要的设置在安装过程中没有设置,那么必然可以在安装后设置,以下是一些常见的设置:
注:如果一些文件不期望被修改,可以使用 chattr
命令进行锁定,例如 chattr +i /etc/resolv.conf
;需要修改时再进行解锁 chattr -i /etc/resolv.conf
,这样来防止误操作。
1. 设置时区
timedatectl list-timezones sudo timedatectl list-timezones |grep 'shanghai' -i sudo timedatectl set-timezone 'Asia/Shanghai' sudo timedatectl set-timezone Asia/Shanghai sudo timedatectl set-time "2024-03-15 15:55:15" timedatectl status sudo dpkg-reconfigure tzdata TZ='Asia/Shanghai' date
2. 关闭系统自带的一些非必要服务
sudo systemctl disable snapd.service sudo systemctl stop snapd.service sudo systemctl disable snapd.socket sudo systemctl stop snapd.socket sudo systemctl disable multipathd.service sudo systemctl disable multipathd.socket sudo systemctl stop multipathd.service sudo systemctl stop multipathd.socket sudo touch /etc/cloud/cloud-init.disabled sudo systemctl stop cloud-init.service sudo systemctl disable cloud-init.service
3. DNS设置
注意:在云计算环境里,这里需要特别注意,因为云服务商通常给内部的服务针对内部网络和外部网络设置不同的解析,如果使用公共DNS服务器地址而不是云服务商的DNS服务器地址,可能会造成云主机内访问某些云服务非常缓慢,因为它通过Internet访问的,速度取决于公网IP带宽。所以为了保证云服务器访问云服务资源的性能,建议云服务器不要修改为其他公共DNS服务器,而是使用原来的DNS设置,但我们依然可以采用如下方所示的配置,只是保留原来使用的DNS服务器和搜索域。
sudo resolvectl status sudo systemctl status systemd-resolved.service sudo systemctl disable systemd-resolved.service sudo cp /etc/resolv.conf /etc/resolv.conf~ sudo rm -f /etc/resolv.conf # symbolic link to ../run/systemd/resolve/stub-resolv.conf sudo tee /etc/resolv.conf <<'eof' nameserver 114.114.114.114 nameserver 8.8.4.4 eof chattr +i /etc/resolv.conf
4. 禁用系统自动更新
test -f /etc/apt/apt.conf.d/20auto-upgrades && sudo sed -i '/Unattended-Upgrade/ s/1/0/' /etc/apt/apt.conf.d/20auto-upgrades
5. 设置主机名
sudo hostnamectl set-hostname <hostname>
6. 配置sudo无密码访问
注意:不要直接修改 /etc/sudoers 文件,因为系统更新时如果操作不规范可能会造成配置被覆盖。
# 将当前用户配置sudo无密码访问 sudo tee /etc/sudoers.d/$USER <<-eof $USER ALL=(ALL) NOPASSWD: ALL eof # 将其他用户配置sudo无密码访问 NAME=dingguodong sudo tee /etc/sudoers.d/$NAME <<-eof $NAME ALL=(ALL) NOPASSWD: ALL eof
7. 配置SSH无密码登录
ssh-keygen -t rsa -N "" -f $HOME/.ssh/id_rsa ssh-keygen -t ed25519 -N "" -f $HOME/.ssh/id_ed25519 [[ ! -e $HOME/.ssh/authorized_keys ]] && cp $HOME/.ssh/id_rsa $HOME/.ssh/authorized_keys cat >> $HOME/.ssh/authorized_keys<<'eof' # ssh public key here eof
8. 配置PS1变量,这一步非必要,建议常用服务器配置使用zsh和oh-my-zsh
export PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$' # 默认bash配置 export PS1='[\u@\h \w]\$'
如果使用bash,建议安装 bash-completion
9. 配置文件打开数和进程数等
sudo cp /etc/security/limits.conf /etc/security/limits.conf$(date +%Y%m%d%H%M%S)~ sudo tee -a /etc/security/limits.conf<<eof * soft nproc 2047 * hard nproc 16384 * soft nofile 200000 * hard nofile 200000 eof10. 配置SSH服务参数
设置UseDNS no,设置 PasswordAuthentication no,设置ClientAliveInterval 120
11. 配置软件源
# 自动选择一个最快的软件源 apt-get install netselect-apt # 也可以使用netselect包 netselect-apt -c china -a amd64 # 会在当前目录生成一个 sources.list 文件 cp /etc/apt/sources.list /etc/apt/sources.list_$(date +%Y%m%d)~ cp sources.list /etc/apt/sources.list # 手动修改Debian的apt软件源 sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list # 手动修改,一句话配置 # Debian sed -i.bak -r 's/(deb|security).debian.org/mirrors.huaweicloud.com/g' /etc/apt/sources.list && apt update -y sed -i.bak -r 's/(deb|security).debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list && apt update -y # Ubuntu sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list sudo sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
12. 修改motd设置
sudo sed -i.bak 's/ENABLED=1/ENABLED=0/g' /etc/default/motd-news
13. 安装一些必要的软件包(部分软件包可能已经安装)
apt install -y curl jq iproute2 telnet tcpdump bind9-dnsutils iputils-ping net-tools zip vim wget procps traceroute
14. 初始化数据磁盘
NEW_DISK_PATH="/dev/sda" sudo lvm pvcreate $NEW_DISK_PATH sudo lvm vgcreate vg_db $NEW_DISK_PATH sudo lvm lvcreate -l 100%free -n lv_db vg_db sudo mkfs.ext4 /dev/mapper/vg_db-lv_db NEW_DISK_PATH="/dev/sdb" sudo lvm pvcreate $NEW_DISK_PATH sudo lvm vgcreate vg_data $NEW_DISK_PATH sudo lvm lvcreate -l 100%free -n lv_data vg_data sudo mkfs.ext4 /dev/mapper/vg_data-lv_data sudo mkdir -p /data/{apps,mysql,uploads} # sudo mount /dev/mapper/vg_db-lv_db /data/mysql # sudo mount /dev/mapper/vg_data-lv_data /data/uploads ls -l /dev/disk/by-uuid/ | grep $(readlink /dev/mapper/vg_db-lv_db) | awk '{print $(NF-2)}' ls -l /dev/disk/by-uuid/ | grep $(readlink /dev/mapper/vg_data-lv_data) | awk '{print $(NF-2)}' # /etc/fstab文件添加以下内容。注意 UUID= 后的内容需要自行替换 UUID=244a9d28-5905-43b2-b9cc-16cb346d8ba6 /data/ ext4 errors=remount-ro 0 1 UUID=15a078f6-7c43-48e5-b289-98de50e52948 /data/db ext4 errors=remount-ro 0 1 systemctl daemon-reload mount -a
15. 设置备份
可以使用restic工具或者自己编写的脚本进行备份,备份时考虑备份完整和容易恢复等。
16. 易用性
设置默认的编辑器,比如从nano替换成vim。
注:原理可以认为是把/usr/bin/editor
软链接的源文件改为nano或vim。
sudo update-alternatives --config editor另外可以使用环境变量来指定默认编辑器,如
export EDITOR=vim
还可以使用select-editor
命令选择默认编辑器。
设置.vimrc
cat > ~/.vimrc<<'eof' syntax on set mouse= set encoding=utf8 set autochdir set autoindent set expandtab set smarttab set shiftwidth=4 set number eof
17. 启用rsyslog来使用日志文件查看日志
journalctl
查看日志有时不如使用vim
打开查看方便,因为journalctl
默认的查看器是more
,多少有些不方便。可以安装 rsyslog
把日志默认记录到/var/log/syslog
文件,而不是使用journalctl
命令查看。
--