如何部署web服务如何部署web服务器

如何部署web服务如何部署web服务器,第1张

Web服务部署

将发布的服务部署到IIS

公布的文件如下:

打开计算机管理器并选择IIS管理器。

在IIS服务中添加一个网站,选择一个网站,右键添加一个网站。

输入网站的名称、IP地址(本机器不需要IP地址)和端口,选择文件的路径,然后单击确定创建网站。

如果出现以下错误:

这个错误的原因是网站的默认文档没有配置。

解决方法是选择网站,点击默认文档,然后添加一个默认页面,也就是应用的起始页。

添加的服务文件

是否发布文件名。

开始服务测试,浏览

Web服务功能可以在网页上进行测试和验证。

Webservice可用于分布式应用程序之间以及不同程序之间的交互。

如果一个方法需要通过webservice的地址来调用,就必须用WebMethod

net程序部署方式?

打包和部署应用程序会随部署要求的不同而有所不同。请注意,这些部署方案只是用于特定类型应用程序的建议方案。您的部署需求可能要求使用其他方法。以下是几个典型的部署方案:

1部署ASPNET应用程序。

打包:应用程序和DLL

分发:XCOPY或FTP分发

可以使用XCOPY或FTP将ASPNET应用程序部署到服务器上。然后,可以将两个版本的应用程序并行运行,也可以在不关闭应用程序的情况下对应用程序进行更新。公共语言运行库使一个应用程序与其他应用程序同时运行变得更加容易,并且不会造成DLL冲突。

2部署“Windows窗体”应用程序。

打包:MicrosoftWindowsInstaller包(msi)

分发:WindowsInstaller

使用WindowsInstaller分发“Windows窗体”应用程序允许您同时利用安装程序和Windows2000应用程序管理。还可以公布应用程序的可用性,发布应用程序,使用“控制面板”中的“添加或删除程序”选项安装或移除应用程序,以及在必要时方便地修复应用程序。

3通过下载部署“Windows窗体”控件或其他代码。

打包:压缩的CAB文件(cab)或编译的库(dll)

分发:代码下载

分发“Windows窗体”控件可以像使应用程序可供在Web宿主上下载一样简单。可以压缩组成应用程序的文件来加快下载速度。

如何部署pythonweb程序?

PythonWeb程序的部署方案

综合而言,高性能的Pythonweb站点部署方式首推nginx+uwsgi

apache+mod_wsgi是简单稳定但性能一般的方式

API服务器可以直接使用tornado或者gevent

mod_python

非常原始的cgi模式部署python已经没有什么好介绍了。对于不太追求性能的管理系统和网站来说,使用Apache部署是一个不错的选择。较早的时候,使用mode_python部署python的web应用十分流行,在Django096的时候官方文档甚至推荐这种方式。

它将Python解释器嵌入到Apacheserver,以提供一个访问Apacheserver内部的接口。mod_python在现在看来性能是不佳的,每一个http请求mod_python都会由一个进程初始化python解释器、载入代码、执行、然后销毁进程。

mod_wsgi

如果非要用Apache来部署python应用,mod_wsgi是一个更好的选择。WSGI全称是WebServerGatewayInterface,由PEP-333定义。基本上所有的pythonweb框架都实现了wsgi接口,用mod_wsgi能部署任何实现了wsgi的框架。实际上,不需要任何框架也可以用mod_wsgi部署python程序。使用mod_wsgi的daemon模式,python程序会常驻内存,不会有很大的初始化和销毁进程方面的开销,所以性能是好于mod_python的。综合来说,使用Apache部署pythonweb程序,推荐使用mod_wsgi的daemon模式。

Fastcgi

先说观点:不建议用fastcgi的方式部署Pythonweb。

前几年由于lighttpd风头正劲和豆瓣的成功案例,fastcgi是一种很流行的部署方式。fastcgi与具体语言无关,也与web服务器无关。是一种通用的部署方式。fastcgi是对于cgi的增强,CGI程序运行在独立的进程中,并对每个Web请求建立一个进程。面对大量请求,进程的大量建立和消亡使操作系统性能大大下降。

与为每个请求创建一个新的进程不同,FastCGI使用持续的进程来处理一连串的请求。这些进程由FastCGI服务器管理,而不是web服务器。当进来一个请求时,web服务器把环境变量和这个页面请求通过一个socket比如FastCGI进程与web服务器都位于本地)或者一个TCPconnection(FastCGI进程在远端的serverfarm)传递给FastCGI进程。

