凌峰创科服务平台

Apache静态网站如何配置部署?

什么是静态网站?

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

Apache静态网站如何配置部署?-图1
(图片来源网络,侵删)

特点:

  • 速度快: 服务器只需将文件发送给浏览器,无需执行任何计算或查询数据库。
  • 安全性高: 没有服务器端脚本(如 PHP),大大减少了被攻击的风险。
  • 成本低: 对服务器资源要求低,非常适合部署在廉价的虚拟主机或 VPS 上。
  • 易于维护: 只需管理文件,无需关心数据库和后端逻辑。

常见工具:

  • HTML/CSS/JS: 网站的前端基础。
  • 静态网站生成器: 如 Hugo, Jekyll, Hexo, Gatsby 等,它们可以让你用 Markdown 等更简单的语言写作,然后自动生成完整的静态网站文件。

环境准备:安装 Apache

在开始之前,你需要一个已经安装了 Apache 的 Linux 服务器,这里以 Ubuntu/Debian 为例,CentOS/RHEL 的命令类似(使用 yumdnf)。

# 更新软件包列表
sudo apt update
# 安装 Apache2
sudo apt install apache2
# 检查 Apache 服务状态
sudo systemctl status apache2

安装完成后,打开你的浏览器,访问服务器的 IP 地址(http://your_server_ip),如果看到 "It works!" 页面,说明 Apache 已经成功运行。

Apache静态网站如何配置部署?-图2
(图片来源网络,侵删)

目录结构:网站文件放在哪里?

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 管理你的网站

虚拟主机允许你在一台服务器上托管多个网站,每个网站都有自己的域名和配置文件。

Apache静态网站如何配置部署?-图3
(图片来源网络,侵删)

1 创建配置文件

Apache 的配置文件通常存放在 /etc/apache2/sites-available/ 目录下,我们可以复制一个默认配置文件作为模板。

# 复制默认配置文件
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/my-static-site.conf

2 编辑配置文件

使用你喜欢的编辑器(如 nanovim)打开新创建的配置文件:

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 提供免费的证书。

步骤:

  1. 安装 Certbot:
    sudo apt install certbot python3-certbot-apache
  2. 自动获取证书并配置 Apache:
    # 替换 'your_domain.com' 为你的域名
    sudo certbot --apache -d your_domain.com -d www.your_domain.com

    Certbot 会自动检测你的域名,获取证书,并修改你的 Apache 配置文件,添加 HTTPS 的虚拟主机配置。

3 启用 Gzip 压缩

启用 Gzip 压缩可以大大减小传输文件的大小,从而加快网站加载速度。

  1. 启用模块:
    sudo a2enmod deflate
  2. 创建配置文件:
    sudo nano /etc/apache2/conf-available/deflate.conf
  3. 添加以下内容:
    <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>
  4. 启用配置并重启 Apache:
    sudo a2enconf deflate
    sudo systemctl reload apache2

4 配置缓存

通过设置 ExpiresCache-Control 头,可以告诉浏览器哪些文件可以缓存,从而减少重复请求,提升二次访问速度。

  1. 启用模块:

    sudo a2enmod expires
  2. 在虚拟主机配置中添加:

    <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>
  3. 重启 Apache:

    sudo systemctl reload apache2

安全最佳实践

  1. 保持软件更新: 定期更新系统和 Apache。
    sudo apt update && sudo apt upgrade
  2. 限制目录列表: 确保生产环境的 Options 中没有 Indexes,否则如果访问一个不存在的文件,服务器会列出目录内容。
  3. 关闭不必要的模块: 使用 a2dismod 关闭你不需要的 Apache 模块,减少攻击面。
  4. 使用防火墙: 只开放必要的端口(如 80, 443)。
    sudo ufw allow 'Apache Full'
  5. 定期备份: 定期备份你的网站文件和 Apache 配置文件。

使用 Apache 托管一个静态网站是一个简单而高效的过程,核心步骤可以概括为:

  1. 安装 Apache 并确认其运行正常。
  2. 将网站文件 放置在 /var/www 下的自定义目录。
  3. 创建并配置虚拟主机 (/etc/apache2/sites-available/your-site.conf),指定 DocumentRoot 和相关权限。
  4. 启用站点 (a2ensite) 并 重启/重载 Apache (systemctl reload apache2)。
  5. 进行进阶优化,如启用 HTTPS、Gzip 压缩和浏览器缓存,以提升性能和安全性。

遵循这些步骤,你就可以快速搭建一个安全、快速的静态网站了。

分享:
扫描分享到社交APP
上一篇
下一篇