什么是LAMP(LAMP概念详解)

2023-11-11

     LAMPlogo LAMP是 Linux、Apache、MySQL、PHP/Perl/Python 的简称。1998年Michael Kunze在电脑杂志C’T撰写的文章中首次使用了缩略语LAMP。它所组成的各组件都是开源软件,因此很方便自由的获取,导致这些组件的广泛使用,并不断完善发展,初步形成新的软件系统格局,并可能成为开源软件系统工程化的核心模式。
LAMP的组成
   LAMP具有简易性、低成本和执行灵活等特点使得其在全球发展速度较快,应用较广,越来越多的企业将平台架构在LAMP之上, LAMP架构的崛起,与J2EE架构和.Net架构形成了三足鼎立的竞争态势。通过证明,LAMP是一组高效的软件,作为一个系统能够良好的运行。每个组成元素的开放式结构允许相互间顺畅而缜密的结合,从而形成了一个强大的组合。回到1997年,那些早期的LAMP技术的采纳者被认为是激进的,但在今天开源运动正在蓬勃发展,无论是大企业还是小公司都在采用LAMP的开发方式。远离那些需要支付高昂费用的注册服务器和客户软件已变得越来越有利,因为LAMP的每一个应用软件的稳定性已经超过了那些比它昂贵许多的软件兄弟们。
  
1.Linux操作系统
   Linux 是一种计算机操作系统内核,基于GNU GPL V2许可证下发行,它具有性能好、安全性高、开放自由特点,你可以直接从网上下载得到并安装它。Linux能够根据你的需要而决定是否运行图形化用户界面。(没有图形化用户界面的运行方式对于那些对Linux不太熟悉的Windows使用者来说就相当于运行DOS模式)
   操作系统最重要的组成部分是内核。在 GNU/Linux 系统中,Linux 就是内核组件。而该系统的其余部分主要是由 GNU 工程编写和提供的程序组成。因为单独的 Linux 内核并不能成为一个可以正常工作的操作系统, 现在人们接触到的各种各样的Linux发行版,包含大量的GNU工程软件,包括了一个shell程序、工具、程序库、编译器及开发工具,还有许多其他程序,比如软件开发工具,数据库,Web服务器(例如Apache),X Window,桌面环境(比如GNOME和KDE),办公套件(比如OpenOffice.org)等等。所以我们更倾向使用GNU/Linux一词来表达人们通常所说的Linux。
   Linux的创始人是Linus Torvalds,当时他是芬兰赫尔辛基大学的学生。他的目的是想设计一个代替Minix的操作系统,这个操作系统可用于386、486或奔腾处理器的个人计算机上,并且具有Unix操作系统的全部功能,因而开始了Linux雏形的设计。1991年9月Linus在网上发布Linux 0.01版,1994年3月Linux内核1.0版问世。由于Linux的源代码是开放的,因此受到了全世界开发者的广泛支持,发展速度非常快,形成了以社区为中心的开发模式。就是人们通常说的开源社区,这种模式已经得到了充分肯定,越来越多的人参与到开源社区中来,使得Linux的发展越来越快,目前Linux的内核已经发展到2.6版本。
   现在,Linux已经成为了一种受到广泛关注和支持的操作系统。包括IBM和惠普在内的一些计算机业巨头也开始支持Linux。很多人认为,和其它的商用Unix系统以及微软 Windows相比,作为自由软件的Linux具有低成本,安全性高,更加可信赖的优势。


2.Apache Web服务器
   Apache,一种开放源代码的HTTP服务器,可以在大多数计算机操作系统中运行,由于它多平台和安全性,被广泛使用,成为是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中,得到了用户的广泛认可。
   Apache 起初由伊利诺伊大学香槟分校的国家高级计算程序中心开发。此后,Apache 被开放源代码团体的成员不断的发展和加强。Apache 服务器拥有牢靠可信的美誉,已在超过半数的因特网WEB服务器中应用,特别是几乎所有最热门和访问量最大的网站。
   开始,Apache只是Netscape网页服务器(现在是Sun ONE)之外的开放源代码选择。渐渐的,它开始在功能和速度超越其它基于Unix的HTTP服务器。1996年4月以来,Apache一直是Internet上最流行的HTTP服务器:1999年5月它在57%的网页服务器上运行;到了2005年7月这个比例上升到了69%。
