分类 Linux 下的文章

✅ 1. 什么是 Swap?

Swap(交换空间) 是 Linux 系统中用于辅助物理内存(RAM)的一种虚拟内存。它在物理内存不足时,将部分数据临时存储在磁盘上的专用空间中,从而缓解内存压力,防止系统崩溃。

  • 物理内存(RAM): 系统主要运行数据的临时存储区域,速度快。
  • 交换空间(Swap): 当物理内存不足时,Linux 将部分数据换出到 Swap 中,释放 RAM 以供其他进程使用。

✅ 作用

  • 防止内存溢出:当内存不够时,使用 Swap 避免程序崩溃。
  • 支持休眠:休眠时,RAM 数据写入到 Swap 中。
  • 系统性能优化:适当的 Swap 可提高系统稳定性。

✅ 缺点

  • 速度慢:磁盘 I/O 速度远低于 RAM,频繁使用 Swap 会显著降低性能。
  • 磁盘磨损:在 SSD 上使用 Swap 可能会影响寿命。

🔥 2. 查看当前 Swap 信息

在 Linux 中,常用以下命令查看 Swap 使用情况:

# 查看 Swap 使用情况
free -h

# 查看 Swap 分区信息
swapon --show

# 查看 Swap 空间大小和使用率
cat /proc/swaps

# 使用 htop 查看内存和 Swap 信息
htop

✅ 示例输出

$ free -h
              total        used        free      shared  buff/cache   available
Mem:          7.8Gi       2.5Gi       4.3Gi       237Mi       1.0Gi       4.8Gi
Swap:         2.0Gi       512Mi       1.5Gi
  • total:总内存大小。
  • used:已使用的 Swap 空间。
  • free:可用 Swap 空间。

⚙️ 3. 创建 Swap 空间

如果你的系统没有 Swap 分区或想要扩展 Swap 空间,可以手动创建:

🛠️ 3.1 创建 Swap 文件

1️⃣ 创建一个新的 Swap 文件

sudo fallocate -l 2G /swapfile       # 创建 2G Swap 文件
# 如果 fallocate 不支持,可以使用 dd 命令
# sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

2️⃣ 设置正确权限

sudo mkswap /swapfile

3️⃣ 格式化为 Swap 格式

sudo mkswap /swapfile

4️⃣ 启用 Swap 文件

sudo swapon /swapfile

5️⃣ 验证 Swap 状态

swapon --show

✅ 示例输出

NAME      TYPE      SIZE USED PRIO
/swapfile file        2G   0B   -2

6️⃣ 永久生效 将 Swap 文件添加到 /etc/fstab:

echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab

🛠️ 4. 调整 Swap 大小

如果你想扩展或缩小现有的 Swap 空间:

1️⃣ 禁用当前 Swap

sudo swapoff /swapfile

2️⃣ 调整 Swap 大小

sudo fallocate -l 4G /swapfile   # 扩展为 4G
sudo chmod 600 /swapfile
sudo mkswap /swapfile

3️⃣ 重新启用

sudo swapon /swapfile

⚙️ 5. 删除 Swap 空间

如果不再需要 Swap 文件,可以删除:

1️⃣ 禁用 Swap

sudo swapoff /swapfile

2️⃣ 移除配置 编辑 /etc/fstab 文件,删除相关行:

/swapfile swap swap defaults 0 0

3️⃣ 删除 Swap 文件

sudo rm /swapfile

🔧 6. 调优 Swap 设置

Linux 使用 swappiness 参数控制内核在内存不足时使用 Swap 的倾向:

  • 0:尽量避免使用 Swap,仅在 RAM 不足时使用。
  • 1-100:数值越大,越倾向于使用 Swap。

    • 一般服务器推荐值:10-30
    • 桌面系统推荐值:60

✅ 查看当前 swappiness

cat /proc/sys/vm/swappiness

✅ 临时修改 swappiness

sudo sysctl vm.swappiness=10

✅ 永久修改 swappiness 编辑 /etc/sysctl.conf:

sudo nano /etc/sysctl.conf

添加:

vm.swappiness=10

保存后生效:

sudo sysctl -p

📊 7. Swap 与性能优化建议

  • 服务器环境

    • Swap 文件大小:物理内存的 1~2 倍。
    • swappiness:10~30,减少对磁盘的依赖。
  • 桌面环境

    • Swap 文件大小:等于物理内存大小。
    • swappiness:60~80,保证内存溢出时不崩溃。
  • 特殊情况

    • 如果使用 SSD,尽量减少 Swap,以减少磁盘磨损。
    • 使用 ZRAM 压缩 Swap,提高性能:
    sudo apt install zram-tools
    sudo systemctl enable --now zramswap

✅ 8. 总结

  • Swap 是 Linux 系统在内存不足时使用的虚拟内存。
  • 你可以使用 Swap 分区或 Swap 文件。
  • 调整 swappiness 参数可优化系统性能。
  • 小心使用 Swap 于 SSD,避免频繁读写带来磁盘损耗。
  • 在性能敏感的服务器环境中,尽量减少 Swap 的使用。

简介

Nginx是一个高效的Web服务器和反向代理服务器,广泛用于负载均衡、缓存和作为反向代理的解决方案。本教程将详细介绍如何在Linux环境下安装Nginx,并配置反向代理。

步骤一:更新系统

在安装任何软件之前,首先确保系统软件包是最新的。可以通过以下命令来更新系统:

sudo yum update -y  # 对于CentOS/RHEL系统
sudo apt update && sudo apt upgrade -y  # 对于Ubuntu/Debian系统

步骤二:安装Nginx

在Linux上安装Nginx相当简单,下面分别介绍在不同发行版上的安装方法。