主流的web服务器,Apache,lighttpd,nginx都支持fastcgi,在几年前,lighttpd的mod_fcgi模块性能强劲,lighttpd+fastcgi十分流行。无论是python,ruby还是php,都有大量的站点使用这种方式部署。由于nginx的崛起,现在很少有人使用lighttpd了。

fastcgi并不是专门为python设计,并不是所有的python框架天然的支持fastcgi,通常需要flup这样的容器来配适。flup由python编写,和专门的c实现的wsgi容器比起来性能显得相当不堪。fastcgi的稳定性对于新兴的wsgi容器来说也有差距。无论从哪个方面来看,部署pythonweb程序,fastcgi都已经是过去式。

uwsgi

前几年nginx还未内置uwsgi模块的时候,部署uwsgi还是一件挺麻烦的事情。随着能够在nginx中直接使用uwsgi模块,uwsgi已经是最可靠,最方便的高性能pythonweb程序的部署方式了。

在1U的四核XEON服务器上,一个简单的wsgihandler甚至能用AB压到8000以上的qps,这已经是完爆tornado,接近gevent的性能了。同时,uwsgi的稳定性极好。之前我们有个每天500w-1000w动态请求的站点使用uwsgi部署非常稳定,在一个渣HP1U服务器上,基本不用管它。

上面提到的部署方式都是相对于web网站的方式,在移动互联网的时代,我们需要的是高性能的API服务,上面这些都是过时的东西。

tornado

tornado号称高性能,如果拿他写网站,其实一般般,只不过跟uwsgi加一些简单框架差不多而已。它真正的作用,是用来写API服务器和长连接的服务器。

由于tornado能够直接处理http请求,很多人直接拿他来裸奔直接提供服务。这种方式是不可取的,单线程的tornado只能利用cpu的一个核心,并且一旦阻塞直接就废了。通常情况下,由supervisor启动多个tornado进程,通过nginx进行反向代理负载均衡。nginx114以后的版本反向代理支持长连接,配合tornado的comet效果很好。

tornado还有一些比较奇葩的用法,比如用来做wsgi容器之类的。

gevent

gevent是一个神器,能做的事情很多。在web方面,处理http请求,用起来其实跟tornado差不多,但是要简陋很多,cookie之类的都没有。用gevent写的一些API服务,部署方式还是类似tornado,用supervisor管理多个守护进程,通过nginx做负载均衡。同样的它的奇葩用法也和tornado一样,可以当wsgi容器用。

Weblogic10如何部署一个web应用?

进入weblogic控制台,选择Deployments->WebApplicationModules->DeployaWebApplicationModule然后选择你的web应用即可。可部署多个Web应用

新手自学linux,需要制定详细的学习路线和学习内容,可以按照以下思路学习:

第一阶段:linux基础入门Linux基础入门主要包括:Linux硬件基础、Linux发展历史、Linux系统安装、xshell连接、xshell优化、SSH远程连接故障问题排查、Linux基础优化、Linux目录结构知识、Linux文件属性、Linux通配符、正则表达式、Linux系统权限等。

第二阶段:linux系统管理进阶linux系统管理进阶包括:Linux定时任务、Linux用户管理、Linux磁盘与文件系统、Linux三剑客之sed命令等。

第三阶段:LinuxShell基础LinuxShell基础包括:Shell编程基础、Linux三剑客之awk命令等。

第四阶段:Linux网络基础。

第五阶段:Linux网络服务Linux网络服务包括:集群实战架构开始及环境准备、rsync数据同步服务、Linux全网备份项目、nfs网络存储服务精讲、inotify/sersync实时数据同步/nfs存储实时备份项目等。

第六阶段:Linux重要网络服务Linux重要网络服务包括:http协议/www服务基础、nginxweb介绍及基础实践、nginxweb、lnmp环境部署/数据库异机迁移/共享数据异机迁移到NFS系统、nginx负载均衡、keepalived高可用等。

第七阶段:Ansible自动化运维与Zabbix监控,Ansible自动化运维与Zabbix监控包括:SSH服务秘钥认证、ansible批量自动化管理集群、zabbix监控等。

第九阶段:大规模集群高可用服务(Lvs、Keepalived)

第十阶段:JavaTomcat服务及防火墙Iptables

