温馨提示×

如何在Ubuntu上配置虚拟主机

小樊
38
2025-12-24 20:54:08
栏目: 云计算

在 Ubuntu 上配置虚拟主机

一 准备与通用步骤

  • 更新系统并安装 Web 服务器(二选一或两者皆装):
    • 安装 Apache2:sudo apt update && sudo apt install apache2
    • 安装 Nginx:sudo apt update && sudo apt install nginx
  • 创建网站根目录(示例域名为 example.com):
    • sudo mkdir -p /var/www/example.com
    • echo “

      Hello, example.com

      ” | sudo tee /var/www/example.com/index.html
  • 调整目录权限(让 www-data 可读写):
    • sudo chown -R www-data:www-data /var/www/example.com
    • sudo chmod -R 755 /var/www/example.com
  • 防火墙放行(如使用 UFW):
    • Apache:sudo ufw allow ‘Apache Full’
    • Nginx:sudo ufw allow ‘Nginx Full’
  • 说明:Ubuntu 中 Apache 的站点配置位于 /etc/apache2/sites-available/,Nginx 的站点配置位于 /etc/nginx/sites-available/;启用站点后使用 systemctl reload 使配置生效。

二 配置 Apache 虚拟主机

  • 启用常用模块(如 mod_rewrite):sudo a2enmod rewrite
  • 新建站点配置: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}/example.com_error.log
        CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
    </VirtualHost>
    
  • 启用站点并重新加载:
    • 启用:sudo a2ensite example.com.conf
    • 可选禁用默认站点:sudo a2dissite 000-default.conf
    • 检查语法并生效:sudo apache2ctl configtest && sudo systemctl reload apache2
  • 本地测试(仅本机生效):在 /etc/hosts 添加
    • 127.0.0.1 example.com www.example.com
  • 线上访问:将域名 example.comA 记录指向服务器公网 IP

三 配置 Nginx 虚拟主机

  • 新建站点配置:sudo nano /etc/nginx/sites-available/example.com
  • 写入示例配置(按需修改域名与目录):
    server {
        listen 80;
        server_name example.com www.example.com;
        root /var/www/example.com;
        index index.html index.htm;
    
        location / {
            try_files $uri $uri/ =404;
        }
    
        error_page 404 /404.html;
        location = /404.html {
            root /var/www/example.com;
        }
    
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root /var/www/example.com;
        }
    }
    
  • 启用站点并重新加载:
    • 启用:sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
    • 检查语法并生效:sudo nginx -t && sudo systemctl reload nginx
  • 本地测试(仅本机生效):在 /etc/hosts 添加
    • 127.0.0.1 example.com www.example.com
  • 线上访问:将域名 example.comA 记录指向服务器公网 IP

四 启用 HTTPS 与常见问题

  • 使用 Certbot 一键启用 HTTPS(自动申请与续期):
    • Apache:sudo apt install certbot python3-certbot-apache && sudo certbot --apache -d example.com -d www.example.com
    • Nginx:sudo apt install certbot python3-certbot-nginx && sudo certbot --nginx -d example.com -d www.example.com
    • 续期测试:sudo certbot renew --dry-run
  • 常见问题排查:
    • 服务状态:sudo systemctl status apache2 或 sudo systemctl status nginx
    • 配置语法:Apache 用 sudo apache2ctl configtest;Nginx 用 sudo nginx -t
    • 防火墙:确认已放行 80/443(UFW:sudo ufw allow ‘Apache Full’ 或 ‘Nginx Full’)
    • 本地域名访问:确保客户端 hosts 已映射域名到服务器 IP
    • DNS 生效:使用 nslookup/dig 检查解析是否正确。

0