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

Ubuntu22.04搭建LAMP环境(linux服务器学习笔记)

目录

引言:

一、系统更新

二、安装搭建Apache2

1.你可以通过以下命令安装它:

2.查看Apache2版本

3.查看Apache2运行状态

4.浏览器访问

三、安装搭建MySQL

1.安装MySQL

2.查看MySQL 版本

 3.安全配置MySQL

3.1是否设置密码?(按y|Y表示是,按其他任意键表示否) :

3.2是否删除匿名用户  ?(按y|Y表示是,按其他任意键表示否)

3.3禁止root远程登录?(按y|Y表示是,按其他任意键表示否) :

3.4删除'test'数据库及其访问权限?(按y|Y表示是,按其他任意键表示否) :

3.5现在重新加载权限表?(按y|Y表示是,按其他任意键表示否) :

4.创建新的用户

4.1root用户的身份登录到MySQL

4.2创建新用户 

4.3给新建用户添加权限

5看情况修改配置文件

 情况1:不允许远程访问(默认)

 情况2:允许远程访问(需要配置)

四、安装PHP及其扩展

1.安装PHP及其扩展

 2.启用php-mysqli扩展

        2.1查看PHP的版本

        2.2vim查看编辑PHP的配置文件

 3.安装完成后,重启Apache2服务以使PHP生效:

五、测试LAMP环境

六、总结:



引言

LAMP(Linux, Apache, MySQL, PHP)是一种流行的开源Web服务器软件栈,广泛应用于构建动态网站和Web应用程序。本文将整合本人学习Linux搭建过的单体服务器,详细介绍如何在Ubuntu 22.04上搭建LAMP环境,从系统更新到安装和配置各个组件,再到测试环境是否搭建成功。

一、系统更新

在开始之前,确保你的Ubuntu 22.04系统是最新的。打开终端并输入以下命令来更新系统:

sudo apt update
sudo apt upgrade

如下图,等待更新完毕.....

二、安装搭建Apache2

Apache2是LAMP环境中的Web服务器。

1.你可以通过以下命令安装它:
sudo apt install apache2

 如下图,等待安装完毕.....

2.查看Apache2版本
sudo apache2 -v

  如下图,我这边的版本是Apache/2.4.52 (Ubuntu)

3.查看Apache2运行状态

安装完成后,你可以使用如下命令检查Apache2是否正在运行。

sudo systemctl status apache2

如下图,我这边显示Apache HTTP服务器已经成功启动,并且正在运行。

4.浏览器访问

在浏览器中访问服务器的IP地址,以验证Apache2的默认页面是否可以正常显示。

三、安装搭建MySQL

1.安装MySQL
sudo apt install mysql-server mysql-client

等待安装完毕....

2.查看MySQL 版本
sudo mysql --version

如下图: 

 3.安全配置MySQL

安装完成后,运行以下命令进行安全配置,如设置root密码、删除匿名用户等。

sudo mysql_secure_installation

运行后如下图: 

3.1是否设置密码?(按y|Y表示是,按其他任意键表示否) :

要求设置一个密码。询问你,是否想要设置密码?如果是,输入y或Y;如果不设置,输入其他。

这边选择y,输入后回车,如下:

        要求你选择一个级别来设置密码验证策略。     

  • 低级别(LOW):密码长度至少为8个字符。
  • 中级别(MEDIUM):密码长度至少为8个字符,且必须包含数字、大小写字母以及特殊字符。
  • 高级别(STRONG):密码长度至少为8个字符,包含数字、大小写字母、特殊字符,并且不能是字典文件中的单词(这通常意味着密码需要足够复杂,以避免与常见单词或短语匹配)。

分别对应[0,1,2],输入对应的数字即可:

3.2是否删除匿名用户  ?(按y|Y表示是,按其他任意键表示否)

在大多数情况下,建议移除匿名用户以增强数据库的安全性。如果你确实需要允许某些用户以匿名方式访问数据库(尽管这在大多数情况下是不推荐的),你应该仔细考虑并设置适当的权限和访问控制。

输入y后按enter  成功删除 

3.3禁止root远程登录?(按y|Y表示是,按其他任意键表示否) :

