(一)再说编译安装httpd2.4
php
新特性:
1:MPM(多处理模块)支持运行为DSO(动态共享,动态加载模式)机制,以模块形式按需加载,支持动态加载
2:event MPM生产环境可用
3:支持异步读写机制
4:支持每一个模块和每一个目录日志级别定义
5:每请求相关的专用配置
6:加强版的表达式分析式
7:支持毫秒级持久链接时长定义
8:基于FQDN的虚拟主机也再也不须要NameVirtualHost directive
9:支持新的AllowOverrideList指令
10:支持自定义变量的使用
11:更低的内存消耗
12:支持fcgi
13:支持scgi
14:支持remote IP
(二)对于yum 安装的httpd2.4详解
node
前言:yum 安装的httpd2.4必须掌握
(1)切换使用的MPM
/etc/httpd/conf.modules.d/00-mpm.conf 中选择须要的模式 ,打开独有的LoadModule,而后restart
(2)虚拟机基于IP的访问控制,位于<VirtualHost> </VirtualHost>
容许全部的主机访问:
Require all granted
拒绝全部的主机访问:
Require all deny
控制某特定的IP访问:
Require ip IPADDR:受权指定的IP访问
Require not ip IPADDR:拒绝
控制特定的主机访问:
Require host HOSHNAME:受权指定的来源的主句访问
Require not host HOSHNAME:拒绝
注意:若是容许全部的主机访问,可是拒绝192.168.10.2这台主机访问,要在<Directory>中加上一个容器,例如
<RequireAll>
Require all granted
Require not ip 192.168.10.2
</RequireAll>
(3)基于FQDN的虚拟主机再也不须要NameVirtualHost指令
# www.a.com 虚拟机
<VirtualHost *:80>
ServerName www.a.com
DocumentRoot "/apps/www/a"
<Directory "/apps/www/a">
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
# www.b.com 虚拟机
<VirtualHost *:80>
ServerName www.b.com
DocumentRoot "/apps/www/b"
<Directory "/apps/www/b">
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
千万注意:对于httpd-2.4版原本说,任意目录下的页面只有被显示受权才能被访问
(三)对于httpd这样的web服务器中http协议说明
python
前言:
请你们使用Google搜一搜什么是会话保持
(1)使用会话粘性
(2)使用会话服务器集群,会话保持在数据库里面
(3)使用会话服务器,会话保存在基于内存的NoSQL数据库中,如memcached或redis
<方法> <请求URL> <协议版本>
<各类的请求的header>
<请求体>
<协议版本> <状态码> <是否ok>
<各类的响应的header>
<响应体>
GET :从服务器获取一个资源
HEAD :只从服务器获取文档的响应首部,不会获取响应的内容资源
POST:向服务器发送服务器要处理的数据,数据会保存在entity-body中
PUT:将请求的主体部分存储在服务器上,entity-body包含须要上传的内容
DELETE:删除服务器上的经过URL指定的文档
TRACE:追踪请求到达服务器中间通过的代理服务器
OPTIONS:让服务器返回对指定资源支持使用请求的方法
1xx:100-101,表示信息提示
2xx:200-206,成功
3xx:300-305,重定向
4xx:400-415,错误类信息,客户端错误
5xx:500-505,错误类信息,服务器端错误
经常使用状态码分类:
200:成功,请求的全部的数据经过响应报文的entity-body部分发送;ok
301:请求的URL指向的资源已经被删除,可是在响应报文中经过首部Location指明了资源如今所处的新位置;Moved Permanently
302:与301类似,可是在响应报文中经过Location指明资源如今所处的临时的新位置;Found
304:客户端发出了条件式请求,可是服务器上的资源未发送改变,经过响应此响应状态码通知客户端,Not Modified
401:须要客户端输入帐号和密码才能访问资源;Unauthorized
403:请求被禁止;Forbidden
404:服务器没法找到客户端请求的资源;Not Found
500:服务器内部错误;Internal Server Error
502:代理服务器从后端服务器收到了一条伪响应;Bad Gateway
- 6:
http协议的各个首部分类
(如何想深刻学习,请移步《HTTP权威指南》)
1:通用首部:
Date:报文的建立时间
Connection:链接方式,如:keep-alive ,close
Via:显示报文通过的中间节点
Cache-Control:控制缓存的生效
2:请求首部:
Accept:告诉服务器客户端本身能够接受的媒体类型,也就是MIME类型
Accept-Charset:能够接受的字符集
Accept-Encoding:能够接受的编码格式,接受哪些压缩格式,如gzip
Accept-Language: 能够接受的语言
Host:请求的服务器名称,通常是域名
Referer:包含当前正在请求资源的上一级资源,就是上一级所在的域名
User-Agent:客户端代理
条件式请求首部:
Expect
If-Modified-Since: 自从自定的时间后,请求的资源是否发生过修改
If-UnModified-Since:自从自定的时间后,请求的资源是否没有发生过修改
If-None-Match:本地缓存中存储的文档的ETag标签是否与服务器端的文档ETag标签不匹配
If-Match:本地缓存中存储的文档的ETag标签是否与服务器端的文档ETag标签匹配
安全请求首部
Authorization:向服务器发送认证信息,如:帐号密码
Cookie:客户端向服务器端发送cookie
Cookie2:
代理请求首部 :
Proxy-Authorization:向代理服务器认证
3:响应首部:
信息性 :
Age:资源的有效期限,或 响应持续时长
Server:服务器程序的软件名称和版本,如:Apache,Nginx
协商首部:某资源有多种表示方法时使用
Accept-Ranges:服务器能够请求的访问类型
Vary:服务器查看的其余首部列表
安全响应首部 :
Set-Cookie:向客户端设置cookie
Set-Cookie2:
WWW-Authenticate:来自服务器对客户端的质询认证表单
4:实体首部 :
Allow:列出对此实体可以使用的请求方法
Location:告诉客户端真正的实体位于何处
Content-Encoding:实体的编码格式
Content-Language:实体使用的语言
Content-Length:主体的长度
Content-Location:实体真正的所处位置
Content-Range
Content-Type:主体的对象类型
缓存:
ETag:实体的扩展标签
Expires:实体的过时时间
Last-Modified:最后一次修改的时间
(四)LAMP架构集群入门
mysql
L:Linux
A:Apache(httpd)
M:MySQL , Mariadb
P:php, perl , python
静态资源:图片,文档,视频,HTML代码,CSS代码,js代码等
动态资源:是程序文件,须要在执行引擎上执行后,返回给客户端
客户端技术:JavaScript(有机会必定要学习)
服务端技术:php, Java,Python(必定要学习),node.js,go(运维的趋势,跟着谷歌走,不拍栽跟头)
httpd:接受用户的web请求
php:运行PHP程序
MariaDB:数据管理系统
做用:从客户端的网页浏览器向服务器上的应用程序传输数据
Client ---(http)---> httpd ---> (cgi协议) ---> PHP --- (mysql协议) ---> MySQL
脚本编程语言,使用PHP模板将PHP代码嵌入到HTML代码中,实现HTML页面的基于数据的动态化
1:CGI
2:FastCGI
3:把php编译为httpd的模块
模块名为:libphp5.so
(五)LAMP架构集群进阶
web
redhat 6:httpd,php, mysql-server , php-mysql
service httpd start
service mysqld start
redhat 7:httpd,php, mariadb-server , php-mysql
systemctl start httpd.service
systemctl start mariadb.service
客户端程序:mysql
-u:指明用户名
-h:指明主机
-p:指明密码
例如:mysql -h192.168.23.10 -uroot -p
数据库SQL语言介绍(这个会在下周一一次性讲完,请同志们作好心理准备,其实很简单)
DDL:数据库定义语言
DML:数据库操做语言
DCL:数据库执行语言
例如:
grant all on testdb.* to testuser@'192.168.10.%' identified by '123456';
flush privileges;
1:PHP
<?php
phpinfo();
?>
2:php链接mysql的测试代码
<?php
$conn = mysql_connect('192.168.10.3','yhy','123456');
if ($conn)
echo "ok";
else
echo "false";
?>
(1)解压后,将目录放在web站点目录下,而且更名wp-config-sample.php为wp-config.php
(2)在mysql数据库中先建立wp数据库,而且给yhy用户受权 这是WordPress特殊的地方,其余的程序不须要
create database wpdb;
grant all on wp.* to yhy@'192.168.%.%' identified by '123456';
flush privileges;
systemctl restart mariadb.service
(3)编辑wp-config.php,修改以下配置
define('DB_NAME', 'wp');