从零搭建web网站

一、准备工作 + 背景

在我们动手前,先明确几个概念和环境假设:

  • Apache HTTP Server(简称 Apache)是一个广泛使用的开源 Web 服务器软件。(维基百科)
  • “搭建 Web 服务器”指的是让这台 Linux 机器能接收 HTTP(和后续可以加 HTTPS)请求,并返回网页或其他资源给访问者。
  • 你需要:

     1. 一台 Linux 系统(Ubuntu / Debian / CentOS / RHEL / Fedora 等)

     2. sudo 权限(或 root)

     3. 网络连通性(客户端能访问这台机器的 IP /域名)

     4. 防火墙 /网络策略允许 80 端口(HTTP)和最终可能的 443 端口(HTTPS)通行


二、安装 Apache

安装方式取决于你用的发行版(Ubuntu / Debian 系列,或 CentOS / RHEL / Fedora 等)。

Ubuntu / Debian 系列

sudo apt update
sudo apt install apache2 -y

安装完成后:

sudo systemctl start apache2
sudo systemctl enable apache2

检查状态:

sudo systemctl status apache2

如果你在浏览器访问 “http://你的服务器IP/” 出现 Apache 默认页面(通常一个 “It works!” 或 “Apache2 Ubuntu Default Page” 的页面),说明基本安装成功。(Ubuntu)

CentOS / RHEL / Fedora 系列

以 CentOS / RHEL 为例:

sudo yum update -y        # 或者在新版本上用 dnf
sudo yum install httpd -y

之后:

sudo systemctl start httpd
sudo systemctl enable httpd

检查状态:

sudo systemctl status httpd

(在某些较新的系统上,用 dnf 代替 yum)(GeeksforGeeks)


三、配置防火墙 / 网络访问

即便 Apache 安装好了,如果防火墙阻止了 HTTP 流量,外部访问也不成功。要确保 80 端口(及将来 443)是开放的。

  • Ubuntu / Debian + UFW(如果你启用了 ufw):

    sudo ufw allow 'Apache Full'   # 这会允许 HTTP (80) + HTTPS (443)
  • CentOS / RHEL + firewalld

    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    sudo firewall-cmd --reload

如果你不使用 firewalld、用 iptables 或其他防火墙工具,要相应配置允许进出的 TCP 80 和 443 通信。


四、网站内容与目录结构

Apache 安装后,有默认的 “站点根目录”(Document Root),放你网页资源(HTML、CSS、图片、JavaScript、PHP 脚本等)。你可以使用默认的,也可以自定义。

  • 在 Ubuntu / Debian 上,默认根目录通常是 /var/www/html/
  • 在 CentOS / RHEL 上,默认根目录通常是 /var/www/html(或 /var/www/ 下)

你可以试一下:

echo "<h1>Hello, Apache!</h1>" | sudo tee /var/www/html/index.html

然后在浏览器访问 “http://服务器IP/” 看看是否显示 “Hello, Apache!”。

如果你想把站点放在一个自定义路径,比如 /home/myweb,你需要:

  1. 在 Apache 的配置里修改 DocumentRoot 和对应 <Directory>
  2. 确认目录权限允许 Apache 用户访问
  3. 重启 Apache

五、虚拟主机(Virtual Host / VirtualHost)

当你要在一台服务器上托管多个域名(如 example.comblog.example.com)时,就用虚拟主机。这样 Apache 会根据访问的域名决定要给哪一个网站响应。

一个简化的虚拟主机配置示例(假设在 Ubuntu 上):

/etc/apache2/sites-available/yourdomain.conf,写入:

<VirtualHost *:80>
    ServerName yourdomain.com
    ServerAlias www.yourdomain.com
    DocumentRoot /var/www/yourdomain

    ErrorLog ${APACHE_LOG_DIR}/yourdomain_error.log
    CustomLog ${APACHE_LOG_DIR}/yourdomain_access.log combined
</VirtualHost>

然后:

sudo mkdir -p /var/www/yourdomain
sudo chown -R www-data:www-data /var/www/yourdomain
sudo chmod -R 755 /var/www/yourdomain

启用站点(Ubuntu 上):

sudo a2ensite yourdomain.conf
sudo systemctl reload apache2

在 CentOS / RHEL 上,你可能把虚拟主机配置放在 /etc/httpd/conf.d/yourdomain.conf,然后重启 httpd 服务。(youstable.com)


六、启用 HTTPS(TLS / SSL):让你的网站支持安全连接

为了让访问者用 https://(而不是仅仅 http://),你需要给 Apache 配置 SSL/TLS 证书。对于初学者,一个常用选择是 Let’s Encrypt,它可以免费颁发证书。流程大致:

  1. 安装 certbot(Let’s Encrypt 的客户端)
  2. 用 certbot 获取证书
  3. 修改虚拟主机配置以启用 SSL
  4. 重启 / 重新加载 Apache

举例(Ubuntu):

sudo apt install certbot python3-certbot-apache
sudo certbot --apache

certbot 会帮你自动修改 Apache 配置并设置 TLS 重定向。之后,访问 https://yourdomain.com 看看是否安全连接。


七、验证 + 日志 + 排错

  • 验证:在浏览器访问你的 IP 或域名,看看能否看到你放的网页。
  • 日志:Apache 有两个重要日志:

  - 访问日志(access log)
 - 错误日志(error log)

在 Ubuntu:一般放在 /var/log/apache2/,在 CentOS: /var/log/httpd/。当服务器有问题时,先看 error log。

  • 命令检查配置语法
sudo apachectl configtest   # Ubuntu / Debian
sudo httpd -t               # CentOS / RHEL

如果语法有错,Apache 不会重启,error 信息会提示你哪行有问题。

  • 端口占用:如果 Apache 无法启动,可能是 80 端口已被别的服务占用。你可以用:
sudo lsof -i :80
sudo lsof -i :443

来查哪个进程在用这些端口。


八、后续建议:安全性、性能和维护

搭起基础服务器只是第一步。为了让它稳定、可靠、安全,你还要做一些事情:

  • 定期更新系统和 Apache(修补安全漏洞)
  • 最小化启用模块:不要把不必要的 Apache 模块都开启
  • 权限控制:站点文件目录权限不要过宽(通常 755、运行用户属主)
  • 启用 HTTPS / HSTS 等安全机制
  • 缓存 / 压缩:可以使用 mod_deflatemod_expiresmod_cache 等模块来加速访问
  • 监控 / 日志分析:定期检查日志、流量、错误率、负载等
  • 备份配置与网站文件

添加新评论