为了增强MySQL服务器的安全性,通常建议仅允许root用户从本地主机(即服务器本身)进行连接,而不允许从远程位置连接。这是因为root用户拥有对数据库的完全访问权限,如果允许远程连接,那么任何能够访问该网络的人都有可能尝试猜测或破解root密码,进而获得对数据库的完全控制权。

输入Y,禁止root远程登录。回车后,如下:

3.4删除'test'数据库及其访问权限?(按y|Y表示是,按其他任意键表示否) :

在生产环境中,出于安全考虑,通常建议删除默认的'test'数据库。这是因为如果保留该数据库,任何能够连接到MySQL服务器的人都可能访问它,这可能会带来安全风险,尤其是如果该数据库包含敏感信息或测试数据时。

输入Y,删除'test'数据库及其访问权限。回车后,如下:

3.5现在重新加载权限表?(按y|Y表示是,按其他任意键表示否) :

在MySQL中,权限表存储了关于用户账户、它们可以访问哪些数据库、表以及可以执行哪些操作的信息。当你对MySQL的用户权限进行更改(例如添加新用户、删除用户、更改用户密码或修改用户权限)后,这些更改不会立即生效,直到你重新加载权限表。

重新加载权限表是一个必要的步骤,以确保MySQL服务器知道最新的权限设置,并能够根据这些设置来允许或拒绝用户的访问请求。

输入Y,选择重新加载权限表。回车后,如下:

All done! 意味着所有的步骤都已经完成,如移除匿名用户、禁止root远程登录、删除'test'数据库以及重新加载权限表等。

4.创建新的用户

由于上述步骤禁止root远程访问,所以要添加一个用户和密码。

4.1root用户的身份登录到MySQL
sudo mysql -u root -p

回车后输入前面设置的root用户的密码,如下图 :

4.2创建新用户 

输入以下命令创建 新用户zzj2144

create user 'zzj2144'@'%' identified by 'zzj123456789';

 成功创建:

查看用户    

select user,host,plugin from mysql.user;

执行这条查询语句后,你将得到一个结果集,其中包含了MySQL服务器上所有用户账户的用户名、允许连接的主机以及使用的身份验证插件。

4.3给新建用户添加权限

由于新建的MySQL用户基本上没有什么权限,我们需要手动添加。

GRANT ALL PRIVILEGES ON mydatabase.* TO 'zzj2144'@'%';

这里的ALL PRIVILEGES表示所有权限,mydatabase.*表示mydatabase数据库中的所有对象,'zzj2144'@'%'表示用户zzj2144可以从任何主机连接。

 成功添加

5看情况修改配置文件

vim查看编辑MySQL服务器配置文件

vim /etc/mysql/mysql.conf.d/mysqld.cnf
 情况1:不允许远程访问(默认)
bind-address            = 127.0.0.1
mysqlx-bind-address     = 127.0.0.1

 情况2:允许远程访问(需要配置)
user            = mysqlpid-file       = /var/run/mysqld/mysqld.pidsocket = /var/run/mysqld/mysqld.sockport           = 3306datadir        = /var/lib/mysql

四、安装PHP及其扩展

 PHP是LAMP环境中的脚本语言,用于处理Web页面上的动态内容。你可以通过以下命令安装PHP及其必要的扩展:

1.安装PHP及其扩展
sudo apt install php libapache2-mod-php php-mysql

等待安装...

 2.启用php-mysqli扩展
        2.1查看PHP的版本
php -v

 这边PHP的版本是8.1

        2.2vim查看编辑PHP的配置文件
sudo vim /etc/php/你的php版本/apache2/php.ini

如:vim /etc/php/8.1/apache2/php.ini

去掉这个注释:

 3.安装完成后,重启Apache2服务以使PHP生效:
sudo systemctl restart apache2

五、测试LAMP环境

为了验证LAMP环境是否搭建成功,你可以创建一个简单的PHP文件来测试。在Apache2的Web根目录(通常是/var/www/html)中创建一个名为info.php的文件,并输入以下PHP代码:

<?php
phpinfo();
?>

 保存文件后,在浏览器中访问http://<服务器IP地址>/info.php,到这里,如果环境配置成功的话你应该会看到PHP的配置信息页面。如下图:

