当前位置: 首页 > news >正文

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和扩展
[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,并写入内容,访问成功

在这里插入图片描述

http://www.lryc.cn/news/591044.html

相关文章:

  • FastAdmin系统框架通用操作平滑迁移到新服务器的详细步骤-优雅草卓伊凡
  • lua(xlua)基础知识点记录二
  • STM32上移植Lua解析器
  • Android15系统实现刷机防呆功能
  • 【JVM】深入理解 JVM 类加载器
  • MySQL如何解决事务并发的幻读问题
  • JVM 内存分配与垃圾回收策略
  • macOS 字体管理全攻略:如何查看已安装字体及常见字体格式区
  • 网络编程7.17
  • JAVA中的Collection集合及ArrayList,LinkedLIst,HashSet,TreeSet和其它实现类的常用方法
  • MyBatis延迟加载(Lazy Loading)之“关联查询”深度解析与实践
  • 【44】MFC入门到精通——MFC 通过Button按钮添加控件变量实现:按下 按钮变色 (比如开关 打开关闭状态) MFC更改button控颜色
  • 数据结构-2(链表)
  • 基于STM32闭环步进电机控制系统设计说明
  • Leaflet地图交互:实现图形与点的同时高亮效果
  • PyTorch生成式人工智能(18)——循环神经网络详解与实现
  • 【Linux基础知识系列】第五十一篇 - Linux文件命名规范与格式
  • Mac 安装及使用sdkman指南
  • Java 大视界 -- Java 大数据在智能交通智能公交站台乘客流量预测与服务优化中的应用(349)
  • Flask+LayUI开发手记(十一):选项集合的数据库扩展类
  • Java 集合框架详解:Collection 接口全解析,从基础到实战
  • 【LeetCode 热题 100】108. 将有序数组转换为二叉搜索树
  • 【Redis 】看门狗:分布式锁的自动续期
  • 如何用Kaggle免费GPU
  • [yotroy.cool] Git 历史迁移笔记:将 Git 项目嵌入另一个仓库子目录中(保留提交记录)
  • 语雀编辑器内双击回车插入当前时间js脚本
  • 【WRFDA第六期】WRFDA 输出文件详述
  • R语言基础| 基本图形绘制(条形图、堆积图、分组图、填充条形图、均值条形图)
  • Spring AI之Prompt开发
  • Web攻防-PHP反序列化Phar文件类CLI框架类PHPGGC生成器TPYiiLaravel