1、什么是LAMPphp
LAMP=Linux Apache Mysql/MariaDB PHP/Perl/Python 这些软件都是开源免费的软件,几个程序各自是独立的,常常为了达到咱们须要的效果而协同工做,组成了咱们常见的LAMP架构平台!LAMP是世界上最流行的组合,固然同时也有Nginx,也就是LNMP:LAMP 相对于 NGINX 来讲较为安全,可是Nginx处理高并发比Apache要强,html
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的运行比较稳定。mysql
常见的网页类型:htm,html,shtml,stm.php,asp,aspx,shtm,jsp等等Apache本事只处理静态页面,处理动态页面须要使用libphp5.so这个模块去工做,编译php也实际上是将一个相当重要的模块打入到apache内部,而后apache收到php请求,将请求交给这个模块来处理!nginx
2、LAMP的架构以及通讯过程程序员
LAMP的架构:web
LAMP是一个多C/S架构的平台,最初级为web客户端基于TCP/IP经过http协议发起传送,这个请求多是动态的,也多是静态的。正则表达式
因此web服务器经过发起请求的后缀来判断,若是是静态的资源就由web服务器自行处理,而后将资源发给客户端。若是是动态这时web服务器会经过CGI(Common Gateway interface)协议发起给php。sql
这里可是若是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解析器。
3、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.准备吃饭去"。按回车,就能够从新执行这条命令了,而按左箭头键或右箭头键则能够直接修改,改完以后按回车执行,很是方便!
4、部署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
第五步:访问
5、部署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并编辑
第五步:启动数据库并建立数据库和用户
第六步:浏览器访问