这个过程适用于大多数主流的 Linux 发行版,如 Ubuntu/DebianCentOS/RHEL,我会尽量提供不同发行版的命令。


总览:搭建网站的核心步骤

  1. 准备工作:获取一台云服务器或 VPS,并连接到它。
  2. 基础配置:更新系统、设置防火墙、创建用户。
  3. 安装 Web 服务器:安装并配置 Apache。
  4. 安装数据库:安装并配置 MariaDB (MySQL 的一个分支)。
  5. 安装编程语言环境:安装 PHP。
  6. 创建网站:配置虚拟主机,存放网站文件。
  7. 部署网站内容:上传你的网站代码(WordPress)。
  8. 安全加固:配置 SSL 证书,启用 HTTPS。

第一步:准备工作

  1. 购买/准备服务器

    • 选择一个云服务提供商,如阿里云、腾讯云、AWS、Vultr、DigitalOcean 等。
    • 选择一个 Linux 发行版,Ubuntu 20.04/22.04CentOS 7/8 是非常好的选择,对于新手,Ubuntu 更友好。
    • 购买符合你需求的配置(1核CPU/2GB内存/40GB硬盘起步就足够)。
  2. 连接服务器

    • 服务器创建成功后,你会获得一个公网 IP 地址。
    • 使用 SSH (Secure Shell) 客户端连接你的服务器,在 Windows 上,可以使用 PuTTYWindows Terminal + WSL;在 macOS 或 Linux 上,可以直接使用终端。
    • 命令格式:
      ssh root@你的服务器公网IP
    • 首次登录时,系统可能会询问你是否信任该主机的指纹,输入 yes 即可,然后输入你在购买时设置的 root 密码。

第二步:基础系统配置

  1. 更新系统包

    • Ubuntu/Debian:
      sudo apt update && sudo apt upgrade -y
    • CentOS/RHEL:
      sudo yum update -y
  2. 设置防火墙

    • Ubuntu/Debian (使用 UFW):
      # 允许 SSH 连接(必须,否则可能把自己锁在外面)
      sudo ufw allow OpenSSH
      # 允许 HTTP (80) 和 HTTPS (443) 端口
      sudo ufw allow 'Apache Full'
      # 启用防火墙
      sudo ufw enable
      # 输入 'y' 确认
    • CentOS/RHEL (使用 firewalld):
      # 启动防火墙并设置开机自启
      sudo systemctl start firewalld
      sudo systemctl enable 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
  3. 创建新用户 (推荐)

    • 为了安全,不要一直使用 root 用户操作,创建一个具有 sudo 权限的新用户。
    • your_user 替换为你想要的用户名。
      # 创建用户
      adduser your_user
      # 为新用户设置密码
      passwd your_user
      # 将新用户添加到 sudo 组
      usermod -aG sudo your_user
    • 之后,你可以断开 root 连接,用 ssh your_user@你的服务器公网IP 重新登录。

第三步:安装 Web 服务器 (Apache)

Apache 是世界上最流行的 Web 服务器软件之一。

  1. 安装 Apache

    • Ubuntu/Debian:
      sudo apt install apache2 -y
    • CentOS/RHEL:
      sudo yum install httpd -y
  2. 启动并设置开机自启

    • Ubuntu/Debian:
      sudo systemctl start apache2
      sudo systemctl enable apache2
    • CentOS/RHEL:
      sudo systemctl start httpd
      sudo systemctl enable httpd
    • 注意:在 CentOS 上,Apache 默认监听的端口是 8080,而不是 80,你需要修改配置文件 /etc/httpd/conf/httpd.conf,将 Listen 8080 改为 Listen 80,然后重启 httpd 服务。
  3. 测试 Apache

    • 在你的浏览器中输入 http://你的服务器公网IP
    • 如果看到 "Apache2 Ubuntu Default Page" 或 "Apache HTTP Server Test Page" 等字样,说明 Apache 安装成功!

第四步:安装数据库 (MariaDB)

MariaDB 是 MySQL 的一个完全开源的分支,性能和兼容性都很好。

  1. 安装 MariaDB

    • Ubuntu/Debian:
      sudo apt install mariadb-server mariadb-client -y
    • CentOS/RHEL:
      sudo yum install mariadb-server mariadb -y
  2. 启动并设置开机自启

    • sudo systemctl start mariadb
      sudo systemctl enable mariadb
  3. 运行安全脚本 (非常重要!)

    • 这个脚本会帮你设置 root 密码、移除匿名用户、禁止远程 root 登录等。
    • 运行以下命令,然后根据提示操作:
      sudo mysql_secure_installation
    • 大部分选项直接按回车键选择默认值即可,但设置 root 密码时请务必设置一个强密码。

第五步:安装 PHP

