1. 首页 > 技术教程 > 正文

LAMP 兼容架构:Apache+MySQL+PHP 传统网站搭建指南

LAMP 兼容架构:Apache+MySQL+PHP 传统网站搭建指南

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

LAMP 兼容架构:Apache+MySQL+PHP 传统网站搭建指南的图片

为什么 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