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.pswp.cn/news/914944.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/914944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c# 开机自动启动程序

以下是两种实现C#软件开机自启动的常用方法&#xff0c;根据需求选择适合的方案&#xff1a; 方法1&#xff1a;通过注册表实现&#xff08;需管理员权限&#xff09; using Microsoft.Win32; using System.Diagnostics;public static class AutoStartManager {/// <summa…

C语言---动态内存管理

为什么要有动态内存分配我们在学习动态内存管理之前&#xff0c;一直都是通过开辟变量&#xff0c;或者是开辟数组的方式来在内存的栈区开辟空间的&#xff0c;但是这样的开辟方式有局限性&#xff0c;因为一旦开辟之后&#xff0c;它们的大小就无法改变&#xff0c;就缺少了很…

C++标准库(std)详解

C标准库&#xff08;std&#xff09;详解——目录C标准库&#xff08;std&#xff09;详解一、命名空间&#xff08;namespace&#xff09;二、主要组件1. 输入输出流&#xff08;<iostream>&#xff09;2. 字符串处理&#xff08;<string>&#xff09;3. STL容器&…

ESP32的OTA升级详解:3. 搭建node/python服务器升级(native ota原生API)

一、OTA两种方式&#xff1a;app_update 与 esp_https_ota 区别 ESP32/ESP32-S2/ESP32-C3等可通过Wi-Fi或以太网下载新固件到OTA分区实现运行时升级。ESP-IDF提供两种OTA升级方法&#xff1a; 使用app_update组件的原生API使用esp_https_ota组件的简化API(支持HTTPS升级) 本次…

byte[]作为接口参数传递的方法

在C#中通过WebService或API传递byte参数&#xff08;如文件、图像等二进制数据&#xff09;时&#xff0c;通常有以下几种实现方式&#xff1a; ‌1. 使用Base64编码&#xff08;推荐REST API&#xff09;‌ 将byte数组转换为Base64字符串传输&#xff0c;适用于JSON格式的API&…

元宇宙与Web3的深度融合:构建沉浸式数字体验的愿景与挑战

一、技术特征与融合基础1. 元宇宙的技术架构&#xff08;2025年&#xff09;空间构建技术&#xff1a;3D建模与渲染&#xff1a;实时渲染引擎&#xff08;如Unity HDRP&#xff09;支持路径追踪光追&#xff0c;AI生成模型&#xff08;NVIDIA Get3D&#xff09;3秒生成3D场景。…

什么是脑裂

脑裂定义&#xff1a; 脑裂是分布式系统中由于网络分区&#xff08;Network Partition&#xff09;导致集群节点被分割成多个独立子集&#xff0c;每个子集认为自己是唯一合法的集群&#xff0c;从而导致数据不一致或系统行为异常的现象。详细工作原理&#xff1a;发生原因&…

川翔云电脑:云端算力新标杆,创作自由无边界

一、旗舰机型&#xff1a;4090Ultra 48G 显存颠覆硬件限制 川翔云电脑最新上线的RTX 4090Ultra 48G 显存机型&#xff0c;采用 NVIDIA Ada Lovelace 架构&#xff0c;单卡显存容量达 48GB GDDR6X&#xff0c;较传统 4090 翻倍&#xff0c;可直接加载 1200 万面数的超复杂模型&a…

贪心算法(排序)

码蹄集OJ-活动安排 #include<bits/stdc.h> using namespace std; struct MOOE {int s,e; }; bool compare(const MOOE&a,const MOOE&b) {return a.e<b.e; } int main( ) {int n;cin>>n;vector<MOOE>a(n);for(int i0;i<n;i){cin>>a[i].…

详解序数回归损失函数ordinal_regression_loss:原理与实现

在医疗 AI 领域&#xff0c;很多分类任务具有有序类别的特性&#xff0c;如疾病严重程度&#xff08;轻度→中度→重度&#xff09;、肿瘤分级&#xff08;G1→G2→G3&#xff09;等。这类任务被称为序数回归&#xff08;Ordinal Regression&#xff09;&#xff0c;需要特殊的…