对于CentOS/RHEL系统:

  1. 安装EPEL仓库:

    sudo yum install epel-release -y
  2. 安装Nginx:

    sudo yum install nginx -y

对于Ubuntu/Debian系统:

  1. 安装Nginx:

    sudo apt install nginx -y

步骤三:启动并配置Nginx

安装完成后,可以启动Nginx服务并设置其开机自启动。

  1. 启动Nginx服务:

    sudo systemctl start nginx
  2. 设置Nginx开机自启动:

    sudo systemctl enable nginx
  3. 检查Nginx状态:

    sudo systemctl status nginx

    如果Nginx正常启动,你应该可以通过浏览器访问服务器的IP地址,看到Nginx的默认欢迎页面。

步骤四:配置反向代理

反向代理是Nginx的一个重要功能,它能够将客户端请求转发到其他服务器上。这对于负载均衡或分离应用程序的前后端很有帮助。

  1. 编辑Nginx配置文件:

    Nginx的配置文件通常位于/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf,我们将编辑这个文件来添加反向代理配置。

    使用你喜欢的文本编辑器打开配置文件:

    sudo vi /etc/nginx/nginx.conf  # 或者 sudo vi /etc/nginx/conf.d/default.conf
  2. 配置反向代理:

    在server块中,加入如下配置,将流量代理到其他服务器。例如,将流量代理到http://127.0.0.1:3000:

    server {
        listen 80;
    
        server_name yourdomain.com;  # 修改为你自己的域名或IP地址
    
        location / {
            proxy_pass http://127.0.0.1:3000;  # 将请求转发到本地的3000端口
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }

    这里的proxy_pass指令定义了请求被转发的目标地址。可以根据你的实际需求,修改为指向不同的端口或服务。

  3. 保存并退出编辑器。
  4. 测试Nginx配置:

    在重新加载配置之前,先检查配置文件是否有语法错误:

    sudo nginx -t

    如果没有错误,你将看到类似“syntax is okay”和“test is successful”的提示。

  5. 重新加载Nginx配置:

    sudo systemctl reload nginx

步骤五:防火墙设置

如果你启用了防火墙,确保允许80端口的流量通过,以便外部可以访问Nginx。

  1. 对CentOS/RHEL系统启用HTTP服务:

    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --reload
  2. 对Ubuntu/Debian系统启用HTTP服务:

    sudo ufw allow 'Nginx HTTP'
    sudo ufw reload

步骤六:验证反向代理配置

现在,你可以通过访问Nginx的域名或IP地址来验证反向代理是否正常工作。如果一切配置正确,Nginx将转发请求到配置的后端服务器(如http://127.0.0.1:3000),并返回该服务器的响应。

总结

通过本教程,你已经学会了如何在Linux上安装Nginx并配置反向代理。Nginx作为反向代理服务器,不仅可以提高Web应用的性能,还能实现负载均衡和高可用性。希望这篇文章能够帮助你顺利完成配置,提升你的系统架构和服务质量。


引言

Docker 作为一种轻量级的容器化技术,已广泛应用于软件开发、部署和运维领域。本文旨在为 CentOS 7 用户提供Docker 安装指南。

1. 环境准备

在安装 Docker 之前,请确保您的系统满足以下条件:

  • 操作系统:CentOS 7(建议使用最新的 7.x 版本)
  • 内核版本:3.10 及以上(可使用 uname -r 检查)
  • 网络连接:确保服务器能够访问互联网以获取必要的软件包

2.卸载旧版本(可选)

如果系统中已存在旧版本的 Docker(如 docker, docker-client, docker-engine),建议先卸载以避免冲突:

sudo yum remove docker \
                docker-client \
                docker-client-latest \
                docker-common \
                docker-latest \
                docker-latest-logrotate \
                docker-logrotate \
                docker-engine

⚠️ 注意事项

  • 关于yum源失效问题:bash <(curl -sSL https://linuxmirrors.cn/main.sh)

3.安装必要的依赖包

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

这些依赖包可确保 Docker 的存储驱动和容器管理功能正常运行。

4. 添加 Docker 仓库

使用官方提供的 Docker 仓库可以确保获取到最新稳定版本:

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

如果不成功请更换其他Docker仓库并非一定要官方仓库

5. 安装 Docker Engine

安装最新版本的 Docker Engine 及其组件:

sudo yum install -y docker-ce docker-ce-cli containerd.io

如需安装特定版本,可以使用以下命令查看可用版本:

yum list docker-ce --showduplicates | sort -r

然后指定版本安装:

sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

6. 启动并设置开机自启

sudo systemctl start docker
sudo systemctl enable docker

验证 Docker 是否安装成功:

docker --version
sudo docker run hello-world

成功输出 Hello from Docker! 表示安装完成。

7. 配置加速器(可选)

为了提升国内环境下的镜像下载速度,可以配置镜像加速器:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://<your-mirror-address>"]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

网址自行百度docker镜像站替换https://<your-mirror-address>即可

8. 常见问题及解决方案

问题 1:Cannot connect to the Docker daemon

解决方案:确保 Docker 服务已启动。

sudo systemctl start docker

问题 2:防火墙导致容器网络不通
解决方案:调整防火墙规则,或使用 firewalld 进行端口放通。

sudo firewall-cmd --permanent --zone=public --add-masquerade
sudo firewall-cmd --reload

结语

通过本文的详细步骤,您应该能够在 CentOS 7 上成功安装并配置 Docker。随着容器化技术的广泛应用,掌握 Docker 的基础操作将极大提升开发与运维效率。如果遇到更多问题,建议查阅 Docker 官方文档 以获取最新支持。