Ubuntu Linux 系统初始化设置

2024-10-02 17:01:00
丁国栋
原创 197
摘要:本文讲解和整理在新安装一个Ubuntu Linux前中后应该做的一些初始化设置。

开始安装前

安装前主要是要思考以下几个方面:

  1. 硬件配置是否满足安装要求和业务需要,主要是CPU内存磁盘性能以及网络性能等,以及可扩展性等;
  2. 安装过程中是否可以访问网络;
  3. 磁盘如何使用;


安装过程中

  1. 安装的语言,通常建议选择英文,防止后续使用乱码;
  2. 设置主机名
  3. 选择区域和时区和时间同步,如果NTP协议受限,可以使用http协议(sudo htpdate -a time.windows.com)
  4. 选择安装位置和磁盘设置,通常来说建议使用LVM,便于后续扩容;
  5. 用户设置,创建一个管理员用户,后续使用sudo执行或者切换到根用户;
  6. 网络设置,在安装时连接到Internet或者配置好软件源,便于安装过程中安装更新和安装驱动程序;
  7. 是否启用SELinux安全设置和内核转储等(如果有)
  8. 建议使用最小化安装
  9. 如果必要,可以设置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
eof
10. 配置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命令查看。


--

发表评论
博客分类