咔片PPT · AI自动生成演示文稿,模板丰富、排版精美 讯飞智文 · 一键生成PPT和Word,高效应对学习与办公

服务器端的应用发布(这里特指b/s架构程序,也就是在浏览器里运行的代码,你也可以把它粗暴的理解成网站),发布用什么环境取决于这个代码用什么语言编制,下面依次说市场保有率最高的几种环境:

在从业生涯中我发现很多东西其实不难,难的是你入不了门,比如现在给你一个问题让你去搜索,你不知道怎么搜。你也不知道行业用语,当你知道了怎么描述你也就有了自学能力。所以:这个系列里如果是那些烂大街的知识我会告诉你关键词,你去自己搜,讲的好的比我多的是。冷门知识我会手把手告诉你。


正戏开始

拉一把小白,先说概念:网站和数据库这是亲哥俩,你可以不懂开发,但逻辑你得捋清楚;网站就好比是一个模板,数据库就好比是一个excel电子表格;当你打开一个网页的时候,浏览器会把你指定的标识(通常是:id)传回服务器,服务器得到这个id后,大概干三件事——

A、从指定的文件夹读取网页的模板(程序模型)

B、从数据库取出对应号码的条目

C、然后将条目的字段信息,填充至模板中,然后返回给前台浏览器。

浏览信息的技术模型(下行模型):

b/s程序的核心架构


向网站发布信息的模型(上行模型):


网站程序上行架构

如果你能彻头彻尾的理解上述内容,证明你有当程序员的潜质,开发程序其实很简单(别喷我:任何事情到了顶端才难),我是说程序员入门能做个小程序是很简单的,任何事情你把逻辑捋清楚了都不难;网站后台就是上行发布内容的、网站的前台就是供用户浏览下行信息的。

无论你想学什么开发语言,这个逻辑搞清楚了,那你搜索各种资料就有目的性了。咱简单的搜索一下上面的内容:

A、java如何连接数据库

B、java插入数据库 或 java增删改查代码

C、java程序如何发布

上面这些问题都烂大街了,0基础的小朋友静下心花1天时间就基本全搞定,今天咱的要解决的就是C 如何发布,当然了,不只是发布java,还要发布asp、php、c#(asp.net)和python

