一、什么是LAMP

LAMP=Linux Apache Mysql/MariaDB PHP/Perl/Python 这些软件都是开源免费的软件,几个程序各自是独立的,经常为了达到我们需要的效果而协同工作,组成了我们常见的LAMP架构平台!LAMP是世界上最流行的组合,当然同时也有Nginx,也就是LNMP:LAMP 相对于 NGINX 来说较为安全,但是Nginx处理高并发比Apache要强,

NGINX 相对于 LAMP 来说安全较为差一点,同样的配制环境负载远远高于 LAMP 向国内的一些大公司,淘宝、新浪都在用这一些 NGINX,像那么大的公司网站需要用到服务器群用LAMP搭建环境成本远远大于NGINX。打个比方本来1000000W访问量需要 10台LAMP环境服务器才能完成,但是使用NGINX也许只需要5、6台这样一来对于这样的公司来说就大大的节约了成本。

从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决方案,在以前这句话没有错,但是在现在,这句话有待证实!!!因为在以后的过程中,会发现我们会使用的架构是Nginx和Apache结合使用:使用Nginx可以做集群等相关配置,可以和apache一起使用,有的会用apache去跑php,然后用nginx做反向代理,比如apache运行在8080端口,nginx在80端口,访问php文件时,反向代理到apache,静态页通过nginx处理。nginx支持高并发,apache对php的运行比较稳定。

常见的网页类型:htm,html,shtml,stm.php,asp,aspx,shtm,jsp等等Apache本事只处理静态页面,处理动态页面需要使用libphp5.so这个模块去工作,编译php也其实是将一个至关重要的模块打入到apache内部,然后apache收到php请求,将请求交给这个模块来处理!

二、LAMP的架构以及通信过程

LAMP的架构:

LAMP是一个多C/S架构的平台,最初级为web客户端基于TCP/IP通过http协议发起传送,这个请求可能是动态的,也可能是静态的。

所以web服务器通过发起请求的后缀来判断,如果是静态的资源就由web服务器自行处理,然后将资源发给客户端。如果是动态这时web服务器会通过CGI(Common Gateway interface)协议发起给php。

这里但是如果php是以模块形式与Web服务器联系。那么他们是通过内部共享内存的方式。如果是php单独的放置与一台服务器,那么他们是通过sockets套接字监听的方式通信(这又是一个C/S架构)。

这时php会相应的执行一段程序,如果在执行程序时,需要用到数据。那么php就会通过mysql协议发送给mysql服务器(也可以看作是一个C/S架构)。由mysql服务器处理,将数据供给php程序。

LAMP流程

1. 用户发送http请求到达httpd服务器

2. httpd解析url获取需要的资源的路径,通过内核空间读取硬盘资源,如是静态资源,则构建响应报文,发回给用户

3. 如果是动态资源,将资源地址发给php解析器,解析php程序文件,解析完毕将内容发回给httpd,httpd构建响应报文,发回给用户

4. 如果涉及到数据库操作,则利用php-mysql驱动,获取数据库数据,返回给PHP解析器。

三、A,M,P是怎么联动起来工作的呢

apache + php结合的方式大概几种

第一种:把php编译时直接编译成apache的模块、module模块化的方式进行工作(apahce默认的这种方式)。

第二种:CGI、通用网关接口、apache基于CGI跟hph通信

第三种:fastcgi、他也是一种协议、在这种模块下他们两个是这样结合的:

本来php是做为一个模块或都是php解析器运行的,不是监听在某个套接字上接收别人的请求的,而是让别人调用为一个进程使用的,可能是做为别人的子进程在运行,但是工作在fastcgi这种模块下的hph自行启用为一个服务进程,他监听在某个套接字上,随时可以接受来自客户端的请求的,他也是有一个主进程的,为了可以响应多个用户的请求,他会启用多个子进程,这些子进程我们也可以称为工作进程,他也是有空闲进程的,一但有客户请求他马上使用空闲的进程响应客户端的请求,将结果返回给前端的调用者,在php5.3.3版本之前他是没有这个能力了,只能工作在模块和CGI的方式下,而在5.3.3之后这个模块直接被收进php模块中,这种模块就叫php-fpm。