总结:

  1. 防火墙设置:确保你的防火墙允许HTTP和HTTPS流量通过。

  2. 安全更新:定期检查并更新系统、Apache2、数据库和PHP的安全补丁。

  3. 备份:定期备份数据库和Web内容,以防数据丢失。

  4. 日志监控:定期检查Apache2和数据库的日志文件,以监控服务器的运行状态和潜在的安全问题。

 恭喜你到这里,在Ubuntu 22.04上成功搭建一个功能完善的LAMP环境。接下来将在此基础上安装phpMyAdmin。欲知后事,且待下节。

相关文章:

Ubuntu22.04搭建LAMP环境(linux服务器学习笔记)

目录 引言&#xff1a; 一、系统更新 二、安装搭建Apache2 1.你可以通过以下命令安装它&#xff1a; 2.查看Apache2版本 3.查看Apache2运行状态 4.浏览器访问 三、安装搭建MySQL 1.安装MySQL 2.查看MySQL 版本 3.安全配置MySQL 3.1是否设置密码&#xff1f;(按y|Y表…...

鸿蒙面试---1208

HarmonyOS 三大技术理念 分布式架构&#xff1a;HarmonyOS 的分布式架构使得设备之间能够无缝协同工作。例如&#xff0c;它允许用户在不同的智能设备&#xff08;如手机、平板、智能手表等&#xff09;之间共享数据和功能。比如&#xff0c;用户可以在手机上开始编辑文档&…...

java基础教程第16篇( 正则表达式)

Java 正则表达式 正则表达式定义了字符串的模式。 正则表达式可以用来搜索、编辑或处理文本。 正则表达式并不仅限于某一种语言&#xff0c;但是在每种语言中有细微的差别。 Java 提供了 java.util.regex 包&#xff0c;它包含了 Pattern 和 Matcher 类&#xff0c;用于处理正…...

Docker部署的gitlab升级的详细步骤(升级到17.6.1版本)

文章目录 一、Gitlab提示升级信息二、老版本的docker运行gitlab命令三、备份老版本Gitlab数据四、确定升级路线五、升级(共分3个版本升级)5.1 升级第一步(17.1.2 > 17.3.7)5.2 升级第二步(17.3.7 > 17.5.3)5.3 升级第三步(17.5.3 > 17.6.1) 六、web端访问gitlab服务 一…...

【如何制定虚拟货币的补仓策略并计算回本和盈利】

在虚拟货币市场中,价格波动性极大,如何在波动中生存并获得盈利是每个投资者都在思考的问题。作为一种投资策略,补仓(又称“摊低成本”)常常被用来降低持仓成本,并在市场回升时获得更大的盈利。但如何科学地设定补仓计划,确定回本点和盈利目标呢? 本文将以 Dogecoin 为…...

给图像去除水印攻

去除水印的过程与添加水印相反&#xff0c;它涉及到图像修复、颜色匹配和区域填充等技术。OpenCV-Python 提供了多种方法来处理不同类型的水印&#xff0c;包括但不限于纯色水印、半透明水印以及复杂背景上的水印。下面将详细介绍几种常见的去水印策略&#xff0c;并给出具体的…...

Linux之封装线程库和线程的互斥

Linux之封装线程库和线程的互斥与同步 一.封装线程库二.线程的互斥2.1互斥量的概念2.2初始化和销毁互斥量2.3加锁和解锁2.4互斥量的原理2.5可重入和线程安全2.6死锁 一.封装线程库 其实在我们C内部也有一个线程库而C中的线程库也是封装的原生线程库的函数&#xff0c;所以我们…...

PH热榜 | 2024-12-08

1. Reforged Labs 标语&#xff1a;轻松为手游工作室制作AI广告。 介绍&#xff1a;Reforged Labs 推出了一款前所未有的AI视频制作服务。我们自动化了以往昂贵且耗时的创意流程&#xff0c;取而代之的是能快速、低成本地为各个工作室量身定制视频广告。 产品网站&#xff1…...

LeetCode刷题day20——贪心

LeetCode刷题day20——贪心 435. 无重叠区间763. 划分字母区间分析&#xff1a; 56. 合并区间分析&#xff1a; 435. 无重叠区间 给定一个区间的集合 intervals &#xff0c;其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量&#xff0c;使剩余区间互不重叠 …...

CCF编程能力等级认证GESP—C++3级—20241207

CCF编程能力等级认证GESP—C3级—20241207 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09;判断题&#xff08;每题 2 分&#xff0c;共 20 分&#xff09;编程题 (每题 25 分&#xff0c;共 50 分)数字替换打印数字 单选题&#xff08;每题 2 分&#xff0c;共 …...