第十一阶段:MySQLDBA高级应用实践MySQLDBA高级应用实践包括:MySQL数据库入门基础命令、MySQL数据库进阶备份恢复、MySQL数据库深入事务引擎、MySQL数据库优化SQL语句优化、MySQL数据库集群主从复制/读写分离、MySQL数据库高可用/mha/keepalved等。

第十二阶段:高性能数据库Redis和Memcached课程。

第十三阶段:Linux大规模集群架构构建(200台)。

第十四阶段:LinuxShell编程企业案例实战。

第十五阶段:企业级代码发布上线方案(SVN和Git)。

第十六阶段企业级Kvm虚拟化与OpenStack云计算。

第十七阶段公有云阿里云8大组件构建集群实战。

第十八阶段:Docker技术企业应用实践。

第十九阶段:Python自动化入门及进阶。

第二十阶段:职业规划与高薪就业指导。

Linux学习周期因人而异,如果您有比较好的学习规划,每天坚持学习4至5个小时,坚持3至6个月,应该可以熟练掌握Linux基本操作,但是,如果只有计划,没有实施,那就另当别论了,如果想更深入、更节省时间的学习Linux操作系统,建议报班学习,效果会更加明显!

自学方法很多,看你有没有C语言和操作系统的基础了。现在网上的资料非常多,各种培训视频教程应有尽有。

1、linux入门难度也不容易,关键看你的基础了,如果你C语言很厉害,把单片机要的很溜,有操作系统的概念和基础,比如你以前玩过ucosii或者ucosiii,那你自学linux就容易的多,自己买个开发板,找一些linux视频教程,自己动手做,就容易入门,几个月就能很好掌握linux。

2、如果你单片机嵌入式方面的小白,那你一来就学linux,难度非常大,就算你看视频教程,也很难学会,linux属于操作系统,属于软件,需要把它下载硬件系统中,比如ARM芯片。其实ARM难度肯定比单片机难多了,不容易掌握。

3、自学linux,得看你的基础吧,基础好,自学起来就容易。如果你是小白,就不要开始学linux了,太难了,会打击的自信。学学单片机这类入门低的。

以我过来人的经验,没有任何所谓的捷径可以走,也没有什么7天速成之类的,那些基本上就是吸引眼球,实质上就是教你怎么样快速搭建一些软件等等。

学习linux其实说简单也不简单,说难也不难,主要可以从以下几个方面入手。

一、选定一本书或是一个视频教程,这方面的电子书和教程非常好找,网上一搜一大堆,视频可以在头条或是B站都有。

二、制定相应的学习计划,计划的每一天都要有实际的东西,不能是大而空的目标,比如计划应该是学会使用ls,mkdir指令,而不是学习指令,大而空的目标往往会让人觉得没有正向反馈,最后也就不了了之。

三、严格按照你设定的计划执行,每天学习后要有一定的回顾和实操,这样不但能加深你的印象,也更容易学的进去。

四、学完之后记得使用,不能是为了学而学,一定要应用于日常工作中去,才能得到更好的提升。

总之,学习linux没有任何捷径可以走,只有一个途径,用,一直用,自然而然就水到渠成。

LIiux自学入门其实并不是很难,我之前学习的时候大概整理了几类的资源,正好分享给大家:

第一:业内公认的Linux优质教程

Linux教程|菜鸟教程

菜鸟教程提供了大量的在线实例,通过实例可以更好的入门以及学习LuⅨ,所有的资源是安全免费的

Linux教程w3cschool

在这个教程站上你可以找到你所需要的所有的网站建设教程。从基础的HTML到CSS,乃至进阶的XML,SQL,JS,PHP和ASPNET;

Linux命令大全(手册)真正好用的Linux命令在线查询网站

第二:专业的linux技术书籍

鸟哥的Linux私房菜:基础学习篇·Linux多线程服务端编程:使用muduoC++网铬库·深入Liux内核架构:全球开源社区集体智慧结晶,领略Linux内核的绝美风光

第三:Linux技术工具

·Docker

Docker在一定程度上是LXC的增强版,早期的Dockerf使用LXC作为容器引擎9,目前dockert使用的容器引擎为runC,其是容器运行时标准的实现之一;

Kubernetes

Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成Kubernetes内部使用的低级别组件。Kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术;

Zabbix

监控利器,监控所有你要监控的指标。

Nginx

Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务

Istio

连接、安全加固、控制和观察服务的开放平台。开放平台就是指它本身是开源的,服务对应的

