LAMP 兼容架构:Apache+MySQL+PHP 传统网站搭建指南
在 Linux 服务器上部署传统网站,LAMP(Linux + Apache + MySQL + PHP)依然是兼容性最好、文档最全的方案。主机选这份 Linux 教程会带你从零搭出一套可用的 LAMP 环境,不走弯路。无论你是刚接触服务器运维的新手,还是需要在 VPS 上快速建站的老手,照着操作就行。

为什么 LAMP 兼容架构至今仍是首选
LAMP 不是新技术,但它在传统 CMS(如 WordPress、Drupal)和自定义 PHP 项目中依然占据主导。相比 Nginx + PHP-FPM,Apache 的 `.htaccess` 重写规则和模块化加载方式对新手更友好。如果你的业务依赖大量 PHP 扩展或古老的 `.htaccess` 配置,LAMP 能直接兼容,不需要额外适配。
在 Ubuntu 22.04 上搭建 LAMP 环境
安装 Apache Web 服务器
Apache 是 LAMP 的核心,负责处理 HTTP 请求。Ubuntu 的 apt 源里已经打包好了稳定版。
sudo apt update
更新包索引,确保安装的是最新版本
sudo apt install apache2 -y
-y 参数跳过确认,直接安装
安装完成后,检查 Apache 是否启动成功:
sudo systemctl status apache2
输出 active (running) 说明正常
如果看到 `failed`,别慌。大概率是 80 端口被占用,用 `sudo lsof -i :80` 查一下是哪个进程占用了端口,干掉它再重启 Apache。
安装 MySQL 数据库
MySQL 负责存储数据。这里选 MySQL 8.0,兼容性最好。
sudo apt install mysql-server -y
安装后立即运行安全脚本:
sudo mysql_secure_installation
按提示设置 root 密码、移除匿名用户、禁止远程 root 登录
**老鸟叮嘱**:安全脚本里有个“移除测试数据库”的选项,一定要选 Yes。生产环境留着 test 库等于给黑客留后门。
安装 PHP 并连接 Apache 和 MySQL
PHP 负责处理动态内容。Ubuntu 22.04 默认 PHP 8.1,完全兼容主流 CMS。
sudo apt install php libapache2-mod-php php-mysql -y
libapache2-mod-php 让 Apache 能处理 PHP 文件
php-mysql 让 PHP 能连接 MySQL 数据库
重启 Apache 让模块生效:
sudo systemctl restart apache2
验证 PHP 是否正常运行,创建一个测试文件:
echo “<?php phpinfo(); ?>” | sudo tee /var/www/html/info.php
创建 info.php 文件,用于查看 PHP 配置
浏览器访问 `http://你的服务器IP/info.php`,如果看到 PHP 信息页面,说明 LAMP 环境搭建成功。**记得删掉这个文件**,生产环境暴露 phpinfo() 很危险。
sudo rm /var/www/html/info.php
常见排障:LAMP 搭建后网站访问报错
Apache 启动失败:端口被占用
如果你之前装过 Nginx 或其他 Web 服务,80 端口可能被占用。
sudo netstat -tulpn | grep :80
查看哪个进程在监听 80 端口
sudo systemctl stop nginx
如果 Nginx 在跑,先停掉
sudo systemctl disable nginx
禁止 Nginx 开机自启
sudo systemctl start apache2
再启动 Apache
MySQL 连接失败:密码错误或权限问题
很多新手在 `mysql_secure_installation` 里设了密码,但 PHP 代码连数据库时还是报 `Access denied`。检查一下 MySQL 用户权限:
sudo mysql -u root -p
输入你设的 root 密码
进入 MySQL 后执行:
sql
SELECT user, host, authentication_string FROM mysql.user;
— 查看所有用户及其认证信息
如果发现 root 的 `plugin` 字段是 `auth_socket`,说明 MySQL 只允许系统 root 用户免密登录。改成密码认证:
sql
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘你的新密码’;
FLUSH PRIVILEGES;
PHP 文件直接下载,不解析
浏览器访问 `.php` 文件时弹出下载框,说明 Apache 没有加载 PHP 模块。检查 `mod_php` 是否启用:
sudo a2enmod php8.1
启用 PHP 8.1 模块
sudo systemctl restart apache2
如果还不行,检查 `/etc/apache2/mods-enabled/` 目录下有没有 `php8.1.conf` 和 `php8.1.load` 文件,没有就手动创建或者重装 `libapache2-mod-php`。
老鸟叮嘱:一个高风险操作
很多教程让你直接给 `/var/www/html` 目录设置 `777` 权限,说这样方便上传文件。**千万别这么干**。777 权限意味着任何人(包括攻击者)都能读写执行你的网站文件。正确做法是:
sudo chown -R www-data:www-data /var/www/html
把目录所有者改成 Apache 运行用户
sudo chmod -R 755 /var/www/html
目录 755,文件 644
如果你的 CMS 需要写权限(比如 WordPress 上传图片),只给 `wp-content/uploads` 目录加写权限:
sudo chmod -R 775 /var/www/html/wp-content/uploads
FAQ
LAMP 和 LNMP 哪个更适合新手?
Apache 的 `.htaccess` 配置对新手更友好,LNMP(Nginx)需要手动写 location 规则。如果刚接触服务器运维,建议先学 LAMP。
安装 MySQL 后 root 密码忘记了怎么办?
停止 MySQL 服务,用 `–skip-grant-tables` 模式启动,直接修改密码。具体步骤:`sudo systemctl stop mysql`,`sudo mysqld_safe –skip-grant-tables &`,然后 `mysql -u root` 进入后执行 `FLUSH PRIVILEGES; ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘新密码’;`。
PHP 版本太低,怎么升级到 8.1?
Ubuntu 22.04 默认就是 8.1。如果用的是 Ubuntu 20.04,先添加 Ondřej Surý 的 PPA:`sudo add-apt-repository ppa:ondrej/php`,然后 `sudo apt install php8.1`。
Apache 日志怎么看报错?
错误日志在 `/var/log/apache2/error.log`,访问日志在 `/var/log/apache2/access.log`。用 `tail -f` 实时查看:`sudo tail -f /var/log/apache2/error.log`。
安装完 LAMP 后,网站访问特别慢怎么办?
先检查 PHP 的 `memory_limit` 和 `max_execution_time`,在 `/etc/php/8.1/apache2/php.ini` 里调大。同时确认 MySQL 的 `innodb_buffer_pool_size` 是否合理,一般设为物理内存的 70%。
能不能在同一台服务器上同时跑多个 PHP 版本?
可以。用 `libapache2-mod-fcgid` 或 PHP-FPM 实现。Apache 可以通过 `SetHandler` 指定不同目录用不同 PHP 版本,但配置复杂,新手不推荐。
转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/9433.html 商家投稿邮箱:zhujixuanblog@qq.com