Microi 吾码:大数据浪潮中的智能领航者

目录 一、大数据时代的挑战与机遇 二、Microi 吾码在大数据存储方面的应用 与分布式文件系统的集成 数据库存储优化 三、Microi 吾码在大数据处理与分析中的应用 数据清洗与转换 数据分析与挖掘 四、Microi 吾码在大数据可视化中的应用 五、Microi 吾码在大数据流式处…...

Lua语言入门 - Lua 数组

Lua 数组 数组&#xff0c;就是相同数据类型的元素按一定顺序排列的集合&#xff0c;可以是一维数组和多维数组。 在 Lua 中&#xff0c;数组不是一种特定的数据类型&#xff0c;而是一种用来存储一组值的数据结构。 实际上&#xff0c;Lua 中并没有专门的数组类型&#xff…...

gulp应该怎么用,前端批量自动化替换文件

背景 最近公司准备把所有项目中用到的国际化相关的key规范化&#xff0c;原因是: 一直以来公司的app和web端 在针对相同的需求以及相同的国际化语言&#xff0c;需要设置不同的两份国际化文件&#xff0c;难以维护旧版的国际化文件中&#xff0c;存在的大量值重复&#xff0c…...

石岩湿地公园的停车场收费情况

周末石岩湿地公园停车场【967个】小车停车费封顶14元价格还行&#xff0c;我还记得2020年的时候湿地公园还是10元一天封顶。现在的收费情况也是可以的&#xff0c;尤其是周末停车比工作日停车便宜还是很得民心的哈。 车型 收费标准 小车 工作日 高峰时间8:00~20:00 首小时…...

A7157 基于Java+SSM+mysql+jsp的医院挂号系统的设计与实现 源码 文档 配置 全套资料

医院挂号系统 1.项目描述2. 绪论3.项目功能4.界面展示5.源码获取 1.项目描述 摘 要 随着计算机和网络技术的飞速发展&#xff0c;医院管理与互联网的结合也越来越紧密&#xff0c;享受便捷的医疗服务也变成了人民群众关注的重点。通过对医院就诊挂号情况的调查分析&#xff0c…...

数据处理与统计分析——11-Pandas-Seaborn可视化

Seaborn 简介 Seaborn 是一个基于 Matplotlib 的图形可视化 Python 库&#xff0c;提供了高度交互式的接口&#xff0c;使用户能够轻松绘制各种吸引人的统计图表。Seaborn 可以直接使用 Pandas 的 DataFrame 和 Series 数据进行绘图。 1. Seaborn 绘制单变量图 (1) 直方图 h…...

【计算机网络】实验13:运输层端口

实验13 运输层端口 一、实验目的 本次实验旨在验证TCP和IP运输层端口号的作用&#xff0c;深入理解它们在网络通信中的重要性。通过实验&#xff0c;我将探讨端口号如何帮助区分不同的应用程序和服务&#xff0c;使得在同一台主机上能够同时运行多个网络服务而不发生冲突。此…...

STL之适配器(adapters)_下

STL之适配器adapters container adapersstackqueue iterator adaptgersinsert iteratorsreverse iteratorsstream iterators function adapters对返回值进行逻辑判断:not1,not2对参数进行绑定:bind1st, bind2nd用于函数合成&#xff1a;compose1,compose2用于函数指针 ptr_func…...

基于51单片机64位病床呼叫系统设计( proteus仿真+程序+设计报告+原理图+讲解视频)