Apache支持许多特性,大部分通过编译的模块实现。这些特性从服务器端的编程语言支持到身份认证方案。一些通用的语言接口支持Perl、Python、TCL和PHP流行的认证模块包括mod_access,mod_auth和mod_digest。其它的例子有SSL和TLS支持 (mod_ssl),proxy模块,很有用的URL重写(由mod_rewrite实现),定制日志文件 (mod_log_config),以及过滤支持(mod_include 和 mod_ext_filter)。Apache日志可以通过网页浏览器使用免费的脚本AWStats或Visitors来进行分析。



4.PHP脚本语言
   PHP是一种流行的开放源代码的编程语言,主要用于开发服务器端应用程序及动态网页。PHP原始的缩写是“Personal HomePage”,现在官方正式定为“PHP:Hypertext Preprocessor”的递归缩写。PHP程序是开放源代码最流行的一种脚本语言,可以用于替代微软的ASP体系、Sun微系统公司的JSP/Java体系,以及CGI/Perl等。它是一种嵌入HTML页面中的脚本语言。PHP在Web服务器上运行。当PHP脚本被客户端请求时,被请求的程序开始执行,并把执行的结果返回给客户端的网页浏览器。发送给客户端浏览器的内容是普通的HTML文本,不包含PHP代码。这是与嵌入HTML的客户端脚本的最主要的区别。在有了PHP-GTK扩展的支持后,现在的PHP已经可以被用来编写窗口程序了,PHP4版本以后, PHP也可以用来编写后台SHELL脚本程序,甚至有用PHP程序编写WEB服务器。
   PHP最初在1995年出现仅仅是一组简单的Perl语句,用来追踪Rasmus Lerdorf的在线简历。随着时间的推移,Lerdorf开始编写更大的C语言程序以适应他日益扩大的对功能的要求,包括数据库的连接性问题。Lerdorf接下来决定发布它的最初版本,是开源类型的PHP/FI以让所用人使用和改进。在当时,PHP/FI代表的是个人主页/表格编译器。到了1997年,第二个版本(PHP/FI2.0)发布并开始吸引全球几千人的追随。尽管许多个人都对代码做出了贡献,但是Lerdorf仍然是所有开发的主要贡献者。
   1997年目睹了一个新的PHP时代的到来:PHP3。这一版本是由Andi Gutmans和Zeev Suraski对PHP/FI2.0的完全重写,他们不满足于之前他们所工作的大学一个项目上PHP所提供的功能。为了对PHP日益成长的用户群进行资本化,Lerdorf、Gutmans和Suraski决定以PHP的名字发布这一新版本,从而开始了我们今天所熟知的PHP。在1998年冬天,PHP4的开发由Gutmans和Suraski进行。他们在2000年5月公布了第一个官方版本。PHP4具有更高超的表现力并向它日益扩大的“粉丝”群们推广包括HTTP环节、输出缓冲和更安全的处理用户输入方式在内的新技术。
   我们相信PHP5将会创造出更大的效应。一个新的以目标为本并与Zend Engine2,堆栈跟踪和例外处理相结合的模型被寄予希望能推动更为广泛的全球认可。与此同时,引进同外部以目标为本的模型结合,例如COM和Java,将会是向混合中投入一个通配符。这将是第一次使得其他社区有能力与PHP实现无缝结合成为现实。这表明以前所写的APIs将能够更轻松的与PHP相结合,从而消除了其他社区不使用PHP的最后理由。


为什么要使用LAMP
   Linux操作系统的核心是基于GNU GPLv2发行的。Linux在GPL下注册的原因很简单:你被授权对软件进行修改,相应的你就要将你的版本公之于众,并随之公布源代码。这就保证了GPL下的“开源”,允许其他人对你所做的工作进行修改。
   尽管并没有必要在GPL下注册任何开源软件,但GPL确实防止了代码不向公众公开的行为。任何人不能够通过改进一项软件之后关闭它的源代码,从而使得开源社区在此基础上开发相同的功用产生困难甚至是不可能的方式来从最初的源代码基础上获利。也是诸如Linux和大多数开源软件等伟大的操作系统发展的方式。这种类型的同级评审也正是开源运动的基础。
   GPL是由免费软件基金会编写和维护的。如果你对GPL感兴趣的话,可以访问他们的网站:
3.MySQL数据服务器
   MySQL是一个开放源码的多用户、多线程SQL数据库服务器软件。开发者为瑞典MySQL AB公司。它能让你通过一种编写语言如PHP来存储和找回数据。可以快速而高效的存储多种类型的数据,如布尔类型、文本类型、整数类型、图像类型、二进制数据和BLOB数据。使用数据库对于创建动态网站是十分重要的。动态网站这一概念来自于基于用户互动基础上能够使用单页代码而显示不同信息。如果不使用数据库和编写语言如PHP来操控数据,这一切听起来都是不可能的。