是微服务,也可以粗略地理解为单个应用;

Jenkins

Jenkins是开源CICD软件领导者,提供超过1000个插件来支持构建、部署、自动化,满足任何

项目的需要;

Apche

Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的web服务器软件之一。

Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用;

第四:Linux进阶必备的技术点

掌握Iptables防火墙体系,实现防火墙实现数据包过滤和转发;掌握用户权限安全控制Sudo体系与配置;掌握DNS服务的原理、部署、安装和企业级应用;实现文件共享服务NFS、Vsftpd、Samba配置和应用;实现Jumpserver堡垒机安装、配置、使用和运维体系融合;brctl命令创建管理虚拟网桥;IpNetns创建管理虚拟路由;常见的网络客户端°工具Ping/Lftp/Ftp/Lftpget/Wget;利用Rsync和Inotify实现多台机器数据分发和配置同步;Jumpserver跳板机基本功能应用,认证、授权、审计;https概念及对应的模块mod_ssl应用配置;运维必备Web服务开源解决方案Nginx,全面讲解Nginx程序架构;Nginx内部框架、模块功能、事务处理机制、安装方法、CPU亲缘优化、配置文件;SQL语句增删改查、常用命令使用、用户授权、字符集修改、表、索引、库管理等;对比介绍图形化管理软件,如PhpMyAdmin、SQLyog、Navicat等Keepalived工作方式,Keepalived核心组件、报警机制、切换机制、心跳信息传输等;Centos7上实现LVS集群配置、服务管理、调度算法修改;全面熟悉Ansible用法、以及安装方法、配置文件详解、模块说明、基于私钥认证、批量操作等;Redis扩展方式对比介绍,RedisCluster的基础应用;VmwareEsxi创建Linux及Windows虚拟机,并实现虚拟机跨宿主机迁移;Docker镜像、仓库管理、启动方法、数据卷使用、备份恢复,网络模型、容器间依赖关系、容器资源限制、Docker的监控;

待续

Nginx是一个高性能的Web和反向代理服务器,它具有有很多非常优越的特性:

作为Web服务器:相比Apache,Nginx使用更少的资源,支持更多的并发连接,体现更高的效率,这点使Nginx尤其受到虚拟主机提供商的欢迎。能够支持高达50,000个并发连接数的响应,感谢Nginx 为我们选择了epoll and kqueue作为开发模型

作为负载均衡服务器:Nginx既可以在内部直接支持Rails和PHP,也可以支持作为HTTP代理服务器对外进行服务。Nginx用C编写, 不论是系统资源开销还是CPU使用效率都比Perlbal要好的多。

作为邮件代理服务器:Nginx同时也是一个非常优秀的邮件代理服务器,Lastfm描述了成功并且美妙的使用经验。

Nginx安装非常的简单,配置文件非常简洁,Bugs非常少的服务器:Nginx启动特别容易,并且几乎可以做到724不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下进行软件版本的升级。

Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在上篇文章中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细。

Nginx代理服务的配置说明

1、上一篇中我们在http模块中有下面的配置,当代理遇到状态码为404时,我们把404页面导向百度。

然而这个配置,细心的朋友可以发现他并没有起作用。

如果我们想让他起作用,我们必须配合着下面的配置一起使用

2、如果我们的代理只允许接受get,post请求方法的一种

3、设置支持的http协议版本

4、如果你的nginx服务器给2台web服务器做代理,负载均衡算法采用轮询,那么当你的一台机器web程序iis关闭,也就是说web不能访问,那么nginx服务器分发请求还是会给这台不能访问的web服务器,如果这里的响应连接时间过长,就会导致客户端的页面一直在等待响应,对用户来说体验就打打折扣,这里我们怎么避免这样的情况发生呢。这里我配张图来说明下问题。

如果负载均衡中其中web2发生这样的情况,nginx首先会去web1请求,但是nginx在配置不当的情况下会继续分发请求道web2,然后等待web2响应,直到我们的响应时间超时,才会把请求重新分发给web1,这里的响应时间如果过长,用户等待的时间就会越长。

5、如果使用upstream指令配置啦一组服务器作为被代理服务器,服务器中的访问算法遵循配置的负载均衡规则,同时可以使用该指令配置在发生哪些异常情况时,将请求顺次交由下一组服务器处理。

6、如果你想通过http获取客户的真是ip而不是获取代理服务器的ip地址,那么要做如下的设置。