基于51单片机病床呼叫系统设计( proteus仿真程序设计报告原理图讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;S0095 1. 主要功能&#xff1a; 基于51单片机的病床呼叫系统proteus仿…...

安装 Zookeeper 和 Kafka

注意&#xff1a;需要java环境 [roothcss-ecs-2a6a ~]# java -version java version "17.0.12" 2024-07-16 LTS Java(TM) SE Runtime Environment (build 17.0.128-LTS-286) Java HotSpot(TM) 64-Bit Server VM (build 17.0.128-LTS-286, mixed mode, sharing) [roo…...

S7通信避坑指南:当1200/1500 PLC遇上S7-200 SMART,这些数据类型和地址映射坑你别踩

S7通信实战避坑手册&#xff1a;跨越1200/1500与200 SMART的数据鸿沟 在工业自动化系统升级改造过程中&#xff0c;新旧设备混合组网已成为常态。当工程师面对S7-1200/1500与S7-200 SMART的异构通信需求时&#xff0c;往往会陷入数据类型转换、地址映射等"隐形陷阱"。…...

手把手调参:BLDC有感启动的PWM占空比怎么给?从零到平滑启动的实战避坑指南

手把手调参&#xff1a;BLDC有感启动的PWM占空比实战指南 电机启动瞬间的电流冲击声像极了新手司机的"熄火"与"窜车"——要么纹丝不动&#xff0c;要么突然暴冲。这种尴尬在BLDC电机调试中尤为常见&#xff0c;特别是当负载特性未知时&#xff0c;如何设定…...

Meta超智能体开源:任意可计算任务中,能自我改进实现无尽演化

AI已经从被动解答问题的工具&#xff0c;演化为能主动探索如何进化的计算实体了。Meta人工智能实验室联合英属哥伦比亚大学、矢量研究所、爱丁堡大学以及纽约大学等多家顶尖学术机构的科研团队&#xff0c;共同推出了极具前沿性的架构设计DGM-Hyperagents。DGM-Hyperagents把执…...

背包问题优化指南:从二维数组到一维数组的空间压缩技巧(以0-1背包为例)

背包问题优化指南&#xff1a;从二维数组到一维数组的空间压缩技巧&#xff08;以0-1背包为例&#xff09; 在算法竞赛和性能敏感的开发场景中&#xff0c;动态规划的空间复杂度优化往往能带来显著的性能提升。0-1背包问题作为动态规划的经典案例&#xff0c;其空间优化路径具…...

Arrow终极指南:5步掌握可视化游戏叙事设计工具

Arrow终极指南&#xff1a;5步掌握可视化游戏叙事设计工具 【免费下载链接】Arrow Game Narrative Design Tool 项目地址: https://gitcode.com/gh_mirrors/arrow/Arrow Arrow是一款免费开源的游戏叙事设计工具&#xff0c;专门用于创建互动非线性故事和文本冒险游戏。这…...

PyTorch Autograd动态计算图实战:从构建、可视化到高效调试

1. 动态计算图的构建原理 PyTorch的Autograd系统最迷人的特性就是它的动态计算图。我第一次接触这个概念时&#xff0c;感觉就像发现了一个魔法黑箱——它能在代码运行时自动记录所有操作&#xff0c;并在需要时反向计算梯度。这种动态特性让PyTorch在调试复杂模型时特别顺手&a…...

3分钟快速上手:免费Windows字体自定义工具No!! MeiryoUI终极指南

3分钟快速上手&#xff1a;免费Windows字体自定义工具No!! MeiryoUI终极指南 【免费下载链接】noMeiryoUI No!! MeiryoUI is Windows system font setting tool on Windows 8.1/10/11. 项目地址: https://gitcode.com/gh_mirrors/no/noMeiryoUI 还在为Windows系统单调的…...

解锁外语游戏新体验:XUnity自动翻译器完全指南 [特殊字符]

解锁外语游戏新体验&#xff1a;XUnity自动翻译器完全指南 &#x1f3ae; 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为外语游戏中的生涩文本而苦恼吗&#xff1f;XUnity自动翻译器让你轻松打破语…...

告别环境变量噩梦:一键批处理脚本详解,让QGIS在Windows下的编译配置自动化

告别环境变量噩梦&#xff1a;一键批处理脚本详解&#xff0c;让QGIS在Windows下的编译配置自动化 在GIS开发领域&#xff0c;QGIS作为开源地理信息系统的代表&#xff0c;其灵活性和可扩展性吸引了大量开发者。然而&#xff0c;每次从源码编译QGIS都像是一场与环境变量的搏斗—…...

零基础玩转OpenClaw:Qwen3-32B镜像快速入门5个示例

零基础玩转OpenClaw&#xff1a;Qwen3-32B镜像快速入门5个示例 1. 为什么选择OpenClawQwen3-32B组合&#xff1f; 去年冬天&#xff0c;当我第一次看到同事用自然语言命令电脑自动整理桌面文件时&#xff0c;仿佛打开了新世界的大门。经过两周的折腾&#xff0c;我终于在本地…...