SQL增查

建完库与建完表后后:1.分别查询student表和score表的所有记录student表&#xff1a;score表:2.查询student表的第2条到5条记录SELECT * FROM student LIMIT 1,4;3.从student表中查询计算机系和英语系的学生的信息SELECT * FROM student-> WHERE department IN (计算机系, 英…

二分答案之最大化最小值

参考资料来源灵神在力扣所发的题单&#xff0c;仅供分享学习笔记和记录&#xff0c;无商业用途。 核心思路&#xff1a;本质上是求最大 应用场景&#xff1a;在满足条件的最小值区间内使最大化 检查函数&#xff1a;保证数据都要大于等于答案 补充&#xff1a;为什么需要满…

OCR 赋能档案数字化:让沉睡的档案 “活” 起来

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09;企业产品档案包含设计图纸、检测报告、生产记录等&#xff0c;传统数字化仅靠扫描存档&#xff0c;后续检索需人工逐份翻阅&#xff0c;效率极低。​OCR 产品档案解决方案直击痛点&#xff1a;通过智能识别技…

力扣118.杨辉三角

思路1.新建一个vector的vector2.先把空间开出来&#xff0c;然后再把里面的值给一个个修改开空间的手段&#xff1a;new、构造函数、reserve、resize因为我们之后要修改里面的数据&#xff0c;这就意味着我们需要去读取这个数据并修改&#xff0c;如果用reserve的话&#xff0c…

Python 网络爬虫 —— 提交信息到网页

一、模块核心逻辑“提交信息到网页” 是网络交互关键环节&#xff0c;借助 requests 库的 post() 函数&#xff0c;能模拟浏览器向网页发数据&#xff08;如表单、文件 &#xff09;&#xff0c;实现信息上传&#xff0c;让我们能与网页背后的服务器 “沟通”&#xff0c;像改密…

SpringMVC4

一、SpringMVC 注解与项目开发流程1.1注解的生命周期- Target、Retention 等元注解&#xff1a;- Target(ElementType.TYPE) &#xff1a;说明这个注解只能用在类、接口上。- Retention(RetentionPolicy.RUNTIME) &#xff1a;说明注解在运行时保留&#xff0c;能通过反射获取…

数据结构排序算法总结(C语言实现)

以下是常见排序算法的总结及C语言实现&#xff0c;包含时间复杂度、空间复杂度和稳定性分析&#xff1a;1. 冒泡排序 (Bubble Sort)思想&#xff1a;重复比较相邻元素&#xff0c;将较大元素向后移动。 时间复杂度&#xff1a;O(n)&#xff08;最好O(n)&#xff0c;最坏O(n)) 空…

嵌入式学习-PyTorch(2)-day19

很久没有学了&#xff0c;期间打点滴打了一个多星期&#xff0c;太累了&#xff0c;再加上学了一下Python语法基础&#xff0c;再终于开始重新学习pytorchtensorboard 的使用import torch from torch.utils.tensorboard import SummaryWriter writer SummaryWriter("logs…

Prompt Engineering 快速入门+实战案例

资料来源&#xff1a;火山引擎-开发者社区 引言 什么是 prompt A prompt is an input to a Generative AI model, that is used to guide its output. Prompt engineering is the process of writing effective instructions for a model, such that it consistently generat…

「源力觉醒 创作者计划」_文心开源模型(ERNIE-4.5-VL-28B-A3B-PT)使用心得

文章目录背景操作流程开源模型选择算力服务器平台开通部署一个算力服务器登录GPU算力服务器进行模型的部署FastDeploy 快速部署服务安装paddlepaddle-gpu1. 降级冲突的库版本安装fastdeploy直接部署模型&#xff08;此处大约花费15分钟时间&#xff09;放行服务端口供公网访问最…