Linux配置

介绍一些Linux常见的优化配置,这里以Alma9.5为例。

安装软件

Linux各个发行版都有自带的软件仓库,就像安卓的Google Play一样。
RHEL使用 dnf 自动下载和安装软件

  • 设置安装时选择最快的软件仓库
echo "fastestmirror=1" >> /etc/dnf/dnf.conf
  • 更新所有软件
dnf update -y
  • 删除所有不需要的软件
dnf autoremove -y
  • 查看一个命令属于哪个包
    比如ifconfig这个命令属于net-tools
[root@rs ~]# dnf whatprovides ifconfig
Last metadata expiration check: 1:14:16 ago on Thu 02 Jan 2025 04:05:00 PM CST.
net-tools-2.0-0.64.20160912git.el9.x86_64 : Basic networking tools
Repo        : @System
Matched from:
Filename    : /usr/sbin/ifconfig

管理服务

Linux是个服务器系统,有很多后台运行的服务,比如ssh服务、web服务、防火墙。不像Windows这种桌面系统,我们一般用哪个软件就打开哪个软件,不用就关掉。
以ssh为例展示一下如何管理服务。

  • 查询sshd状态是running。
[root@rs ~]# systemctl status sshd
● sshd.service - OpenSSH server daemon
     Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: enabled)
     Active: active (running) since Tue 2024-12-31 17:08:09 CST; 18h ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 596 (sshd)
      Tasks: 1 (limit: 4700)
     Memory: 16.7M
        CPU: 2min 57.699s
     CGroup: /system.slice/sshd.service
             └─596 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
  • 管理服务
# 设置服务开机启动
systemctl enable sshd
# 启动服务
systemcel start sshd
# 重启服务
systemcel restart sshd
# 停止服务
systemcel stop sshd
# 启动服务并设置为开机启动
systemcel enable --now sshd
  • 查看服务日志
    上下方向键滚动,ctrl+c退出。
journalctl -u sshd

下面这个命令是在终端实时显示日志最新的内容,ctrl+c才会退出。如果服务启动失败要查找原因,在终端上运行这个命令,再在另一个终端上重启服务,这个终端就可以看到最新的服务日志滚动输出。

journalctl -u sshd -f

关闭SELinux

SELinux(Security-Enhanced Linux)是Linux的安全子系统。它更加安全,也更麻烦。一般root用户对Linux具有完全的控制权,SELinux把权限分割成更细的颗粒度,随便做点啥就要授权。我曾经遇到过ssh服务是以root用户运行的,防火墙也开放了22端口,启动了SELinux之后客户端却无法登录。所以一般就将SELinux关闭。

  • 临时关闭SELinux,重启后失效。
setenforce 0
  • 永久关闭SELinux,重启后生效
    修改/etc/selinux/config,设置SELINUX=disabled。
    如果SELinux默认打开,那么当前ELinux仍是启用状态。
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

设置交换空间(Swap Area)

交换空间相当于Windows里的虚拟内存文件。当内存不足的时候,Linux会把这个交换空间当作虚拟内存使用。一般这个交换空间设置为内存大小的两倍。以前交换空间需要专门划个分区,现在创建一个文件就可以了。

  • 使用如下命令可以查看内存大小。这里可以看到是768M。当交换分区启动以后才能看到Swap。
[root@rs ~]# free -h
               total        used        free      shared  buff/cache   available
Mem:           768Mi       183Mi       457Mi       2.0Mi       238Mi       585Mi
Swap:          2.0Gi        21Mi       2.0Gi
  • 创建文件/swapfile,bs是块大小,count是多少个块,这里创建的文件大小是1M x 2048 = 2G。
dd if=/dev/zero of=/swapfile bs=1M count=2048
  • 设置文件权限
chmod 0600 /swapfile
  • 设置并启动交换空间
mkswap /swapfile
swapon /swapfile
  • 更新交换空间信息到/etc/fstab,这样开机会自动启用交换空间。
echo "/swapfile swap swap defaults 0 0" >> /etc/fstab

安装epel

安装EPEL(Extra Packages for Enterprise Linux)软件源,提供更多额外的软件包。

dnf install -y epel-release

安装elrepo

安装elrepo软件源,这个源提供更新的Linux内核。

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 
dnf install -y https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm
# 开启Linux内核仓库
dnf config-manager --set-enable elrepo-kernel

设置时区

# 设置时区为东八区
timedatectl set-timezone Asia/Shanghai
# 安装和开启网络时间同步服务
dnf install -y systemd-timesyncd 
systemctl enable --now systemd-timesyncd

升级内核

elrepo提供了两个系列的内核:kernel-ml(mainline主线版)和kernel-lt(lts长期支持版)。ml版本比较新,lts版本比较老更注意稳定性。我一般安装kernel-ml。

dnf install -y kernel-ml
# 只保留最新两个版本的内核
dnf remove --oldinstallonly --setopt installonly_limit=2 kernel
# 查看内核版本
uname -r

使用bbr

bbr是Google开发的拥塞控制算法,据说可以提高网络速度。

  • 配置
sysctl -w "net.core.default_qdisc=fq" >> /etc/sysctl.conf
sysctl -w "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
  • 查看
sysctl net.ipv4.tcp_available_congestion_control 
sysctl net.ipv4.tcp_congestion_control 

防火墙

  • 查看当前的防火墙规则
    主要看services和ports
firewall-cmd  --list-all
  • 管理服务
    具体服务对应的网络协议和端口可以从/etc/services查询
    以ssh为例
# 添加服务到防火墙
firewall-cmd --permanent --add-service=ssh
# 删除服务
firewall-cmd --permanent --remove-service=ssh
  • 管理端口
# 添加端口
firewall-cmd --permanent --add-port=22/tcp
# 删除端口
firewall-cmd --permanent --remove-port=22/tcp
  • 重新加载防火墙规则
    这样前面添加和删除的规则才生效
firewall-cmd --reload

暂无介绍....

延伸阅读:

部署deepseek-r1

最近DeepSeek-R1模型很火,我也蹭个热点,本文介绍如何在VPS上使用Ollama部署DeepSeek-R1模型,...

leon
2025年2月23日
MySQL备份与还原

我们的VPS可能会硬盘损坏需要重装OS,或者运营商跑路了,所以需要定时备份数据库,以防不测。备份使用mysqldump导...

leon
2025年2月22日
SSH隧道

这章继续介绍基础知识,前面讲到有的服务在127.0.0.1监听,外网无法访问,我们怎么访问呢,可以用SSH隧道。什么是S...

leon
2025年2月20日
部署第一个网络服务

前面介绍了不少基础知识,今天介绍如何部署一个网站,demo在这里。下面是一些前面介绍过的预备知识:- Caddy介绍- ...

leon
2025年2月19日
域名介绍

什么是域名?这个正常人都知道,就不介绍了。为什么有一个域名是极好的,可以查看前面的文章。如何获取免费域名?1. Free...

leon
2025年2月17日