关于X-Forwarded-For与X-Real-IP的一些相关文章我推荐一位博友的: HTTP 请求头中的 X-Forwarded-For ,这位博友对http协议有一系列的文章阐述,推荐大家去关注下。

7、下面是我的一个关于代理配置的配置文件部分,仅供参考。

上一篇中我说啦nginx有哪些中负载均衡算法。这一结我就给如果操作配置的给大家做详细说明下。

首先给大家说下upstream这个配置的,这个配置是写一组被代理的服务器地址,然后配置负载均衡的算法。这里的被代理服务器地址有2中写法。

然后,就来点实战的东西。

1、热备:如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务。服务器处理请求的顺序:AAAAAA突然A挂啦,BBBBBBBBBBBBBB

upstream mysvr { server 127001:7878; server 19216810121:3333 backup; #热备 }

2、轮询:nginx默认就是轮询其权重都默认为1,服务器处理请求的顺序:ABABABABAB

upstream mysvr { server 127001:7878; server 19216810121:3333; }

3、加权轮询:跟据配置的权重的大小而分发给不同服务器不同数量的请求。如果不设置,则默认为1。下面服务器的请求顺序为:ABBABBABBABBABB

upstream mysvr { server 127001:7878 weight=1; server 19216810121:3333 weight=2;}

4、ip_hash:nginx会让相同的客户端ip请求相同的服务器。

upstream mysvr { server 127001:7878; server 19216810121:3333; ip_hash; }

5、如果你对上面4种均衡算法不是很理解,那么麻烦您去看下我上一篇配的,可能会更加容易理解点。

到这里你是不是感觉nginx的负载均衡配置特别简单与强大,那么还没完,咱们继续哈,这里扯下蛋。

关于nginx负载均衡配置的几个状态参数讲解。

down,表示当前的server暂时不参与负载均衡。

backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻 。

max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。

fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。

到这里应该可以说nginx的内置负载均衡算法已经没有货啦。如果你像跟多更深入的了解nginx的负载均衡算法,nginx官方提供一些插件大家可以了解下。

Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,我们可以把我们应用发布到 Nginx上,提供IP地址给外部访问。

① 进入容器:

② 切换到容器的配置文件目录

③ 查看配置文件

或者安装并通过vim打开

在默认配置下,网页文件位于/usr/share/nginx/html 目录下,我们只需将编译后的flutter web文件放在该目录下可以。

Nginx("engine x") 是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用 nginx 网站用户有:百度、京东、新浪、网易、腾讯、 淘宝等。

11 WEB 服务器

Nginx 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言,比如 perl、php

等。但是不支持 java。Java 程序只能通过与 tomcat 配合完成。Nginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 ,能经受高负载的考验,有报告表明能支持高达 50000个并发连接数。

12 反向代理

1正向代理,代理客户端,客户端需要配置代理

2反向代理,代理服务端,客户端无感知

13 负载均衡

Nginx 的异步框架可以处理很大的并发请求,把这些并发请求 hold 住之后就可以分发给后台服务端(backend servers,也叫做服务池, 后面简称 backend)来做复杂的计算、处理和响应,这种模式的好处是相当多的:隐藏业务主机更安全,节约了公网 IP 地址,并且在业务量增加的时候可以方便地扩容后台服务器。

这时候集群的概念产生了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服器,也就是我们所说的负载均衡。

14 动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。

Nginx官网

21 相关安装包

pcre-837targz openssl-101ttargz zlib-128targz nginx-1111targz

22 安装流程

211安装 pcre 解压缩 pcre-xxtargz 包

进入解压缩目录,执行/configure

如果提示,需要提前安装 gcc++,进入安装光盘目录的软件包(/media/CentOSXX/Package)执行

rpm -ivh libstdc+ devel-447-17el6x86_64rpm

rpm -ivh gcc-c+ 447-17el6x86_64rpm

/configure 完成后,回到 pcre 目录下执行 make,再执行 make install

222安装 openssl

解压缩 openssl-xxtargz 包。

进入解压缩目录,执行/config

make && make install

223安装 zlib 解压缩 zlib-xxtargz 包。

进入解压缩目录,执行/configure。

make && make install

224安装 nginx

解压缩 nginx-xxtargz 包。

进入解压缩目录,执行/configure。

make && make install

查看开放的端口号

firewall-cmd --list-all

设置开放的端口号

firewall-cmd --add-service=http –permanent

sudo firewall-cmd --add-port=80/tcp --permanent

重启防火墙

firewall-cmd –reload

23 Nginx 启动

命令

启动命令:在/usr/local/nginx/sbin 目录下执行 /nginx

关闭命令: 在/usr/local/nginx/sbin 目录下执行 /nginx -s stop

重新加载命令: 在/usr/local/nginx/sbin 目录下执行 /nginx -s reload·

设置 nginx 为自启动服务

修改 linux 启动脚本/etc/rcd/rc

加入 :/usr/local/nginx/sbin/nginx

nginx 安装目录下,其默认的配置文件都放在conf 目录下,而主配置文件nginxconf 也在其中,后续对 nginx 的使用基本上都是对此配置文件进行相应的修改。

根据上述文件,我们可以很明显的将 nginxconf 配置文件分为三部分

第一部分:全局块

从配置文件开始到 events 块之间的内容,主要会设置一些影响 nginx 服务器整体运行的配置指令,主要包括配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。

比如上面第一行配置的:worker_processes 1;

这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的制约。

第二部分:events 块

events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。

上述例子就表示每个 work process 支持的最大连接数为 1024

这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。

第三部分:http 块

这算是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。

需要注意的是:http 块也可以包括 http 全局块、server 块。

http 全局块

http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。

server 块

这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。

每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。

而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。

全局 server 块

最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或 IP 配置。

location 块

一个 server 块可以配置多个 location 块。

这块的主要作用是基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。

案例配置如下:

location 指令说明

该指令用于匹配 URL,语法如下:

= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配

成功,就停止继续向下搜索并立即处理该请求。

~:用于表示 uri 包含正则表达式,并且区分大小写。

~:用于表示 uri 包含正则表达式,并且不区分大小写。

^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字

符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location

块中的正则 uri 和请求字符串做匹配。

注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~ 标识。

案例配置如下:

在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服务,而且 Nginx 提供了几种分配方式(策略):

轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

weight

weight 代表权重,默认为 1,权重越高被分配的客户端越多指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。

ip_hash

每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。

fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

动静分离从目前实现角度来讲大致分为两种:

1一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;

2另外一种方法就是动态跟静态文件混合在一起发布,通过 nginx 来分开。

通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体 Expires 定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用 Expires 来缓存),我这里设置 3d,表示在这 3 天之内访问这个 URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码304,如果有修改,则直接从服务器重新下载,返回状态码 200。