MySQL具有诸多特性,如数据复制、表格锁定、询问限制、用户账号、多层数据库、持续连接以及MySQL5的存储过程、触发器和视图。这些特性在接下来都会被更具体的介绍,而现在你应该知道使用这一伟大的数据库管理器你将收益颇丰。
   目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据,对于中小型应用系统是非常理想的。MySQL支持标准的ANSI SQL语句,它还支持多种平台,在Unix系统上该软件支持多线程运行方式,从而能获得相当好的性能。它同时支持Linux、Windows、Solaris等主流操作系统。
http://www.gnu.org/copy/gpl.html
   Apache、MySQL和PHP是我们将涉及和使用的免费应用软件。尽管它们其中有些并没有在GPL下注册,但它们也同样都处于一个相似的许可证之下。这不仅使得我们能够共享全球无数开发者的工作,而且也使得我们能够自由的选择使用和传播这些应用软件。从我们基本的Linux操作系统到我们的邮件服务器,我们将会使用由那些喜欢做一件事情的人带给我们的免费软件,而那些人爱做的事就是:编写软件。
   组成LMAP的各个组件,都是开源软件中的最为出色的项目,这些组件完全是开源的,所以LAMP完全是开源的。LAMP代表着当今人类对科技发展的一种新的态度,新的理想,代表着科技发展的一种新的模式,一种新的文化理念。全球财富500强企业中,有70%的企业采用Linux承担企业核心业务;全球半数以上的互联网服务器采用开源软件。这里所涉及到的开源软件产品包括:Linux操作系统(68%)、Apache(67%)、PHP开源脚本语言(53%)和开源数据MySQL(52%)。这些数据是在2005年5~6月期间,美国国家计算中心调查了140多个公司的IT高管人员所得,作为开源软件组合LAMP已被称为开源软件中的启明之灯。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是LAMP(LAMP概念详解) 的相关文章

  • 无法在 Laravel 8 中运行迁移:SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: 名称或服务未知 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我不明白为什么我的迁移在全新安装 Laravel 8 时失败 这就是我得到的结果 Illuminate Database
  • 让 MongoDB 在 Linux 上监听远程连接

    我已在 Windows 本地计算机上 上成功安装 MongoDB 作为服务 但现在我想将 MongoDb 移动到单独的服务器 所以我将 tarball 解压到网络上的虚拟服务器 运行 Linux 当我从本地计算机使用 PuTTY 连接到服务
  • Laravel:使用 Faker 播种多个独特的列

    介绍 怎么样 伙计们 我有一个关于模型工厂和多个独特列的问题 背景 我有一个名为 Image 的模型 该模型将语言支持存储在单独的模型中 图片文字 图片文字 has an image id栏 语言栏和文本栏 图片文字有一个约束MySQL那个
  • Apache 反向代理的基本身份验证问题

    我想为在 Ubuntu 服务器 12 04 1 上运行的 Apache 反向代理站点添加基本身份验证 网络应用程序是Jenkins http jenkins ci org运行在 Java EE 容器上 我在中添加了以下配置httpd con
  • 动态创建和下载Doc文件

    因此 我尝试动态创建 doc 文件并让用户在单击按钮时下载该文件 这些是我找到的用于下载文件的标头 header Content Description File Transfer header Content Type applicati
  • 使用 Mock 对 Laravel 5 Mail 进行单元测试

    有没有办法在 Laravel 5 中测试 Mail 尝试了我在互联网上看到的唯一合法的模拟示例 但它似乎只适用于 Laravel 4 下面的当前代码 mock Mockery mock Swift Mailer this gt app ma
  • PHP中的反转数组

    array 7 0 gt array 2 id gt string 1 9 roi gt float 0 1 gt array 2 id gt string 1 1 roi gt float 0 2 gt array 2 id gt str
  • 没有可用的符号表信息

    我正在测试第三方的库 它崩溃了 当我想查看崩溃的原因时 我的 gdb 告诉我没有可用的调试符号 Program received signal SIGSEGV Segmentation fault Switching to Thread 0
  • 从 PHP 生成渐变颜色

    我想知道如何构建一个给出颜色代码和 显示该颜色的渐变 例如 function generate color int colorindex Generate 10 pale colors of this color 请帮我 迈克尔引用的代码相
  • 在 /dev/input/eventX 中写入事件需要哪些命令?

    我正在开发一个android需要将触摸事件发送到 dev input eventX 的应用程序 我知道C执行此类操作的代码结构如下 struct input event struct timeval time unsigned short
  • AFNetworking 上传图片

    我看过一些例子 但我认为我的问题可能出在 PHP 中 我正在尝试使用 AFNetworking 将图像从 iPhone 上传到服务器 这是我的 obj c 代码 IBAction uploadButtonClicked id sender
  • 如何在php中根据url从mysql获取数据?

    我在 mysql 数据库中有一个页表 其中包含 page name title content author 字段 我想用 php 来获取它http www domain com index php page page name http
  • 在主目录中安装库

    在 Linux Ubuntu 中 我尝试运行一个工具 但它显示错误 库丢失 我无权在系统中安装任何内容 或者根本无法从我的用户帐户执行 sudo 是否可以在我的主目录 没有 sudo 中安装缺少的库 在我的例子中为 libstdc so 6
  • 为什么 PHPUnit 将一些右大括号显示为未被覆盖?

    我正在使用 PHPUnit 3 6 7 PHP CodeCoverage 1 1 1 和 Xdebug 2 1 2 当我让 PHPUnit 将代码覆盖率统计信息写入 clover 样式的 XML 文件时 它偶尔会显示一个右花括号 表示测试未
  • PHPMailer 验证失败

    当我尝试在工作中使用 Windows Server 2012 上的 PHPMailer 来使用 SMTP 发送报告电子邮件时 出现身份验证失败错误 我在域上使用服务器管理员帐户 我非常确定密码是正确的 检查下面的代码 require PHP
  • 访问 Magento 购物车和/或结帐中的运费

    请注意 这个问题是关于运费 而不是价格 有一个重要的区别 即运输方式为店主支付的费用是多少 而不是客户支付的费用 The shipping tablerate数据库表包括一个cost字段 该字段填充在Mage Shipping Model
  • Microsoft VS Code:当我尝试启动程序时,出现错误“spawn php ENOENT”

    我正在尝试在 Microsoft VS Code 上运行 PHP 代码 当我单击启动时 唯一发生的事情是调试控制台中出现错误 生成 php ENOENT 为了解决这个问题 我将 XDebug 的 dll 文件放入 ext 文件夹中 我将 p
  • 将二进制数据从 C# 上传到 PHP

    我想将文件从 Windows C 应用程序上传到运行 PHP 的 Web 服务器 我知道 WebClient UploadFile 方法 但我希望能够分块上传文件 以便我可以监控进度并能够暂停 恢复 因此 我正在读取文件的一部分并使用 We
  • 使用 WSGI 在 Windows XAMPP 中设置 Python 路径

    我正在 Webfaction 上设置实时服务器的开发版本 在本地计算机上的虚拟 Apache 服务器环境 运行没有任何错误 中运行 Django 应用程序 XP 使用 Python 2 6 运行 XAMPP Lite 我可以提交更改通过 G
  • 如何模拟ARM处理器运行环境并加载Linux内核模块?

    我尝试加载我的vmlinux into gdb并使用 ARM 内核模拟器 但我不明白为什么我会得到Undefined target command sim 这是外壳输出 arm eabi gdb vmlinux GNU gdb GDB 7

