《Linux服务器架设指南(第2版》
前言:欢迎来到现代化的服务器世界

第2版的指南不再仅仅关注“如何安装”,而是更加强调“如何安全、高效、可扩展地构建和管理一个现代化的服务器环境”,我们将以当前主流的 Ubuntu Server 22.04 LTS 为主要示例操作系统,同时兼顾 CentOS Stream / Rocky Linux 9 的用户,本指南将贯穿 DevOps 的最佳实践,包括命令行操作、自动化配置、容器化部署和监控告警。
第一部分:基础准备与环境搭建
第一章:选择与安装 Linux 发行版
-
主流发行版选择
- Ubuntu Server (推荐初学者):社区活跃、文档丰富、软件包更新快、默认使用现代化的
systemd和Netplan网络配置,LTS (长期支持) 版本提供5年的免费安全维护。 - Rocky Linux / CentOS Stream / AlmaLinux:由 Red Hat Enterprise Linux (RHEL) 源代码构建,在企业环境中应用广泛,稳定性极高,适合需要长期稳定支持的生产环境。
- Debian:以其稳定性和“自由软件”理念著称,是许多其他发行版(包括Ubuntu)的基础。
- Ubuntu Server (推荐初学者):社区活跃、文档丰富、软件包更新快、默认使用现代化的
-
准备工作
- 硬件:一台物理机或虚拟机(推荐至少 2核CPU, 4GB RAM, 40GB 硬盘)。
- 网络:确保服务器能连接到互联网,并获取一个静态 IP 地址。
- 安装介质:从官网下载对应发行版的 ISO 镜像文件,并制作可启动的 U 盘。
-
安装步骤 (以 Ubuntu Server 为例)
(图片来源网络,侵删)- 启动与语言选择:从 U 盘启动,选择安装语言和键盘布局。
- 网络配置:配置静态 IP 地址(
Netplan配置文件),这是服务器管理的基石。 - 磁盘分区:
- 新手推荐:使用“整个磁盘 LVM”选项,LVM (逻辑卷管理) 提供了极大的灵活性,方便未来扩容。
- 自定义分区:为
/boot, ,/home,/var,swap等分区设置合适的文件系统(如ext4)。
- 用户与安全:
- 创建一个非 root 的管理员用户(
deploy),并为其设置强密码。 - 安装 OpenSSH 服务器,以便后续通过远程管理。
- 关键一步:在安装过程中,系统会询问是否允许“root”用户通过 SSH 登录。务必选择“否”,这是服务器的第一道安全防线。
- 创建一个非 root 的管理员用户(
-
首次登录与系统更新
# 使用你创建的用户登录 ssh deploy@your_server_ip # 切换到 root 用户(后续操作需要) sudo su - # 更新所有软件包到最新版本 apt update && apt upgrade -y
第二部分:核心服务架设
第二章:安全加固 (Security Hardening)
在部署任何服务之前,必须先加固服务器。
-
配置防火墙 (UFW / Firewalld)
-
Ubuntu (UFW - Uncomplicated Firewall):
(图片来源网络,侵删)# 允许 SSH 连接 (必须先做!) sudo ufw allow OpenSSH # 允许 HTTP (80) 和 HTTPS (443) 端口 sudo ufw allow 'Nginx Full' # 或 sudo ufw allow 80/tcp && sudo ufw allow 443/tcp # 启用防火墙 sudo ufw enable
-
CentOS (Firewalld):
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
-
-
禁用 root 登录与使用密钥
- 编辑 SSH 配置文件:
sudo nano /etc/ssh/sshd_config
- 确保以下配置项:
PermitRootLogin no PasswordAuthentication no # 强制使用 SSH 密钥 PubkeyAuthentication yes - 重启 SSH 服务:
sudo systemctl restart sshd
- 编辑 SSH 配置文件:
-
定期更新系统
- 设置
unattended-upgrades(Ubuntu) 或yum-cron(CentOS) 实现安全补丁的自动安装。
- 设置
第三章:Web 服务器 (Nginx)
Nginx 以其高性能、稳定性和低资源消耗而闻名。
-
安装 Nginx
sudo apt install nginx -y
-
配置虚拟主机
-
创建一个配置文件,
/etc/nginx/sites-available/mywebsiteserver { listen 80; server_name your_domain.com www.your_domain.com; root /var/www/mywebsite/html; index index.html index.htm; location / { try_files $uri $uri/ =404; } }
-
-
启用站点并测试
# 创建网站根目录 sudo mkdir -p /var/www/mywebsite/html echo "Hello from Nginx!" | sudo tee /var/www/mywebsite/html/index.html # 启用站点 sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/ # 测试配置并重载 sudo nginx -t sudo systemctl reload nginx
第四章:数据库服务 (MySQL / MariaDB)
选择 MariaDB (MySQL 的一个分支),它是大多数 Linux 发行版的默认数据库。
-
安装 MariaDB
sudo apt install mariadb-server -y
-
安全初始化
sudo mysql_secure_installation
按照提示设置 root 密码,移除匿名用户,禁止 root 远程登录,移除测试数据库,并重新加载权限表。
-
创建数据库和用户
# 登录数据库 sudo mysql -- 在 MariaDB shell 中执行 CREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'a_very_strong_password'; GRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'localhost'; FLUSH PRIVILEGES; EXIT;
第五章:后端服务 (PHP-FPM)
如果你的网站需要 PHP 支持(如 WordPress, Laravel),可以使用 PHP-FPM。
-
安装 PHP-FPM 及常用扩展
sudo apt install php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip -y
-
配置 Nginx 处理 PHP
- 修改你的 Nginx 虚拟主机配置文件 (
/etc/nginx/sites-available/mywebsite),添加以下location块:location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 版本号可能不同 } - 重载 Nginx:
sudo systemctl reload nginx
- 修改你的 Nginx 虚拟主机配置文件 (
第六章:版本控制与自动化部署
-
安装 Git
sudo apt install git -y
-
部署网站代码
- 在你的服务器上创建一个部署用户(
git),并将其加入www-data组(Nginx 运行用户)。sudo useradd -m -s /bin/bash -G www-data git sudo passwd git
- 将你的网站代码通过 Git 推送到服务器上的一个目录(
/var/www/mywebsite)。
- 在你的服务器上创建一个部署用户(
第七章:容器化部署 (Docker)
这是第2版的重点,引入现代化的部署方式。
-
安装 Docker
# 官方推荐的安装脚本 curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo usermod -aG docker $USER # 将当前用户加入 docker 组 newgrp docker # 激活组权限
-
使用 Docker 部署应用 (示例:WordPress)
- 创建
docker-compose.yml文件:version: '3.8'
services: db: image: mysql:5.7 volumes:
- db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress
wordpress: depends_on:
- db image: wordpress:latest ports:
- "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpress volumes:
- ./wp-content:/var/www/html/wp-content
volumes: db_data:
* 启动服务: ```bash docker-compose up -d- 访问
http://your_server_ip:8000即可完成 WordPress 安装。
- 创建
第三部分:进阶与运维
第八章:监控与日志
-
监控 (Prometheus + Grafana)
- Prometheus:用于收集和存储时间序列数据。
- Node Exporter:在服务器上运行,暴露硬件和操作系统指标。
- Grafana:用于可视化 Prometheus 中的数据,创建美观的仪表盘。
-
日志管理 (ELK Stack / EFK Stack)
- Elasticsearch:搜索引擎,用于存储和搜索日志。
- Logstash:数据处理管道,用于收集、过滤和转换日志。
- Kibana:用于可视化和探索 Elasticsearch 中的日志数据。
- Filebeat:轻量级日志收集器,替代 Logstash 的一部分功能。
第九章:备份策略
- 重要原则:定期备份,并定期测试恢复!
- 备份工具:
rsync:用于文件系统的增量备份,灵活高效。tar:用于打包整个目录或系统。mysqldump:用于备份数据库。
- 自动化备份脚本:编写一个 Shell 脚本,结合
cron定时任务,实现自动化备份。# 示例:每天凌晨2点备份 /var/www 目录到 /backup 0 2 * * * /usr/bin/rsync -avz --delete /var/www/ /backup/www/
第十章:持续集成/持续部署 (CI/CD) 简介
- 工具:GitLab CI/CD, Jenkins, GitHub Actions。
- 流程:当代码推送到 Git 仓库的特定分支(如
main或master)时,CI/CD 流水线自动触发,执行代码检查、单元测试、构建 Docker 镜像、并部署到服务器上,实现应用的快速迭代和交付。
这份第2版的《Linux服务器架设指南》为你提供了一个从零开始构建现代化、安全、可扩展服务器的完整路径。
核心要点回顾:
- 安全第一:防火墙、禁用 root、使用密钥。
- 基础扎实:稳定的网络配置和系统更新。
- 服务核心:Nginx + 数据库 + 应用程序。
- 拥抱现代化:学习并使用 Docker 进行容器化部署。
- 运维保障:完善的监控、日志和备份体系。
服务器架设是一个持续学习和实践的过程,希望这份指南能成为你手中的一张地图,助你在 Linux 的世界里探索和前行。
