Linux搭建LAMP环境(CentOS 7 与 Ubuntu 双系统教程)
Linux搭建LAMP环境
一、LAMP 环境核心概念
- 定义:由 Linux、Apache、MySQL、PHP 四大组件组成的开源 Web 应用平台
- 本质:四个独立开源软件的组合体,因长期协同使用形成高度兼容性,成为动态网站和服务器的主流解决方案
二、LAMP 四大组件详解
- Linux
- 定位:基础操作系统层
- 作用:提供底层运行环境,其他组件均基于 Linux 运行
- 特性:跨平台兼容性(组件也可在 Windows 运行,但 Linux 是最优选择)
- Apache
- 定位:Web 服务平台(第二层)
- 作用:处理 HTTP 请求,向用户提供 Web 页面访问机制
- 特性:稳定、开源、跨平台的主流 Web 服务器
- MySQL
- 定位:数据存储层
- 作用:提供关系型数据库管理功能,负责数据的存储与管理
- 特性:开源流行、轻量高效,适合 Web 应用的数据存储需求
- PHP
- 定位:脚本编程语言层
- 作用:嵌入 HTML 中的服务器端脚本语言,处理动态内容生成
- 特性:开源、多用途,特别适合 Web 开发场景
三、组件协同关系
- 数据流向:用户通过 Apache 访问 → PHP 处理业务逻辑 → 与 MySQL 交互读写数据 → 结果经 Apache 返回给用户
- 核心价值:各组件开源免费、兼容性强,共同构建低成本、高性能的 Web 应用开发与运行环境
四、应用场景
- 动态网站开发与部署
- 企业级 Web 应用平台搭建
- 内容管理系统(CMS)运行环境(如 WordPress、Drupal)
- 电子商务平台、博客系统等 Web 应用
五、CentOS 7搭建过程
1.安装Apache环境
(1)安装Apache和扩展
[root@master ly]# yum -y install httpd httpd-devel httpd-manual mod_ssl
(2)安装完成后启动Apache服务
[root@master ly]# systemctl start httpd
(3)设置开机自启动
[root@master ly]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@master ly]# systemctl disable httpd #该命令为禁用开机自启动
2.安装MySQL环境
(1)安装MySQL和扩展包
[root@master ly]# yum install mariadb-server mariadb
(2)安装完成后启动MySQL
[root@master ly]# systemctl start mariadb
第一次运行mysql的时候,建议大家运行一次安全初始化脚本
mysql_secure_installation
第一个提示:
Enter current password for root (enter for none) #建议大家直接回车
第二个:移除匿名用户
Remove anonymous users? (Press y|Y for Yes, any other key for No)Y
第三个:是否禁用root远程登录,建议大家选N
Disallow root login remotely? (Press y|Y for Yes, any other key for
No):N
第四个:删除测试数据库
Remove test database and access to it? (Press y|Y for Yes, any other
key for No):y
最后一个:加载权限表
Reload privilege tables now? (Press y|Y for Yes, any other key for
No):Y
(3)登录MySQL
[root@master ly]# mysql -u root
# 默认账号:root 密码:
提示
- 默认无密码:多数情况下,MariaDB 安装后默认对
root
用户不设置密码(空密码),直接登录即可。 - 日志路径不同:MariaDB 的日志文件通常在
/var/log/mariadb/mariadb.log
(若有初始密码,会记录在这里)。
1.空密码登录
这是最常见的情况,直接执行登录命令,密码为空(回车即可):
mysql -u root -p
执行后会提示 Enter password:
,此时直接按回车(不输入任何内容),即可登录 MariaDB。
2. 若提示需要密码,查看 MariaDB 日志
如果空密码登录失败,可能日志中记录了初始密码,查看方法:
grep 'password' /var/log/mariadb/mariadb.log
-
若日志中有类似
generated for root@localhost: xxxxx
的内容,xxxxx
就是初始密码,用它登录即可。 -
若日志文件不存在,可能是 MariaDB 未启动过,先启动服务再尝试:
systemctl start mariadb # 启动服务
3. 登录后设置密码
-- 设置 root 用户的密码(替换为你的新密码)
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('你的新密码');-- 刷新权限(使设置生效)
FLUSH PRIVILEGES;
设置完成后,下次登录需用新密码:
mysql -u root -p # 然后输入刚设置的新密码
(4)设置开机自启动
[root@master ly]# systemctl enable mariadb
3.安装PHP环境
(1)安装PHP 5和扩展包
[root@master ly]#yum -y install php php-mysql php-common php-gd php-mbstring php-devel php-xml php-sodium
(2)安装完成后重启httpd服务
[root@master ly]# systemctl restart httpd
(3)安装完成后在/var/www/html
(默认的web目录)文件夹中创建一个test.php
[root@master ly]# cd /var/www/html
[root@master html]# touch test.php
[root@master html]# vim test.php
#写入以下内容
<?php phpinfo(); ?>
(3)修改防火墙规则(推荐)或关闭防火墙
#关闭防火墙
[root@master ly]# systemctl stop firewalld
#修改防火墙规则,(开放http/https)
[root@master html]# firewall-cmd --permanent --add-service=http
success
[root@master html]# firewall-cmd --permanent --add-service=https
success
[root@master html]# firewall-cmd --reload #重新加载防火墙
success
#开放 HTTP/HTTPS 端口
# 开放 80 端口(HTTP)
firewall-cmd --permanent --add-port=80/tcp
# 开放 443 端口(HTTPS)
firewall-cmd --permanent --add-port=443/tcp
# 重载防火墙
firewall-cmd --reload
#移除添加的规则
firewall-cmd --permanent --remove-service=http
firewall-cmd --permanent --remove-port=80/tcp
(4)验证
在浏览器中输入CentOS 7的IP地址,并输入想访问的路径,看看是否访问成功,访问成功则搭建完成
六、Ubuntn搭建过程
1.更新更新系统中可用软件包的列表和版本信息的命令
root@ubantu:/home/glow# apt update
2.先配置docker的镜像源 /etc/docker/deamon.json
root@ubantu:/etc/docker# cat daemon.json
{"registry-mirrors": ["https://docker.xuanyuan.me","https://docker.m.daocloud.io","https://mirrors.ustc.edu.cn/","http://mirror.azure.cn"]
}
3.安装apache
root@ubantu:/etc/docker# apt install apache2
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
apache2 已经是最新版 (2.4.58-1ubuntu8.6)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 14 个软件包未被升级。
启动服务
root@ubantu:/etc/docker# systemctl start apache2
root@ubantu:/etc/docker# systemctl enable apache2 #关闭服务
查看是否正常运行:方法1
root@ubantu:/etc/docker# systemctl status apache2
● apache2.service - The Apache HTTP ServerLoaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled)Active: active (running) since Wed 2025-07-16 20:25:59 CST; 35min agoDocs: https://httpd.apache.org/docs/2.4/Process: 1883 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)Main PID: 2045 (apache2)Tasks: 6 (limit: 4541)Memory: 18.8M (peak: 19.0M)CPU: 240msCGroup: /system.slice/apache2.service├─2045 /usr/sbin/apache2 -k start├─2100 /usr/sbin/apache2 -k start├─2101 /usr/sbin/apache2 -k start├─2104 /usr/sbin/apache2 -k start├─2106 /usr/sbin/apache2 -k start└─2109 /usr/sbin/apache2 -k start7月 16 20:25:58 ubantu systemd[1]: Starting apache2.service - The Apache HTTP Server...
7月 16 20:25:59 ubantu apachectl[2006]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive global>
7月 16 20:25:59 ubantu systemd[1]: Started apache2.service - The Apache HTTP Server.
方法2:浏览器访问你的IP地址
访问时可能要修改防火墙规则或者禁用防火墙
neo@ubantu:~$ sudo ufw allow "Apache"
防火墙规则已更新
规则已更新(v6)
neo@ubantu:~$ sudo ufw disable
防火墙在系统启动时自动禁用
neo@ubantu:~$
4.安装mysql
root@ubantu:/etc/docker# apt install mysql-server
#安装完成后会自动启动一次
root@ubantu:/etc/docker# systemctl start mysql
#设置为开机自启动
root@ubantu:/etc/docker# systemctl enable mysql
Synchronizing state of mysql.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable mysql
安全配置:同上mysql_secure_installation
第一次运行mysql的时候,建议大家运行一次安全初始化脚本
mysql_secure_installation
第一个提示:
Enter current password for root (enter for none) #建议大家直接回车
第二个:移除匿名用户
Remove anonymous users? (Press y|Y for Yes, any other key for No)Y
第三个:是否禁用root远程登录,建议大家选N
Disallow root login remotely? (Press y|Y for Yes, any other key for
No):N
第四个:删除测试数据库
Remove test database and access to it? (Press y|Y for Yes, any other
key for No):y
最后一个:加载权限表
Reload privilege tables now? (Press y|Y for Yes, any other key for
No):Y
5.安装PHP
root@ubantu:/etc/docker# apt install php
1.验证是否安装成功
root@ubantu:/etc/docker# php -v
PHP 8.3.6 (cli) (built: Mar 19 2025 10:08:38) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.6, Copyright (c) Zend Technologieswith Zend OPcache v8.3.6, Copyright (c), by Zend Technologies
2.安装php扩展
root@ubantu:/etc/docker# apt install php-mysql php-cli php-curl php-xml php-gd php-mbstring php-zip
3.安装好后,重启一次apache2就可以
root@ubantu:/etc/docker# systemctl restart apache2
4.在/var/www/html
中创建1.php,并写入内容,访问成功