什么是静态网站?
静态网站是由预先生成的 HTML、CSS、JavaScript 文件以及图片、视频等媒体资源组成的网站,它的内容在服务器上是固定的,不会根据用户的请求动态生成。

特点:
- 速度快: 服务器只需将文件发送给浏览器,无需执行任何计算或查询数据库。
- 安全性高: 没有服务器端脚本(如 PHP),大大减少了被攻击的风险。
- 成本低: 对服务器资源要求低,非常适合部署在廉价的虚拟主机或 VPS 上。
- 易于维护: 只需管理文件,无需关心数据库和后端逻辑。
常见工具:
- HTML/CSS/JS: 网站的前端基础。
- 静态网站生成器: 如 Hugo, Jekyll, Hexo, Gatsby 等,它们可以让你用 Markdown 等更简单的语言写作,然后自动生成完整的静态网站文件。
环境准备:安装 Apache
在开始之前,你需要一个已经安装了 Apache 的 Linux 服务器,这里以 Ubuntu/Debian 为例,CentOS/RHEL 的命令类似(使用 yum 或 dnf)。
# 更新软件包列表 sudo apt update # 安装 Apache2 sudo apt install apache2 # 检查 Apache 服务状态 sudo systemctl status apache2
安装完成后,打开你的浏览器,访问服务器的 IP 地址(http://your_server_ip),如果看到 "It works!" 页面,说明 Apache 已经成功运行。

目录结构:网站文件放在哪里?
Apache 默认的网站根目录是 /var/www/html,所有放在这个目录下的文件都可以通过 HTTP 访问。
# 默认网站根目录 /var/www/html/
最佳实践: 为每个网站创建一个独立的目录,而不是都堆在 html 里。
假设我们要部署一个名为 my-static-site 的网站,我们可以这样做:
# 在 /var/www 下创建你的网站目录 sudo mkdir -p /var/www/my-static-site # 将你的网站文件(index.html, style.css, images/)复制到这个目录 # 假设你的网站文件在当前目录的 'site-files' 文件夹里 sudo cp -r site-files/* /var/www/my-static-site/ # 设置正确的文件所有者,这样你就可以不用 sudo 直接编辑文件 # www-data 是 Apache 默认运行的用户 sudo chown -R www-data:www-data /var/www/my-static-site
配置虚拟主机:让 Apache 管理你的网站
虚拟主机允许你在一台服务器上托管多个网站,每个网站都有自己的域名和配置文件。

1 创建配置文件
Apache 的配置文件通常存放在 /etc/apache2/sites-available/ 目录下,我们可以复制一个默认配置文件作为模板。
# 复制默认配置文件 sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/my-static-site.conf
2 编辑配置文件
使用你喜欢的编辑器(如 nano 或 vim)打开新创建的配置文件:
sudo nano /etc/apache2/sites-available/my-static-site.conf
如下,这是最核心的配置:
# ServerName 是你的域名,如果你还没有域名,可以先使用服务器的 IP
# ServerName my-static-site.com
# ServerAdmin 是网站管理员的邮箱,用于出错时联系
ServerAdmin webmaster@my-static-site.com
# 指定你网站的根目录
DocumentRoot /var/www/my-static-site
# 对根目录下的文件进行权限和设置
<Directory /var/www/my-static-site>
# 允许所有主机访问
Require all granted
# 尝试访问的文件顺序,如果访问 / 会依次查找 index.html, index.htm
DirectoryIndex index.html index.htm
# 启用 .htaccess 文件(如果需要)
AllowOverride All
# 如果目录下没有 index 文件,则列出目录内容(生产环境建议关闭)
# Options Indexes FollowSymLinks
# 生产环境建议设置为:
Options FollowSymLinks
</Directory>
# 可选:配置自定义错误页面
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
3 启用站点
配置文件创建好后,需要启用它。a2ensite 是一个方便的 Apache 工具。
# 启用你的网站配置 sudo a2ensite my-static-site.conf # 禁用默认的 "It works!" 站点(可选) sudo a2dissite 000-default.conf
4 重启 Apache
让所有配置更改生效。
# 重新加载配置(推荐,不会中断现有连接) sudo systemctl reload apache2 # 或者完全重启服务 sudo systemctl restart apache2
访问你的服务器 IP 或域名,就应该能看到你的静态网站了!
进阶配置与优化
1 启用 .htaccess 文件
.htaccess 是一个强大的工具,允许你在不修改主配置文件的情况下,对目录进行配置,实现 URL 重写、设置密码保护等。
要启用 .htaccess,确保你的虚拟主机配置中有以下两行:
<Directory /var/www/my-static-site>
# ... 其他配置 ...
AllowOverride All # 这一行是关键
# ... 其他配置 ...
</Directory>
然后在你的网站根目录下创建一个 .htaccess 文件。
示例:重定向 HTTP 到 HTTPS
# .htaccess 文件内容
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
2 配置 HTTPS (强烈推荐)
为了让网站更安全,你应该为你的域名配置 SSL 证书,启用 HTTPS。Let's Encrypt 提供免费的证书。
步骤:
- 安装 Certbot:
sudo apt install certbot python3-certbot-apache
- 自动获取证书并配置 Apache:
# 替换 'your_domain.com' 为你的域名 sudo certbot --apache -d your_domain.com -d www.your_domain.com
Certbot 会自动检测你的域名,获取证书,并修改你的 Apache 配置文件,添加 HTTPS 的虚拟主机配置。
3 启用 Gzip 压缩
启用 Gzip 压缩可以大大减小传输文件的大小,从而加快网站加载速度。
- 启用模块:
sudo a2enmod deflate
- 创建配置文件:
sudo nano /etc/apache2/conf-available/deflate.conf
- 添加以下内容:
<IfModule mod_deflate.c> # 压缩 HTML, CSS, JavaScript, XML, 字体文件 AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/x-font-ttf AddOutputFilterByType DEFLATE font/opentype AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE application/vnd.ms-fontobject </IfModule> - 启用配置并重启 Apache:
sudo a2enconf deflate sudo systemctl reload apache2
4 配置缓存
通过设置 Expires 和 Cache-Control 头,可以告诉浏览器哪些文件可以缓存,从而减少重复请求,提升二次访问速度。
-
启用模块:
sudo a2enmod expires
-
在虚拟主机配置中添加:
<IfModule mod_expires.c> ExpiresActive On # 默认缓存控制 ExpiresDefault "access plus 1 month" # 对特定类型文件设置缓存策略 <FilesMatch "\.(jpg|jpeg|png|gif|ico|css|js|pdf|zip|tar|gz|rar|swf|flv|woff|woff2|ttf|eot)$"> # 缓存1年 ExpiresDefault "access plus 1 year" # 启用长久的缓存控制头 Header set Cache-Control "public, immutable" </FilesMatch> </IfModule> -
重启 Apache:
sudo systemctl reload apache2
安全最佳实践
- 保持软件更新: 定期更新系统和 Apache。
sudo apt update && sudo apt upgrade
- 限制目录列表: 确保生产环境的
Options中没有Indexes,否则如果访问一个不存在的文件,服务器会列出目录内容。 - 关闭不必要的模块: 使用
a2dismod关闭你不需要的 Apache 模块,减少攻击面。 - 使用防火墙: 只开放必要的端口(如 80, 443)。
sudo ufw allow 'Apache Full'
- 定期备份: 定期备份你的网站文件和 Apache 配置文件。
使用 Apache 托管一个静态网站是一个简单而高效的过程,核心步骤可以概括为:
- 安装 Apache 并确认其运行正常。
- 将网站文件 放置在
/var/www下的自定义目录。 - 创建并配置虚拟主机 (
/etc/apache2/sites-available/your-site.conf),指定DocumentRoot和相关权限。 - 启用站点 (
a2ensite) 并 重启/重载 Apache (systemctl reload apache2)。 - 进行进阶优化,如启用 HTTPS、Gzip 压缩和浏览器缓存,以提升性能和安全性。
遵循这些步骤,你就可以快速搭建一个安全、快速的静态网站了。
