网络上的通信都是基于IP,通信模式:TCP/IP
tcp建立连接和断开连接,都是要双方进行确认的
建立连接:三次握手断开连接:四次挥手
通信时端到端端口进行通信(进程或者服务都是有指定的端口号。)
http 80 nginx 80 ssh 22 mysql 3306
ip地址:端口号 ip地址是主机在互联网上的唯一标识。
ip是确定身份 端口:确定访问对象。
公网ip地址已经没了,现在这个唯一标识(ip地址)需要nat地址转换。
ip地址是一个点分十进制组成的192.168.233.10
192.168.233:网络位10:主机位
dns解析:
网站都是域名,dns解析的作用是把域名解析成ip地址
迭代:从根域名到二级域
返回用户的过程:递归----运营商-----本地hosts----用户
三种方式:
1./etc/hosts本地解析,速度最快,缺点:如果需要配置的解析地址多,工作量比较大
格式
192.168.233.10 www.kgc.com
访问域名就是在访问ip地址
2.DNS服务器来进行解析
运营商:运营商提供一个DNS解析的ip地址。
/etc/resolv.conf
格式:
nameserver 218.2.135.1
3.网卡配置:ifcfg-ens33
生效的顺序:
hosts文件的优先级最高…- ----网卡配置--------dns服务器(resolv.conf)
分布式:把计算机系统或者应用程序分布在多台独立的计算机或者服务器上。通过网络通信以及协作,共同完成特定的任务或者服务。工作负载分散到多个节点上,提高性能和可靠性。
分布式前端的nginx分布式数据库。分布式分件系统
集群:多台计算机或者服务器连接在一块,形成一个单一的计算资源池。计算机通过网络互相连接,共享任务,集群都是由相同类型的计算机组成。运行的程序也是相同的。
作用:通过增加计算机节点,扩展系统,然后提高整体的处理能力和容量。
LNMP架构:
部署L linux
n:nginx提供网页访问 nginx1 nginx2
M:MYSQL数据库,保存用户名和密码
p:PHP,处理动态页面。
html:超文本标记语言,也是我们最常见的网页格式。是一种规范,也是一种标准。也是一个文本文件。
xxx.html
xxx.htm
网页:纯文本格式的文件 语言HTML。浏览器来翻译html语言形成网页
网站:是由多个网页组成,网页的结合体。打开网站之后出现的第一个页面就是我们说的网站首页或者主页。
域名:域名需要注册,访问网站时输入的网址就是我们说的域名
传输方式:http/https
http:超文本传输协议,https:加密的超文本传输协议。靠ssl证书进行认证。网页的传输通信协议URL:万维网的寻址系统(唯一标识。)
uRI:www.baidu.com/test/index.html
/test后面的内容URI 匹配网站不同分支的内容
超链接:超链接把网站当中的不同内容连接起来。
web:world wide web全球广域网 也就是万维网
一种分布式的图形信息系统。
web1.0:看网页。
web2.0看,交互作用。用户不仅仅是看,还可以是网页内容的制造者。网站和用户可以双向交流。
静态页面只是文本文件,可以修改,一般以.html.htm保存的文本文件。网站的基础。静态页面和后台数据库没有任何交互,不包含请求程序。
更新起来比较复杂。一般适用于更新比较少的展示型的网站,一般都是网站的主页。
静态页面的URL是固定的
动态页面:
1、url不是固定的,能通过后台和用户交互
2、动态页面的URL当中一般有个?号
3、动态页面:PHP,jsp python node.js
4、动态页面可以自动更新
5、访问的时间,访问的内容会发生变化。
http协议:0.9淘汰
http1.0:基本淘汰
http1.1:目前最常用的https http
http1.1主要服务于https,端口443,
1.1的特点就是提供了加密和安全传输的端口的一种http.
http2.0:新一代的加密协议,传输速度比http1.1的速度更快。
http协议:超文本传输协议,基于tcp协议的应用层传输协议。简单来说就是客户端和服务端之间进行数据传输的一种规则。
http是应用层上的协议。建立连接:三次握手,断开:四次挥手.建立连接之后,客户端于服务端之间请求和接受,响应都是通过socket接口来调用tcp协议实现。
端口到端口的通信。
http:是一种无状态协议,http协议本身不会对发送的请求和响应进行任何处理。http协议能够处理大量的事务,提高效率。http本身无状态,存在会话保持和缓存的问题。
http1.0是没有会话保持这个功能,http1.1,长连接加入到了http协议当中。
缓存:cookie记录用户状态,跟踪统计用户访问该网站的习惯,识别用户身份,保存客户信息。可以驻留在我们的计算机上。是一个很小的文件。保存特定的客户端和网站之间的信息数据。
时效性:30天保存的信息就会失效。
客户端的ip地址验证:安全验证。
客户端-服务端通信过程
请求…-响应的模型。
建立连接:tcp/ip协议与服务器建立连接(三次握手),客户端向服务器的80端口发送连接请求。
发送请求:一旦连接建立之后,客户端向服务端发送http请求。http请求:由一个请求行和多个头部字段组成。请求方式:get post
服务端处理请求:根据请求的方式和内容进行处理。服务端会读取请求头的字段,解析参数,处理数据等等。
服务端返回响应:形成一个http响应,响应由一个响应行,包含多个字段。响应内容包含重要的内容状态码,用于表示服务端对于请求的处理结果。
1xx 信息提示
100-101无实际作用。
2xx 成功 请求处理结果成功
200
3xx 重定向
304表示请求的是缓存。
4xx 客户端错误
403 404 请求的页面不存在或者没有权限访问。
403:请求的页面禁止访问
404:服务器无法请求的页面。
5xx:服务端错误
500内部服务器错误。500检查防火墙,检查进程也就是服务状态,检查端口。检查配置
文件。
502无效网关
503请求的服务器不可用,可能下线了。
504网关请求超时。
200 ok请求成功
301 永久重定向
302 临时重定向
304 访问的是本地缓存
403 Forbidden 禁止客户端访问该页面
404 NOTFOUND服务器无法找到被请求的页面
500 inetnal server error 内部服务器错误。
502 BAD geteway 网关失效。(服务端的网关失效)
503 server Unavailable 服务器不可用(网站维护。)
504 GATEWAY timeout网关请求超时(服务端处于维护或者路由器故障)
传输数据:一旦服务器生成了http响应,会通过之前建立的连接将响应返回给客户端。响应当中包含了请求的资源(网页内容)以及其他的需要传输的数据(一般是自定义)
关闭连接:响应发送完成,服务端就会进入连接关闭,http1.1 time_wait。双方还在建立连接,双方之间不再有数据传输。一旦有新的请求,连接可以继续使用。160秒会话保持或者长连接。
http1.1会一次性获取页面的全部资源,然后发起四次挥手。只是不再传输数据。连接并没有断开。
客户端解析和现实响应:客户端收到http响应之后,解析响应内容,包括页面解析,显示图片,播放视频。主要靠的就是浏览器。
客户端也可以继续发送请求,或者打开新的连接,请求其他资源。
get
get向服务器发起请求的数据,依照http协议来进行,get就是请求。
请求行:
请求体:
Accept:客户端可以接受的数据类型
Accept-Encoding:客户端可以接受的编码格式。以及数据是否需要压缩。
Accept-Language:客户端可以接受的语言类型
Cache-Control:数据在本地缓存的时间
Connection:连接的处理方式,一般都是会话保持。
Host:表示请求的ip和端口号,也可以请求的主机名。
User-Agent:客户端请求使用的浏览器信息。
post
post向服务端发送数据,按照http协议进行,服务器添加数据,post的请求方式会修改服务器上的数据。
get和post的区别:
get的请求可以缓存
get的请求还可以保存在浏览器的cookie中
get的请求长度有限制
get 就是获取数据
postpost的请求不能被缓存,
也不会保存在浏览器的cookie中
post请求没有长度限制。
请求的字符串不会显示,比较安全。
telnet可以测试服务器的指定端口是否正常。telnet 192.168.233.20 80
高性能,轻量级的web服务软件
高性能:对http并发连接的处理能很高,单台物理服务器可支持30000-50000个并发请求。(在实际操作中,为了维持服务器的稳定,一般设置在20000个左右)
轻量级:nginx软件很小,安装所需的空间也很小工
稳定性:强对系统资源消耗低
nginx的主要功能:
1、处理静态网页:html htm图像
2、支持反向代理(负载均衡)。负载均衡靠算法实现。
3、处理动态内容
4、虚拟主机:nginx配置多个虚拟主机,每一个虚拟主机都可以作为一个域名和站点。每个虚拟主机都可以拥有独立的配置和资源。
5、URL重定向:可以对URL的请求进行修改和重定向。
6、缓存机制,可以缓存静态文件和动态内容。
7 日志记录:服务日志,访问日志和报错日志。控制日志还是在/var/log/messages中。
8、代理服务器,通过代理可以访问其他的后端服务器。
安装:
./configure -prefix=/usr/local/nginx\#指定安装目录
--user=nginx\指定运行用户
--group=nginx\指定运行组
-with-http_ssl_module\#开启对http的ssl加密支持
---with-http_v2_module\#支持http2.0协议
--with-http_realip_module\允许nginx获取客户端的真实ip
--with-http_stub_status_module\启动了stud_status模块,获取nginx的访问和状态信息的方法
--with-http_gzip_static_module\支持压缩文件内容图片
-with-pcre\ 动态库
--with-stream \开启tcp/udp代理模块支持 支持四层转发
--with-stream_ssl_module\支持四层转发的ssl加密
--with-stream_realip_module nginx可以从四层转发的头部信息中获取客户端的真实ip.
conf:保存nginx的所有配置文件,其中nginx.conf是nginx的主配置文件。
html:保存nginx的web文件,.html结尾的文件,图片。
50x是nginx默认的报错提示页面
logs:保存日志的目录,路径可以改。
access.log记录的是访问日志记录
error.log 记录报错日志,403.400 500
sbin:nginx的二进制的启动脚本
nginx-t:检测nginx配置文件以及配置文件语法是否正确。
nginx-v:只查看版本
nginx-V:查看版本和nginx支持的配置模块
nginx -s stop restart reload给nginx主程序发送信号,不能开启nginx服务。
http块:配置代理缓存日志虚拟主机和第三方模块
server:配置虚拟主机的设备。在http的模块中可以有多个server。
location块:location模块只能配置在server模块当中,匹配uri.一个server模块当中可以有多个location.
www.baidu.com/test4
proxy:代理功能,核心功能模块之一,配置反向的功能
proxy_pass 指定
定义在location当中。
headers功能模块:处理请求和头部的响应信息。获取客户端的真实ip
upstream模块:
七层反向代理模块,只能配置在http模块中,或者stream模块中。
stream:
四层反向代理模块,只能写在配置当中。
root 指定访问页面的根目录是拼接
/var/www/html/test
Active connections: 2
server accepts handled requests
2 2 1
Reading: 0 Writing: 1 Waiting: 1
Active connections: 2表示当前活动连接数
server accepts 已经处理的连接处
handled 成功的tcp握手次数
requests 已经处理的请求数
Reading: 0服务端正在从客户端读取数据,正在读取客户端请求的连接数
Writing: 1服务器正在将响应数据发送给客户端
Waiting: 1表示有连接处于空闲状态,当前等待客户端请求的连接数。time_wait.
linux平台,操作系统是另外三个组件的运行平台
nnginx提供前端页面
mysql数据库开源关系型的数据库主要用来保存用户的账号信息。
php:开发动态页面的编程语言,解析动态页面,起到中间件的作用,即在nginx和数据库的中间沟通nginx和数据库,以请求数据库上的信息。
cmake\
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql\-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock\
设置它的进程的监听套接字文件,提供端口3306
-DSYSCONFDIR=/etc \
mysql配置文件的路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \
#进程文件
-DDEFAULT_CHARSET=utf8 \#
默认编码
-DDEFAULT_COLLATION=utf8_general_ci \
字符集的校验规则
-DWITH_EXTRA_CHARSETS=all\-DWITH_INNOBASE_STORAGE_ENGINE=1\
安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1\
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1\
-DMYSQL_DATADIR=/usr/local/mysql/data \
#数据库文件的存储路径
-DWITH BOOST=boost\
-DWITH_SYSTEMD=1
#可以直接生成用于systemctl的管理文件。
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock
服务端配置:默认端口
指定套接字的文件
[mysqld]
服务配置
user=mysql #指定运行用户
basedir=/usr/local/mysql #mysql的安装目录
datadir=/usr/local/mysql/data #数据文件的保存路径
port=3306#服务端口
3306character-set-server=utf8 默认字符编码 utf-8
pid-file=/usr/local/mysql/mysqld.pid #PID文件
socket=/usr/local/mysql/mysql.sock #套接字文件
bind-address=0.0.0.0#监听端口
skip-name-resolve #禁用DNS反向解析。提高性能
max_connections=2048最大连接数,同时可以连接数据的主机数,默认151.
default-storage-engine=INNODB #默认的存储引擎
max_allowed_packet=16M #数据库服务器可以接受的最大数据包,默认4MB、
server-id=1#MYSQL服务器的唯一ld,主从复制会用到。
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
数据库的运行的模版。
STRICT_TRANS_TABLES:如果以个值不能插入到一个事物表中,会中断操作。NO_AUTO_CREATE_USER:静止GRANT创建密码为空的用户
./configure \
--prefix=/usr/local/php \#指定安全目录
-with-mysql-sock=/usr/local/mysql/mysql.sock \#为了和数据库建立联系
--with-mysqli \启用mysqli的扩展应用,支持mysql的数据库类型
--with-zlib \#压缩和解压数据
--with-curl \支持URL操作,下载文件等等
--with-gd \GD库,处理图片
--with-jpeg-dir \
jpeg的图片库--with-png-dir\
png的图片库
--with-freetype-dir \
--with-openssl \
支持ssl加密HTTPS协议
--enable-fpm \
打开fpm模块,提高PHPj进程管理和请求处理的响应速度
--enable-mbstring \
--enable-xml \
支持处理XML格式的文档和数据
--enable-session \
开启会话保持功能
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip
PHP的三个配置文件:
php-fpm.conf #PHP的主配置文件(进程服务)
php.ini#PHP的主配置文件(对全局生效)
www.conf#PHP的扩展配置文件
fastcgi_pass 127.0.0.1:9000
fastcgi:只一种用于连接web服务器(nginx httpd)与应用程序之间的通信协议提供一种高效,可靠,灵活的方式处理动态页面的内容请求
web服务程序和动态应用程序之间进行交互
fastcgi_pass 127.0.0.1:9000设置FASTCGI的服务器的地址和端口。
也就是PHP的监听地址和端口
fastcgi_index index.php:指定请求目录时默认访问的文件名
.php就是动态页面的结尾.jsp动态页面。.html