Ubuntu LAMP 配置虚拟主机完整教程 (2026)

>前言

在 Ubuntu 上搭建 LAMP(Linux + Apache + MySQL + PHP)环境后,配置虚拟主机(VirtualHost)是让一台服务器同时托管多个网站的关键步骤。本文将详细介绍两种主流方式——模块方式和 PHP-FPM 方式,帮助你快速完成配置。

>一、环境准备

>1.1 更新系统并安装组件

>sudo apt update && sudo apt upgrade -y

1.2 安装 Apache

>sudo apt install apache2 -y
sudo systemctl start apache2 && sudo systemctl enable apache2

1.3 安装 MySQL

>sudo apt install mysql-server -y
sudo systemctl start mysql && sudo systemctl enable mysql


安装完成后建议运行安全脚本:

>sudo mysql_secure_installation

1.4 安装 PHP

模块方式(简单场景推荐):

>sudo apt install php libapache2-mod-php php-mysql -y


FPM 方式(生产环境推荐,性能更好):

>sudo apt install php-fpm php-mysql -y

1.5 防火墙配置

>sudo ufw allow 'Apache Full'
sudo ufw enable

二、创建站点目录与设置权限

>2.1 创建项目目录

example.com 为例:

>sudo mkdir -p /var/www/example.com

2.2 创建测试页面

>echo '' | sudo tee /var/www/example.com/index.php

2.3 设置目录权限

>sudo chown -R www-data:www-data /var/www/example.com
sudo chmod -R 755 /var/www/example.com


> 说明www-data 是 Apache 在 Ubuntu 上的默认运行用户,确保目录属主正确是避免 403 错误的关键。

>三、配置虚拟主机

>方式 A:模块方式(libapache2-mod-php)

适合个人项目或快速搭建场景,配置简单直观。

1)复制默认配置

>sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf


2)编辑配置文件

>sudo nano /etc/apache2/sites-available/example.com.conf


修改以下关键项:

    >

  • ServerName example.com
  • ServerAlias www.example.com(可选)
  • DocumentRoot /var/www/example.com
  • 内添加 段,设置 AllowOverride AllRequire all granted
  • 3)启用站点并重载

    >sudo a2ensite example.com.conf
    sudo a2dissite 000-default.conf # 可选,禁用默认站点
    sudo systemctl reload apache2


    4)调整目录索引优先级

    如果 index.php 未被优先解析,编辑 /etc/apache2/mods-enabled/dir.conf,将 index.php 移到最前面。

    >方式 B:PHP-FPM 方式(推荐)

    性能更优,适合生产环境,支持更好的进程隔离。

    1)启用必要模块

    >sudo a2enmod proxy proxy_fcgi rewrite


    2)确认 PHP-FPM 监听配置

    编辑 /etc/php/8.3/fpm/pool.d/www.conf(版本号按实际调整):

  • Unix 套接字方式:listen = /run/php/php8.3-fpm.sock
  • TCP 方式:listen = 127.0.0.1:9000
  • 3)创建虚拟主机配置

    >sudo nano /etc/apache2/sites-available/example.com.conf


    写入以下内容:

    >
    ServerAdmin webmaster@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com


    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted

    ErrorLog ${APACHE_LOG_DIR}/example.error.log
    CustomLog ${APACHE_LOG_DIR}/example.access.log combined


    SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"


    4)启用并验证

    >sudo a2ensite example.com.conf
    sudo a2dissite 000-default.conf
    sudo apache2ctl configtest # 应显示 Syntax OK
    sudo systemctl reload apache2
    sudo systemctl start php8.3-fpm && sudo systemctl enable php8.3-fpm

    四、DNS 与本地解析

    >4.1 本机测试

    编辑 /etc/hosts(Linux/macOS)添加:

    >你的服务器IP  example.com  www.example.com

    4.2 线上环境

    在域名 DNS 管理面板中:

  • 添加 A 记录,将域名指向服务器 IPv4 地址
  • 如需 www 前缀,添加 CNAME 记录或额外 A 记录

>五、常见问题排查

| 问题 | 可能原因 | 解决方案 |
|------|---------|---------|
| 403 Forbidden | 目录权限不足 | 检查 Require all granted,确认目录权限为 755、属主 www-data |
| 404 Not Found | 路径或首页文件错误 | 确认 DocumentRoot 路径正确,index.php 存在,DirectoryIndex 包含 index.php |
| PHP 不解析 | FPM 配置错误 | 核对 SetHandler 中 sock 路径与版本;模块方式确认 libapache2-mod-php 已安装 |
| 端口无法访问 | 防火墙未放行 | UFW 放行 Apache Full(80/443),云服务器安全组同样需开放 |

>查看日志定位问题

>

Apache 站点错误日志

tail -n 50 /var/log/apache2/example.error.log

>PHP-FPM 日志

tail -n 50 /var/log/php8.3-fpm.log


> 安全提示:测试完成后务必删除 info.php,避免泄露服务器信息。

>总结

Ubuntu LAMP 环境下配置虚拟主机并不复杂,核心步骤就是:创建目录 → 编写配置 → 启用站点 → 解析域名。对于生产环境,建议优先选择 PHP-FPM 方式,它在并发处理和安全性方面表现更优。遇到问题时,优先查看 Apache 和 PHP-FPM 的错误日志,大多数配置问题都能从中找到线索。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注