PHP 是一种用于服务器端编程的语言,绝大多数网站(如 WordPress、Drupal)都使用它。

  1. 安装 PHP 和常用扩展

    • Ubuntu/Debian:
      sudo apt install php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip -y
    • CentOS/RHEL:
      # 首先安装 EPEL 仓库
      sudo yum install epel-release -y
      # 安装 PHP 和常用扩展
      sudo yum install php php-mysqlnd php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip -y
  2. 测试 PHP

    • 创建一个测试文件,让 Apache 来处理它。
      # 在 Ubuntu/Debian 上
      sudo nano /var/www/html/info.php
      # 在 CentOS/RHEL 上
      sudo nano /var/www/html/info.php
    • 在打开的文件中输入以下内容:
      <?php
      phpinfo();
      ?>
    • Ctrl + X,然后按 Y,再按 Enter 保存退出。
    • 在浏览器中访问 http://你的服务器公网IP/info.php
    • 如果看到一个显示 PHP 详细信息的页面,说明 PHP 安装成功。
    • 安全提示:测试完成后,建议立即删除该文件!
      sudo rm /var/www/html/info.php

第六步:创建网站 (配置虚拟主机)

虚拟主机允许你在一台服务器上托管多个网站。

  1. 创建网站目录

    • 我们假设要创建一个名为 example.com 的网站。
    • # 创建网站根目录
      sudo mkdir -p /var/www/example.com
      # 设置目录所有者
      sudo chown -R $USER:$USER /var/www/example.com
      # 给目录设置正确的权限
      sudo chmod -R 755 /var/www/example.com
  2. 创建虚拟主机配置文件

    • Ubuntu/Debian:

      sudo nano /etc/apache2/sites-available/example.com.conf
    • CentOS/RHEL:

      sudo nano /etc/httpd/conf.d/example.com.conf
    • 粘贴到文件中,并替换 example.com 为你的域名:

      <VirtualHost *:80>
          ServerAdmin webmaster@example.com
          ServerName example.com
          ServerAlias www.example.com
          DocumentRoot /var/www/example.com
          ErrorLog ${APACHE_LOG_DIR}/error.log
          CustomLog ${APACHE_LOG_DIR}/access.log combined
      </VirtualHost>
  3. 启用虚拟主机

    • Ubuntu/Debian:
      # 启用新配置
      sudo a2ensite example.com.conf
      # 禁用默认的站点 (可选)
      sudo a2dissite 000-default.conf
      # 重启 Apache 使配置生效
      sudo systemctl restart apache2
    • CentOS/RHEL:
      # 重启 Apache 使配置生效
      sudo systemctl restart httpd

第七步:部署网站内容

你的服务器已经准备好接收网站文件了,你可以通过以下方式之一来部署:

  • 上传静态文件

    • 使用 SFTP (如 FileZilla, WinSCP) 或 scp 命令将你的 HTML, CSS, JavaScript 文件上传到 /var/www/example.com/ 目录。
  • 使用 CMS (如 WordPress)

    • 这是最常见的方式,我们需要下载并解压 WordPress 到网站目录。
    • # 进入网站目录
      cd /var/www/example.com
      # 下载 WordPress (请访问官网获取最新版本链接)
      sudo wget https://wordpress.org/latest.tar.gz
      # 解压
      sudo tar -xzvf latest.tar.gz
      # 将解压后的文件移动到根目录
      sudo mv wordpress/* .
      # 设置正确的所有者和权限
      sudo chown -R www-data:www-data /var/www/example.com
      sudo find /var/www/example.com -type d -exec chmod 755 {} \;
      sudo find /var/www/example.com -type f -exec chmod 644 {} \;
    • 在浏览器中访问 http://example.com,你将看到 WordPress 的安装向导,按照提示操作,你需要之前创建的 MariaDB 数据库信息。

第八步:安全加固 (启用 HTTPS)

使用 HTTPS 协议可以加密用户和服务器之间的通信,保护数据安全,我们可以使用 Let's Encrypt 提供的免费 SSL 证书。

  1. 安装 Certbot

    • Ubuntu/Debian:
      sudo apt install certbot python3-certbot-apache -y
    • CentOS/RHEL:
      sudo yum install certbot python3-certbot-apache -y
  2. 获取并安装 SSL 证书

    • Certbot 会自动检测你的 Apache 配置,并获取证书。
    • your_email@example.com 替换为你的邮箱,example.com 替换为你的域名。
    • sudo certbot --apache --agree-tos --redirect -m your_email@example.com -d example.com -d www.example.com
    • 这个命令会:
      • --apache: 自动配置 Apache。
      • --agree-tos: 同意服务条款。
      • --redirect: 自动将 HTTP 请求重定向到 HTTPS。
      • -d: 指定要保护的域名。
  3. 验证和自动续期

    • Certbot 会自动设置证书的续期任务,你无需担心证书过期。
    • 你可以通过以下命令检查续期任务是否成功设置:
      sudo systemctl status certbot.timer
    • 如果看到 active (enabled),说明一切正常。

总结与后续

恭喜!你已经成功在 Linux 服务器上搭建了一个安全的网站。

后续你可以做的事情:

  • 域名解析:到你的域名注册商处,将 example.comwww.example.com 的 A 记录指向你的服务器公网 IP。
  • 性能优化:配置缓存(如 OPcache)、启用 Gzip 压缩。
  • 使用更快的 Web 服务器:如 Nginx,通常作为 Apache 的反向代理来提升性能。
  • 配置邮件服务器:使用 Postfix 或 Exim 来发送网站通知邮件。
  • 定期备份:设置自动备份脚本,定期备份你的网站文件和数据库。

这个指南为你提供了一个坚实的基础,搭建服务器是一个不断学习和实践的过程,遇到问题多查官方文档和社区,你会越来越熟练。