Linux搭建LAMP环境(CentOS 7 与 Ubuntu 双系统教程)

Linux搭建LAMP环境

一、LAMP 环境核心概念

  • 定义:由 Linux、Apache、MySQL、PHP 四大组件组成的开源 Web 应用平台
  • 本质:四个独立开源软件的组合体,因长期协同使用形成高度兼容性,成为动态网站和服务器的主流解决方案

二、LAMP 四大组件详解

  1. Linux
    • 定位:基础操作系统层
    • 作用:提供底层运行环境,其他组件均基于 Linux 运行
    • 特性:跨平台兼容性(组件也可在 Windows 运行,但 Linux 是最优选择)
  2. Apache
    • 定位:Web 服务平台(第二层)
    • 作用:处理 HTTP 请求,向用户提供 Web 页面访问机制
    • 特性:稳定、开源、跨平台的主流 Web 服务器
  3. MySQL
    • 定位:数据存储层
    • 作用:提供关系型数据库管理功能,负责数据的存储与管理
    • 特性:开源流行、轻量高效,适合 Web 应用的数据存储需求
  4. PHP
    • 定位:脚本编程语言层
    • 作用:嵌入 HTML 中的服务器端脚本语言,处理动态内容生成
    • 特性:开源、多用途,特别适合 Web 开发场景

三、组件协同关系

  • 数据流向:用户通过 Apache 访问 → PHP 处理业务逻辑 → 与 MySQL 交互读写数据 → 结果经 Apache 返回给用户
  • 核心价值:各组件开源免费、兼容性强,共同构建低成本、高性能的 Web 应用开发与运行环境

四、应用场景

  • 动态网站开发与部署
  • 企业级 Web 应用平台搭建
  • 内容管理系统(CMS)运行环境(如 WordPress、Drupal)
  • 电子商务平台、博客系统等 Web 应用

五、CentOS 7搭建过程

1.安装Apache环境

(1)安装Apache和扩展
cmd 复制代码
[root@master ly]# yum -y install httpd httpd-devel httpd-manual mod_ssl
(2)安装完成后启动Apache服务
cmd 复制代码
[root@master ly]# systemctl start httpd
(3)设置开机自启动
cmd 复制代码
[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和扩展包
cmd 复制代码
[root@master ly]# yum install mariadb-server mariadb
(2)安装完成后启动MySQL
cmd 复制代码
[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
cmd 复制代码
[root@master ly]# mysql -u root  
# 默认账号:root  密码:

提示

  • 默认无密码 :多数情况下,MariaDB 安装后默认对 root 用户不设置密码(空密码),直接登录即可。
  • 日志路径不同 :MariaDB 的日志文件通常在 /var/log/mariadb/mariadb.log(若有初始密码,会记录在这里)。
1.空密码登录

这是最常见的情况,直接执行登录命令,密码为空(回车即可):

bash 复制代码
mysql -u root -p

执行后会提示 Enter password:,此时直接按回车(不输入任何内容),即可登录 MariaDB。

2. 若提示需要密码,查看 MariaDB 日志

如果空密码登录失败,可能日志中记录了初始密码,查看方法:

bash 复制代码
grep 'password' /var/log/mariadb/mariadb.log
  • 若日志中有类似 generated for root@localhost: xxxxx 的内容,xxxxx 就是初始密码,用它登录即可。

  • 若日志文件不存在,可能是 MariaDB 未启动过,先启动服务再尝试:

    bash 复制代码
    systemctl start mariadb  # 启动服务
3. 登录后设置密码
sql 复制代码
-- 设置 root 用户的密码(替换为你的新密码)
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('你的新密码');

-- 刷新权限(使设置生效)
FLUSH PRIVILEGES;

设置完成后,下次登录需用新密码:

bash 复制代码
mysql -u root -p  # 然后输入刚设置的新密码
(4)设置开机自启动
cmd 复制代码
[root@master ly]# systemctl enable mariadb

3.安装PHP环境

(1)安装PHP 5和扩展包
cmd 复制代码
[root@master ly]#yum -y install php php-mysql php-common php-gd php-mbstring php-devel php-xml php-sodium 
(2)安装完成后重启httpd服务
cmd 复制代码
[root@master ly]# systemctl restart httpd
(3)安装完成后在/var/www/html(默认的web目录)文件夹中创建一个test.php
cmd 复制代码
[root@master ly]# cd /var/www/html
[root@master html]# touch test.php
[root@master html]# vim test.php
#写入以下内容
<?php phpinfo();  ?>
(3)修改防火墙规则(推荐)或关闭防火墙
shell 复制代码
#关闭防火墙
[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.更新更新系统中可用软件包的列表和版本信息的命令

cmd 复制代码
root@ubantu:/home/glow# apt update

2.先配置docker的镜像源 /etc/docker/deamon.json

shell 复制代码
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 Server
     Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled)
     Active: active (running) since Wed 2025-07-16 20:25:59 CST; 35min ago
       Docs: 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: 240ms
     CGroup: /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 start

7月 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地址

访问时可能要修改防火墙规则或者禁用防火墙

shell 复制代码
neo@ubantu:~$ sudo ufw allow "Apache"
防火墙规则已更新
规则已更新(v6)
neo@ubantu:~$ sudo ufw disable
防火墙在系统启动时自动禁用
neo@ubantu:~$ 

4.安装mysql

shell 复制代码
root@ubantu:/etc/docker# apt install mysql-server
#安装完成后会自动启动一次
shell 复制代码
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

shell 复制代码
root@ubantu:/etc/docker# apt install php

1.验证是否安装成功

shell 复制代码
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 Technologies
    with Zend OPcache v8.3.6, Copyright (c), by Zend Technologies

2.安装php扩展

shell 复制代码
root@ubantu:/etc/docker# apt install php-mysql php-cli php-curl php-xml php-gd php-mbstring php-zip

3.安装好后,重启一次apache2就可以

shell 复制代码
root@ubantu:/etc/docker# systemctl restart apache2

4.在/var/www/html中创建1.php,并写入内容,访问成功

相关推荐
步、步、为营5 分钟前
.NET 8 中的 KeyedService
运维·服务器·.net
老马啸西风17 分钟前
windows wsl ubuntu 如何安装 open-jdk8
linux·windows·ubuntu·docker·容器·k8s·kvm
研究是为了理解1 小时前
Linux 阻塞等待框架
linux
老任与码2 小时前
安装docker时,yum install -y yum-utils报错的解决
运维·docker·容器
小白的程序空间2 小时前
Anaconda Prompt中删除库虚拟环境【保姆级教程】
linux·开发语言·python
努力自学的小夏3 小时前
RK3568 Linux驱动学习——SDK安装编译
linux·arm开发·笔记·学习
basketball6163 小时前
Linux C 信号操作
linux·c语言·开发语言
Edingbrugh.南空4 小时前
如何优雅调整Doris key顺序
大数据·运维·数据库
网易独家音乐人Mike Zhou4 小时前
【Linux应用】在PC的Linux环境下通过chroot运行ARM虚拟机镜像img文件(需要依赖qemu-aarch64、不需要重新安装iso)
linux·c语言·stm32·mcu·物联网·嵌入式·iot
bailang_zhizun4 小时前
【Docker】在银河麒麟ARM环境下离线安装docker
运维·docker·容器