随机推荐

  • 概率机器人教学课件

    http www probabilistic robotics org
  • 信号上升沿与系统带宽的关系

    对于理想方波而言 其上升时间与带宽之间的关系是可以加以量化的 如下图所示 每个方波波形都是通过加上某几次谐波的正弦波频率分量而人为合成的 叠加的谐波分量越丰富 波形就越趋近于理想的方波 所以 如果可以获取每加入一次谐波后的合成波形上升时间
  • jetpack compose 屏幕适配

    fun Int sdp Dp val screenDp Resources getSystem displayMetrics widthPixels Resources getSystem displayMetrics density re
  • 安装pyscipopt

    安装pyscipopt Conda会自动安装SCIP 因此所有内容都可以通过单个命令安装 GitHub scipopt PySCIPOpt Python interface for the SCIP Optimization Suite c
  • Java获取类信息的三种方法+通过反射获取私有属性

    通过下面三种方法 我们可以获取到类的信息 包括类的名称 修饰符 父类 接口 字段 方法等信息 这些信息可以用于进行反射操作 例如动态创建对象 调用方法 访问字段等 通过反射可以 1 使用Class forName 方法 Class forN
  • 清理systemd日志

    systemd journal之于systemd犹如syslog之于init 其日志文件保存在 var log journal目录下 随着时间的流逝 该目录下会积累大量日志文件 占用不少的磁盘空间 如果硬盘容量较小或可用空间紧张 可以考虑清
  • C# winfrom设置循环暂停和继续 原文转自:http://blog.csdn.net/qwldcl/article/details/3970784...

    using System using System Collections Generic using System ComponentModel using System Data using System Drawing using S
  • C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例

    C 开发Unity游戏教程循环遍历做出判断及Unity游戏示例 Unity中循环遍历每个数据 并做出判断 很多时候 游戏在玩家做出判断以后 游戏程序会遍历玩家身上大量的所需数据 然后做出判断 即首先判定玩家是否有权限做出这种选择 然后才决定
  • 部署LNMP+zabbix(监控工具)

    目录 一 了解监控工具 1 为什么使用监控工具 2 企业中使用的监控工具 二 部署LNMP zabbix 1 LNMP安装环境 1 安装nginx 2 安装mysql 3 安装php 4 修改配置文件 5 测试 6 数据库授权 2 部署za
  • less切换主题

    less切换主题 核心css变量 less变量 1 定义主题less文件 assets css theme less 默认的主题颜色 primaryColor var primaryColor 000 primaryTextColor va
  • 批处理文件常用命令

    批处理有许多命令 1 Echo 命令 打开回显或关闭请求回显功能 或显示消息 如果没有任何参数 echo 命令将显示当前回显设置 语法 echo on off message Sample echo off echo hello world
  • Cannot create container for service peer1.org2.example.com: Conflict. 解决方案

    I have a docker compose yaml file defining 5 services orderer example com peer0 org1 example com peer1 org1 example com
  • 60-100-020-使用-MySQL 的Show Profile命令

    文章目录 1 概述 2 开启Profile功能 3 常用参数 4 注意点 5 总结 1 概述 前言 Show Profile是mysql提供的可以用来分析当前会话中sql语句执行的资源消耗情况的工具 可用于sql调优的测量 默认情况下处于关
  • Vue3实现九宫格抽奖(思路+完整代码)

    目录 前言 一 实现思路 1 组件结构 2 数据结构 奖品列表 抽奖按钮 v for的抽奖列表 3 组件交互 抽奖顺序 奖品高亮 中奖 二 完整代码 前言 虽然有一些抽奖插件比如lucky canvas来帮助我们快速发开抽奖小活动 但一些高
  • 最全电力电子仿真matlab/simulink仿真 单相全桥/半桥整流仿真 单相半波全波仿真

    最全电力电子仿真matlab simulink仿真 单相全桥 半桥整流仿真 单相半波全波仿真 三相全桥 半桥整流仿真 三相半波全波仿真 三相桥式整流及其有源逆变仿真 单相桥式整流及其无源逆变仿真 升降压斩波电路 boost buck电路仿真
  • 9V电池百科

    通称 层积电池 因其内部构造为6枚微型片状电池堆叠而得名 又名PPP3电池 标称电压9V 实际出厂电压略高 随使用逐渐降低 尺寸规格为宽度26 5mm 厚度17 5mm 高度48 5mm 根据电解物质的不同 种类主要有锂电池 lithium
  • jQuery获取input值的方法

    获取input的checked值是否为true 第一种 if input name item value val attr checked true 判断是否已经打勾 注 name即控件name属性 value即控件value属性 第二种
  • linux文件权限和文件夹权限解读

    基本介绍 使用ll命令可以查看当前文件夹下所有文件的具体信息 输出结果的第一个字段就是描述文件和目录权限的编码 这个字段的第一个字符代表了对象的类型 代表文件 d 代表目录 l 代表链接 c 代表字符型设备 b 代表块设备 n 代表网络设备
  • 机器学习笔记(李宏毅 2021/2022)——第五节:Transformer

    视频 2021 Transformer 上 2021 Transformer 下 self attention变形 一 Transformer应用 Transformer就是一个Sequence to sequence的model 他的缩写
  • 什么是LAMP(LAMP概念详解)

    LAMP是 Linux Apache MySQL PHP Perl Python 的简称 1998年Michael Kunze在电脑杂志C T撰写的文章中首次使用了缩略语LAMP 它所组成的各组件都是开源软件 因此很方便自由的获取 导致这些