所以在以后编译php时,要想跟apache结合,就要编译成php-fpm,这是基于fastcgi工作的模式,并启动这服务进程,也就意味着他是通过套接字跟前端的调用者通信,既然基于套按字通信了,那么前端的web服务器和后面的php服务器完全可以工作在不同的主机上,实现了所谓的分层机制。

apache不会跟数据库打交道,他是个静态web服务器,跟数据库打交道的是应用程序,作为应用程序的源驱动能够基于某个API跟服务器之间建立会话,而后他会通过我们的mysql语句发送给数据库,数据库再将结果返回给应用程序,不是php进程,而是php进程中所执行的代码。

php + mysql的通信

PHP跟mysql怎么整合起来呢,php又怎么被httpd所调用呢

首先httpd并不具备解析代码的能力,他要依赖于php的解析器,接着php本身不依赖于mysql,他只是一个解析器,能执行代码就OK了,那他什么时候用到mysql呢,如果要在mysql中存数据时才用到mysql,只是当php中有运行mysql语句时才用到mysql。

php语言要想联系mysql,通常用到php的驱动,rpm包的叫php_mysql,php跟mysql没有一点关系,只有程序员在php中编写mysql语句时才连接mysql来执行sql语句的。

基于php-mysql去连接mysql只使用一个函数mysql_connect();而mysql_connect()正是php-mysql提供的一个API,只要指明要连接的服务器即可。

LAMP相关网站

Apache=http://httpd.apache.org/                  httpd主程序包

MySQL=http://dev.mysql.com/downloads/mysql/                   mysql主程序包

PHP=http://php.net/downloads.php                    php主程序包

apr=http://apr.apache.org/                      apr是httpd的依赖包

apr-util=http://apr.apache.org/               apr-util是httpd的第二个依赖包

apr和apr-util这个两个软件是对后端服务软件进行优化的,apr-util只是在apr的基础上提供了更多的数据结构和操作系统封装接口而已。

pcre 是httpd的第三个依赖包 http://pcre.org/

PCRE(Perl Compatible Regular Expressions中文含义:perl语言兼容正则表达式)是一个用C语言编写的正则表达式函数库,PCRE被广泛使用在许多开源软件之中,最著名的莫过于Apache HTTP服务器和PHP脚本语言、R脚本语言,此外,正如从其名字所能看到的,PCRE也是perl语言的缺省正则库。

用Ctrl+R搜索历史命令;当你执行了一串相当长的命令之后,你只要用关键字搜索一下历史命令然后重新执行这条命令而不需要将整条命令再输一遍。方法是:按下Ctrl+R然后输入关键字。如搜索”date”,则显示历史的命令中含有”date”的命令 date "+今天是:%F,%A,时间是:%T.准备吃饭去"。按回车,就可以重新执行这条命令了,而按左箭头键或右箭头键则可以直接修改,改完之后按回车执行,非常方便!

四、部署LAMP

第一步:下载软件

[root@ren3 ~]# yum -y install httpd php php-mysql mariadb-server

第二步:配置数据库

[root@ren3 ~]# systemctl restart mariadb   #启动数据库

[root@ren3 ~]# mysql -u root -p          #进入数据库

MariaDB [(none)]> create database ren;     #创建ren数据库,需;结尾

MariaDB [(none)]> grant all on *.* to ren3@'localhost' identified by '123';      #授权给ren3用户所有库所有表,在本地主机上登录,用123密码认证

MariaDB [(none)]> exit   #退出

第三步:上传WordPress博客

[root@ren3 ~]# cd /var/www/html/      #进入httpd工作目录

