温馨提示×

Apache虚拟主机配置Ubuntu上怎么做

小樊
36
2026-01-05 12:52:10
栏目: 云计算

Ubuntu 上配置 Apache 虚拟主机

一 准备与安装

  • 更新软件包索引并安装 Apache2:
    • 命令:sudo apt update && sudo apt install apache2
  • 启动并设置开机自启:
    • 命令:sudo systemctl start apache2 && sudo systemctl enable apache2
  • 验证安装:
    • 命令:sudo systemctl status apache2(应看到 Active: active (running)
    • 浏览器访问服务器 IPhttp://localhost,应看到 Apache 默认页面。

二 创建站点目录与示例页面

  • 创建网站根目录(示例使用域名 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
  • 创建示例首页:
    • 命令:echo "<h1>Welcome to Example.com</h1>" | sudo tee /var/www/example.com/index.html

三 新建虚拟主机配置文件

  • /etc/apache2/sites-available/ 下创建配置文件:
    • 命令:sudo nano /etc/apache2/sites-available/example.com.conf
  • 写入最小可用配置(按需修改域名与目录):
    <VirtualHost *:80>
        ServerAdmin webmaster@example.com
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /var/www/example.com
    
        <Directory /var/www/example.com>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
    
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    
  • 说明:
    • 使用端口 80(HTTP)。
    • 若需 .htaccess 重写,保持 AllowOverride All 并启用模块:sudo a2enmod rewrite

四 启用站点与生效配置

  • 启用站点:
    • 命令:sudo a2ensite example.com.conf
  • 可选:禁用默认站点(避免与新建站点冲突):
    • 命令:sudo a2dissite 000-default.conf
  • 检查语法并重新加载 Apache:
    • 命令:sudo apache2ctl configtest(应返回 Syntax OK
    • 命令:sudo systemctl reload apache2(或 restart

五 本地与公网访问及常见问题

  • 本地测试(服务器本机):
    • 修改 /etc/hosts127.0.0.1 example.com www.example.com
    • 浏览器访问:http://example.com
  • 虚拟机或内网测试(从你的电脑访问虚拟机):
    • 在你的电脑 hosts 添加:虚拟机IP example.com www.example.com
    • 浏览器访问:http://example.com
  • 公网访问:
    • 在域名注册商添加 A 记录:将 @ 指向服务器公网 IP
    • 等待 DNS 传播 后访问:http://example.com
  • 防火墙(如使用 UFW):
    • 允许 HTTP/HTTPS:sudo ufw allow 'Apache Full'
  • 可选启用 HTTPS(Let’s Encrypt):
    • 安装与签发:sudo apt install certbot python3-certbot-apache
    • 命令:sudo certbot --apache -d example.com -d www.example.com
  • 常见问题排查:
    • 查看错误日志:sudo tail -f /var/log/apache2/error.log
    • 检查站点是否启用:sudo a2query -s example.com.conf
    • 端口监听:sudo ss -tlnp | grep ':80\|:443'
    • 配置语法:sudo apache2ctl configtest

0