从零开始学习 LNMP

小提示

本文面向对LNMP一无所知的用户,部分用词可能不够严谨。 按步骤操作完成后,应有以下收获: 知道什么是LNMP; 知道LNMP是如何配合工作的 ; 知道自己的工作处在哪个部分 ; 成功在本地搭建完整的开发环境。

LNMP是什么东西

L指的是LinuxLinux是一个最流行的服务器操作系统,类似的服务器操作系统还有Windows Server 2003等。 Linux为各种各样的服务器软件提供了运行的环境。 N指的是Nginx,我们在浏览器输入一个网址,最先收到这个网址的就是Nginx,它是一个“门卫”。 M指的是MySQL,一个数据库软件,负责存储数据,我们价值很多亿的数据都由它保管,它是一个“仓库”。 P指的是PHP,一个编程语言,人和计算机交流就靠它了,它是一个人和机器之间的“翻译官”。

它们怎么配合的

我们现在的架构叫做:B/S架构,B就是browser(浏览器),S就是Server(服务器)。用户就是通过浏览器和服务器进行亲切友好的交谈。 以点击网页中的一个链接(假设链接为:http://www.abc.cn/index.php)为例,会经历以下过程

浏览器

用户要我打开一个网址,我告诉这个网址所在的服务器:我要请求这个网址,你快把内容告诉我 。

服务器(Linux)

服务器一直在监听网络上传递过来的请求,发现80端口上有一个浏览器的请求。80端口由Nginx负责,把这个请求转给Nginx

Nginx

Linux说有人找我,URL是www.abc.cn/index.php,以.php结尾,那应该交给PHP来处理。

PHP

Nginx说让我运行index.php这个文件。 我发现index.php这个文件让我做这些事: 从数据库MySQL取点数据出来; 将这些数据嵌入到HTML中,配合CSS,输出一个漂亮的页面。 联系MySQL,取到的数据内容为:你好,浏览器,我是abc.cn的服务器。 嵌入到HTML中,最终要输出的内容为:

你好,浏览器,我是abc.cn的服务器。

告诉Linux,我要输出的内容为:

你好,浏览器,我是abc.cn的服务器。

Linux PHP让我输出:

你好,浏览器,我是abc.cn的服务器。

浏览器 收到服务器返回的内容:

你好,浏览器,我是abc.cn的服务器。

p标签指明这是一个段落,那我就以段落的形式输出: 你好,浏览器,我是abc.cn的服务器。

DNS解析

从上一部分内容中可以看出,我们点击一个链接,最终是网络中的一台电脑为我们服务的,那么,浏览器是如何找到这台电脑的呢?网络中那么多电脑,如何来区分?一个电脑的唯一标识是什么? IP 通过IP地址,可以定位到网络中的唯一一台电脑(这个说法不太严谨,但入门阶段可以模糊的这样理解)。 域名 上一部分提到的链接 www.abc.cn/index.php,其中的 www.abc.cn 称为域名。 DNS服务器 网络上有一台电脑,专门把域名解析到IP,这样浏览器才能根据IP去找到一台唯一的电脑,负责提供这个服务的电脑称为DNS服务器。 本地HOSTS文件 比如我知道 www.abc.cn 对应的IP是 1.2.3.4,而且不会变了,不必每次都去DNS服务器那里查询了,是不是可以把这个情况告诉浏览器呢? 每台电脑都有一个HOSTS文件,里面记录了域名和IP的对应关系,浏览器先去这个文件里找目的域名对应的IP,找不到再去网络上的DNS服务器找。 如果我们想把 www.abc.cn 对应的IP固定成 1.2.3.4,直接在这个文件中增加一行即可: 1.2.3.4 www.abc.cn

安装

纸上得来终觉浅,绝知此事要躬行。

Windows平台

WAMP软件包 Windows下对应的组合为WAMP,即: W:Windows A: Apache M:MySQL P:PHP Windows下不必单独去安装各个软件,到 http://www.wampserver.com 下载封装好的集成包就可以。 配置

Mac平台

用这个电脑做开发的人你敢说不知道homebrew,还需要教吗

Linux平台

编译安装LNMP环境安装