[root@ren3 html]# rz

[root@ren3 html]# ls

wordpress-3.3.1-zh_CN.zip

[root@ren3 html]# yum -y install unzip      #下载解压工具

[root@ren3 html]# cd wordpress/

[root@ren3 wordpress]# ls

[root@ren3 wordpress]# cp wp-config-sample.php wp-config.php      #修改配置文件

[root@ren3 wordpress]# vim wp-config.php

/** WordPress 数据库的名称 */

define('DB_NAME', 'ren');

/** MySQL 数据库用户名 */

define('DB_USER', 'ren3');            #和授权用户保持一致

/** MySQL 数据库密码 */

define('DB_PASSWORD', '123');

/** MySQL 主机 */

define('DB_HOST', 'localhost');

第四步:修改httpd配置文件

[root@ren3 wordpress]# vim /etc/httpd/conf/httpd.conf

<IfModule dir_module>

DirectoryIndex index.php index.html         #修改默认主页文件

</IfModule>

[root@ren3 wordpress]# rm -rf /etc/httpd/conf.d/welcome.conf

[root@ren3 wordpress]# systemctl restart httpd

[root@ren3 wordpress]# firewall-cmd --add-port=80/tcp

第五步:访问

五、部署LNMP

第一步:安装服务程序

[root@ren3 ~]# yum install nginx php php-mysql php-fpm mariadb-server -y

下载php-fpm需要用到下面的源

[centos]

name=centos base

enabled=1

gpgcheck=0

baseurl=http://mirrors.163.com/centos/7/os/x86_64/

第二步:修改nginx配置文件

[root@ren3 ~]# vim /etc/nginx/nginx.conf

server {

root         /var/www/html;           #更改网站根目录

index           index.php;     #添加index.php默认页

location ~ php$ {           #定义一个匹配PHP文件的规则

fastcgi_pass 127.0.0.1:9000;        #php-fpm监听的地址

include fastcgi.conf;              #加载fastcgi文件

}

}

第三步:重启nginx和php-fpm

[root@ren3 ~]# systemctl restart nginx

[root@ren3 ~]# systemctl restart php-fpm

[root@ren3 ~]# ss -tnl

State      Recv-Q Send-Q Local Address:Port    Peer Address:Port

LISTEN     0      128    127.0.0.1:9000

第四步:上传WordPress并编辑

第五步:启动数据库并创建数据库和用户

第六步:浏览器访问

Linux进阶之LAMP和LNMP动态网站搭建的更多相关文章

  1. Apsara Clouder云计算专项技能认证:网站建设-简单动态网站搭建

    一.课程介绍 1.课程目标 了解静态网站和动态网站的区别 掌握动态网站的不同实现方式 在阿里云上如何搭建 wordPress网站以及 wordPress 网站的管理和优化 二.网站搭建的类型 1.网站 ...

  2. LNMP动态网站架构及web应用部署,搭建discuz论坛

    1)部署Nginx 实验tar安装包可找本人拿记得点+关注,感谢亲们支持,评论拿包 systemctl stop firewalld iptables -F setenforce 0 1)安装支持软件 ...

  3. CentOS 7 架设LNMP动态网站

    1.安装Nginx 1)使用Nginx官方的yum源 [root@localhost ~]# vim /etc/yum.repos.d/nginx.repo [nginx] name=nginx re ...

  4. LAMP架构上线动态网站WordPress

    第一步,一键安装LAMP架构所需要的程序 yum install -y httpd mariadb-server php php-mysql 第二步,配置httpd,修改主配置文件/etc/httpd ...

  5. 《Linux就该这么学》培训笔记_ch20使用LNMP架构部署动态网站环境

    <Linux就该这么学>培训笔记_ch20使用LNMP架构部署动态网站环境 文章最后会post上书本的笔记照片. 文章主要内容: 源码包程序 LNMP动态网站架构 配置Mysql服务 配置 ...

  6. 第20章 使用LNMP架构部署动态网站环境

    章节概述: 本章节将从Linux系统的软件安装方式讲起,带领读者分辨RPM软件包与源码安装的区别.并能够理解它们的优缺点. Nginx是一款相当优秀的用于部署动态网站的服务程序,Nginx具有不错的稳 ...

  7. Linux中什么是动态网站环境及如何部署

    当谈论起网站时,我们可能听说过静态和动态这两个词,但却不知道它们的含义,或者从字面意思了解一些却不知道它们的区别. 这一切可以追溯到网站和网络应用程序,Web应用程序是一个网站,但很多网站不是Web应 ...

  8. 编译LNMP部署动态网站环境

    LNMP动态网站部署架构是由一套 Linux+Nginx+MySQL+PHP 组成的动态网站系统解决方案. 以下配置环境为:Linux=RHEL7 --> Nginx=1.13 --> M ...

  9. 编译LAMP部署动态网站环境

    LAMP动态网站部署架构是由一套 Linux+Apache+MySQL+PHP 组成的动态网站系统解决方案. 以下配置环境为:Linux=RHEL7 --> Apache=2.4.33 --&g ...