master-workers 的机制的好处

首先,对于每个 worker 进程来说,独立的进程,不需要加锁,所以省掉了锁带来的开销,

同时在编程以及问题查找时,也会方便很多。其次,采用独立的进程,可以让互相之间不会

影响,一个进程退出后,其它进程还在工作,服务不会中断,master 进程则很快启动新的

worker 进程。当然,worker 进程的异常退出,肯定是程序有 bug 了,异常退出,会导致当

前 worker 上的所有请求失败,不过不会影响到所有请求,所以降低了风险。

需要设置多少个 worker

Nginx 同 redis 类似都采用了 io 多路复用机制,每个 worker 都是一个独立的进程,但每个进

程里只有一个主线程,通过异步非阻塞的方式来处理请求, 即使是千上万个请求也不在话

下。每个 worker 的线程可以把一个 cpu 的性能发挥到极致。所以 worker 数和服务器的 cpu

数相等是最为适宜的。设少了会浪费 cpu,设多了会造成 cpu 频繁切换上下文带来的损耗。

连接数 worker_connection

这个值是表示每个 worker 进程所能建立连接的最大值,所以,一个 nginx 能建立的最大连接数,应该是 worker_connections worker_processes。当然,这里说的是最大连接数,对于HTTP 请 求 本 地 资 源 来 说 , 能 够 支 持 的 最 大 并 发 数 量 是 worker_connections worker_processes,如果是支持 http11 的浏览器每次访问要占两个连接,所以普通的静态访问最大并发数是: worker_connections worker_processes /2,而如果是 HTTP 作 为反向代理来说,最大并发数量应该是 worker_connections

worker_processes/4。因为作为反向代理服务器,每个并发会建立与客户端的连接和与后端服务的连接,会占用两个连接。

注意:此部分属于高级技术,近几日会将下面的知识点补充完毕。

81 Keepalived+Nginx 高可用集群(主从模式)

82 Keepalived+Nginx 高可用集群(双主模式)

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何部署web服务如何部署web服务器

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情