WWW服务基础 以及Nginx服务初步介绍:
MIME 类型(MIME type)
URL,全称Uniform Resource Location,中文翻译为统一资源定位符,也被称为网页地址(网址)
URI,全称Uniform Resource Identifier,中文翻译为统一资源标识符,是一个用于标识某一互联网资源名称的字符串
静态网页资源
1)什么是静态网页资源?
放在服务器上看到的是什么,显示的就是什么、一旦存在于服务器上,就不会有任何改变。
静态内容特点:
1、图片、附件、视频,前端页面语言.html,.js,.css,等。
2、客户端解析(效率更高),而不是在服务端解析。 #性能优化关键
饭店:采购----炒菜/做饭----端上来---吃到。
饭店做,而不是客户做,叫做服务端解析。
自助、火锅店更倾向于客户端解析、碗筷分类扔到指定地点
快餐
3、后端没有数据库。
4、地址里没有特殊符号,例如&&、?等。
5、网页发布一旦完成,就不会改变(除非人工修改)。
6、存储地点,存储于NFS这样的服务里(共享存储)。
7、内容来源(核心:用户上传:图片和视频等;程序员开发的代码(.html,.js,.css))
动态内容:
1、文件结尾.php,.jsp,.asp,.do
2、服务端解析。米饭菜现做。性能低。尽量转成静态内容,效率提高10倍。
3、后端有数据库,内容来自于数据库。
4、地址里有特殊符号,例如 && ?等。
5、磁盘存在动态程序文件,内容没有实体文件。
6、存储地点,存储于MySQL,mongodb这样数据库里。
高并发的网站三个都重要:
性能考虑
维护考虑
功能考虑
伪静态内容:
动态的内容伪装成静态。
目的:
1、便于搜索引擎收录(乐于收录静态内容)。 SEO
欺骗搜索引擎
2、提升用户体验
性能?
理论性能比动态还差,并发不是很大,下降不明显。
利用rewrite技术将动态网页伪装成静态网页(URL地址改写)。
首要静态---其次是动态。
伪静态:SEO人员关注。
转码--审核----
1)凡是发布后不需要再改的网站业务,都可以直接静态化(1台顶10台动态)。
或者需要改也行,但是由公司内部人员也可以直接静态。
优酷,有用户上传(转码和审核的过程),自动给用户信念,发上来别着急看。
2)简书,由用户上传、修改(内容),然后对访问的实时要求高。
1、让发布人能够实时看到,直接访问动态(查数据库和存储)。
2、让其他人浏览找静态
网站访问量:
IP(Internet Protocol):一个带有公网IP的电脑访问
IP(独立IP)即Internet Protocol,这里指独立IP数,独立IP数是指不同IP地址的计算机访问网站时被计算的总次数。独立IP数是衡量网站流量的一个重要指标。一般一天内(00:00-24:00)相同IP地址的客户端访问网站页面只被计算为一次,记录独立IP的时间可为一天或一个月,目前通用的标准为“一天”。
网站独立IP数100万。推测至少100万人
100万台具有公网IP的电脑。
不精准:网站独立IP 100万 100万人 200万人 1000万人
粗略的流量统计。
IP(Internet Protocol):一个带有公网IP的电脑访问
一个带有公网IP:代表多少电脑?
1个IP
PV(Page view) 就是一个页面浏览。
5000万PV,百度PV 千亿PV。
UV(Unique Visitor)
UV(独立访客)即Unique Visitor,同一台客户端(PC或移动端)访问网站被计算为一个访客。一天(00:00-24:00)内相同的客户端访问同一个网站只计算一次UV。UV一般是以客户端Cookie等技术作为统计依据的,实际统计会有误差。
考虑到一台客户端电脑可能会有多人使用的情况,因此,UV(独立访客)实际上并不一定是独立的自然人访问。
网站流量统计工具软件
PWIKI awstats ELK收集日志。
在线统计流量工具。
每秒网站可以最大处理的连接数,叫做并发连接数。
必会面试题:
1) 请描述DNS系统解析原理?
2) 请描述HTTP协议的工作原理?
3)用户访问网站流程。
4) 请问你的公司的网站访问量是多少(PV、IP、并发)?
5) 请说出http状态码200、301、403、404、500、502、504代表的意义?
6)静态、动态、伪静态
Web服务软件:
1、静态软件:Nginx(Tengine)、Apache、Lighttpd
2、动态软件:php程序(Php引擎)、JAVA程序(tomcat/resin/jboss/weblogic)、
python程序(Python)
老男孩Web环境讲啥:
Nginx、 PHP、TOMCAT(tomcat)
自学PYTHON环境
Nginx (“engine x”) 是一个开源的、支持高性能、高并发的WWW服务和代理服务软件。它是由俄罗斯人Igor Sysoev开发的,最初被应用在俄罗斯的大型网站www.rambler.ru上。后来作者将源代码以类BSD许可证的形式开源出来供全球使用。
3大主要功能
1)网页服务:web服务
apache,lighttp
2)负载均衡 反向代理
haproxy,lvs
3)缓存服务器
squid,varnish
特点:静态小文件高并发,占用资源少。软件本身小。
企业面试时需要解答如下Nginx HTTP服务器的特色及优点:
1)支持高并发:能支持几万并发连接(特别是静态小文件业务环境)。
2)资源消耗少:在3万并发连接下,开启10个Nginx线程消耗不到200MB内存。
3)可以做HTTP反向代理及加速缓存,
即负载均衡功能,内置对RS节点服务器健康检查功能,这相当于专业的haproxy软件或lvs的功能。
具备squid等专业缓存软件等的缓存功能。
Nginx作为Web服务器的主要应用场景:
1)使用Nginx运行HTML、JS、CSS、小图片等静态数据(此功能类似lighttpd软件)。
2)Nginx结合FastCGI运行PHP等动态程序(例如使用fastcgi_pass方式)。
3)Nginx结合tomcat/resin等支持Java动态程序(常用proxy_pass方式)。
正向代理:由内向外。 代替 效率低
代替局域网内PC,请求外部应用服务。
反向代理:由外向内 代替 效率低
代替外部的用户 请求内部的应用服务器。
负载均衡:转发。甩手掌柜。效率高
为什么Nginx总体性能比Apache高?
Nginx使用最新的epoll(Linux2.6内核)和kqueue(freebsd)异步网络I/O模型,而Apache则使用的是传统的select模型。目前Linux下能够承受高并发访问的Squid、Memcached软件都采用的是epoll模型。
Apache则使用的是传统的select模型
Nginx使用最新的epoll模型
互联网 就用nginx
linux系统安装软件方法:
1)yum install nginx -y(rpm包,自动解决所有依赖软件)
简单,没法定制。
2)rpm -ivh rpm包(自己解决所有依赖软件)
简单,没法定制,没法自动解决所有依赖软件
3)编译安装(c语言)
可以定制,编译过程复杂,时间长。
./configure 配置
make 编译
make install 安装
4)利用源码制作符合企业需求的rpm软件包,放到yum仓库里,最后yum安装。
简单,可以随意定制。
rpm包定制
http://blog.oldboyedu.com/autodeploy-rpm/
yum仓库搭建
http://blog.oldboyedu.com/autodeploy-yum/
mkdir /home/oldboy/tools
cd /home/oldboy/tools
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar xf nginx-1.14.0.tar.gz
cd nginx-1.14.0
====================================
useradd -s /sbin/nologin www -M
yum install pcre pcre-devel -y
yum install openssl openssl-devel -y
====================================
./configure --user=www --group=www --prefix=/application/nginx-1.14.0/ --with-http_stub_status_module --with-http_ssl_module --with-pcre
make
make install
ln -s /application/nginx-1.14.0/ /application/nginx
echo $? 返回0代表步骤正确。
验证:
[root@web01 nginx-1.14.0]# ls /application/nginx/
conf html logs sbin
[root@web01 nginx-1.14.0]# /application/nginx/sbin/nginx
[root@web01 nginx-1.14.0]# lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 8898 root 6u IPv4 23954 0t0 TCP *:http (LISTEN)
nginx 8899 www 6u IPv4 23954 0t0 TCP *:http (LISTEN)
[root@web01 nginx-1.14.0]# wget 10.0.0.7
--2018-06-22 12:36:30-- http://10.0.0.7/
Connecting to 10.0.0.7:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 612 [text/html]
Saving to: “index.html”
OVER.
--prefix=PATH 路径
--user=USER 用户
--group=GROUP 组
--with-pcre 伪静态
--with-http_stub_status_module 状态
--with-http_ssl_module 加密 443