随机推荐

  1. 考前自救题库NABCD分析

    考前自救题库NABCD分析 项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 团队项目-初次邂逅,需求分析 项目名称:考前自救题库(暂定) 项目简介:本产品计 ...

  2. 四、python学习-正则表达式

    正则表达式 import re lst = re.findall(正则表达式,需要匹配的字符串) findall 把所有匹配到的字符串都搜出来,返回列表 不能把分组内容和匹配内容同时显示出来 sear ...

  3. BBR拥塞算法的简单解释

    TCP BBR的ACM论文中,开篇就引入了图1,以此来说明BBR算法的切入点: 为何当前基于丢包探测的TCP拥塞控制算法还有优化空间? BBR算法的优化极限在哪儿? 图1 为了理解这张图花了我整整一个 ...

  4. 19. slot插槽传递模板

    插槽,也就是slot,是组件的一块HTML模板,这块模板显示不显示.以及怎样显示由父组件来决定. 插槽模板是slot,它是一个空壳子,因为它显示与隐藏以及最后用什么样的html模板显示由父组件控制.但 ...

  5. Django+Vue+Docker搭建接口测试平台实战

    一. 开头说两句 大家好,我叫林宗霖,是一位测试工程师,也是全栈测开训练营中的一名学员. 在跟着训练营学习完Docker容器技术系列的课程后,理所应当需要通过实操来进行熟悉巩固.正好接口自动化测试平台 ...

  6. SpringMVC请求参数解析

    请求参数解析 客户端请求在handlerMapping中找到对应handler后,将会继续执行DispatchServlet的doPatch()方法. 首先是找到handler对应的适配器. Hand ...

  7. 限制pyqt5应用程序 只允许打开一次

    起因 pyqt5程序创建桌面快捷方式后,多次单击图标 会打开多个UI界面,这种情况肯定是不允许的! 解决 if __name__ == '__main__': try: app = QtWidgets ...

  8. 【VsCode】常用的快捷键

    查找和替换: 查找:Ctrl +F 查找和替换:Ctrl +H编辑器和窗口管理相关快捷键: 文件之间切换:Ctrl+Tab 关闭当前窗口:Ctrl+W /Ctrl +F4 切出一个新的编辑器窗口(最多 ...

  9. hdu3460 字典树(打印机)

    题意:        给你一些名字,让你用一台打印机去打印这些名字,打印机只有三个操作 (1)打印的都是小写字母 (2)每次可以在当前字母的后面加一位,或删除一位. (3)打印当前串 问你最少多少步可 ...

  10. 手动绕过百度加固Debug.isDebuggerConnected反调试的方法

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78237571 1.调用Debug.isDebuggerConnected函数这种反 ...