简单的说:语言不同,运行环境就不同,这是巨头们的一个很大的商业模式,微软希望他的江山代代永传,就需要培养自己的程序员,自己的程序员当然只允许说微软话(c#),微软的话当然只能在微软的礼堂里演讲(应用程序容器),java、python、php都一样,各自的语言都有各自的环境。

好了,扫盲先到这,不然高手该退群了……

本文主要讲解发布容器:微软系的iis,java系的tomcat和近些年很火的nginx


1、IIS

微软虽然广受诟病,但他的IIS仍然有数一数二的市场保有量(各位求同存异吧),iis如何发布网站各种资料也是烂大街,图文并茂的一般两三分钟你也能学会。咱们这个专题主要是讲一些偏冷门的知识,iis可以正常发布 asp和asp.net开发的网站,安装第三方插件以后可以发布php和python开发的网站。

知识点:只有一个80端口,如何让几十上百个网站共享80或443端口,各个发布容器都有各自的解决办法。(题外话:发布容器也叫web服务器)

iis解决这个问题叫:设置主机头、新版IIS加绑定主机名;所有网站都绑定到80端口,IIS会根据来访的域名不同来区分不同的请求,把不同的请求引导至不同的文件夹中。


IIS配置主机名的方法


有些朋友给每个网站分配不同的端口号的做法,在这里是不提倡的,虽然也能发布,但会衍生出很多其他问题。第一个难看的就是防火墙需要开很多对应的端口,另外你让访问者记住不同的端口去访问网站,这是不人道的。 例如: http://www.test.com:8080 当年java网站最爱干这种恶心事。

所以利用绑定主机名这个功能就可以轻松解决这个问题,但前提是网站必须得在iis下发布,刚才说了iis下只能支持 asp和asp.net装了插件可以支持php和python,那java咋办?

java得在tomcat下发布,tomcat和iis那是两个独立软件了,是无论如何无法共享端口运行的……


2、Tomcat

我一直用破衣烂衫来形容Tomcat,如何安装Tomcat自己搜,也是烂大街得知识,假设现在tomcat安装好了,你在浏览器输入:127.0.0.1:8080 已经能看到猫头了,咱们就说下面的事儿——

先说热门问题,Tomcat如何发布多个网站而使用一个端口?假设你这个机器的tomcat独占了80端口,你又有N个网站要发布,你是不是又准备给每个网站分不同的端口号?这种恶心事以后都别再想了,会给用户体验造成极大的障碍,也会给运维人员增添很多工作量,对我这种有技术洁癖的人来说是不可以容忍的。

Tomcat绑定域名(绑定主机头)的方法如下:

a、找到tomcat的安装文件夹

b、找到server.xml文件

c、找到host节点,在这个节点后面继续加新的host节点就行了,代码实例如下:

……

想加多少个网站你就加多少个,我为啥要说tomcat是破衣烂衫呢,这种常规操作你的自己改配置文件,对小白是极其不友好的。

到了这一步,IIS和tomcat就都能运行了,目前可以跑:asp、asp.net、java、php、python这主流的五种网站程序。

这又回到了上面那个问题—— 80端口到底给谁?给IIS那么tomcat就要改端口,给Tomcat的话IIS就要骂娘了,这个问题在前多年是无解的,在现在看有两种主流解决方案——


3、Nginx

Nginx的出现让曾经深陷运维泥潭的各路大神欢呼,严格意义上说它并不是web服务器,它算是个转发器,Web服务器比如iis或tomcat除了响应用户请求,它还能解析执行各自的程序代码,而Nginx本质上不执行程序代码,它只管响应用户请求,然后把用户请求甩给对应的下级入口,就好比电话总机,只负责转接;重要的一点是:性能不错、windows端和linux端都能部署,它的出现真正的让微软系和java系的程序可以在一台服务器上和平共处了(谁也别抢80端口了,咱把80端口给nginx)。


Nginx单机模式拓扑


集群模式

你千万别被这些词忽悠住,简单地说Nginx就像个三通水管,你既可以把它装在大门口接出分支给邻居用,也可以安装在厕所接根管子给洗衣机。具体这个三通装在哪儿(层级不同),它的作用也就不同了。另外:nginx不只是三通,它可以n通。 例子可能不恰当,但是为了你好理解。

nginx的配置也沿袭了tomcat的方法——直接编辑配置文件,位置:nginx的安装文件夹下=>conf文件夹下的nginx.conf这个文件,配置方法网上也是烂大街,随便搜索“nginx绑定域名、配置网站”大把图文教程,本处不再赘述。

nginx也并非没有缺点,做负载均衡的时候(也就是nginx放到应用机外面,跨机器转发的时候),经常出现启动闪退的问题,经查询:是因为nginx启动后无法和下面的转发的某个网站通信,而导致起不来。

比如这个时候,你一旦重启nginx,那么nginx可能出现无法启动的情况,肯定是有解决办法的,我是没深研究过。


回顾一下本节重点:同一个容器下发布多个网站,例如:iis下发布多个网站 或 tomcat下发布多个网站,一定不要用端口号区分,要用主机名(域名)区分,这样的话即便你同时用了iis和tomcat,那也只需要开放两个端口,否则每个网站一个端口,运维人员该骂娘了。

在两个应用上层放一个nginx,那就只需要对外开一个80或443就搞定。


【番外篇】Frp通过域名标识实现不同的转发方向

这是一个粉丝给我私信提出的问题,在这个章节里回答最恰当。

例如:Frp实现类似nginx的转发,比如你有三台服务器“品”字型拓扑,Frp根据不同的域名将请求发送至不同的IP上,如下图:


客户端核心代码:你需要转发到几个服务器你就建几个组,第一个组会把hello.com和home.com两个域名转发到192.168.1.98

第二组会把其他所有域名转发到 192.168.1.72

所以:想加多少个网站你就加多少个,你能开多少个虚机这一个IP一个80端口就足够玩多少次,是不是足够你玩到天荒地老了。

[web_1] type = http local_port = 80 local_ip = 192.168.1.98 custom_domains = www.hello.com,home.com [web_2] type = http local_ip = 192.168.1.72 local_port = 80 custom_domains = *

服务端核心代码:

[common] #其他配置不变,追加以下两行配置,即开启域名标识的模式 vhost_http_port = 80 vhost_https_port = 443



下个章节预告:上面只是装修中的硬装而已,真正要开始做运营级的业务,那下面几个问题等着你:

1、如何以最标准的运营级方法开通一个网站(大约四个步骤)

2、如何快速进行100个网站的开通(重复100次上面1的步骤)

3、其中某个网站被黑,如何保证黑客无法从网站文件夹中逃逸,偷偷钻到邻居网站(文件夹)里偷数据?

4、如果你服务器跑了100个网站,如何防止黑客用吸星大法把你网站文件夹(100个站点)打包下载走?

5、网站看似一切正常,但是通过百度搜索进来以后,发现是菠菜网站挂广告(被黑了),直到半年或几个月以后发现网站被百度拉黑了,你才知道当了很久冤大头,甚至可能被叔叔叫去喝茶,或者被云服务商断网警告。

此类问题层出不穷,五花八门,有代码级的,有系统级的,应对和处置方法也大不相同,后面章节慢慢掰扯。


如果你从第一集看到这里了,估计你也真的入门了,离赚钱也就不远了;后面我会建议一些商业模式,让你赚个小钱维持个零花钱是不成问题的,但如果你真的耐心走到最后,我相信你的思路会更加开阔,有些人不知道干啥,那是他不会; 一旦手里有了利器看穿了某个行业的本质,我相信你会有更好的想法的。


同行们,加油共勉。