在linux上设置web站点

一、http协议:超文本传输协议

应用层协议,使用TCP协议承载,端口号为80

http协议的功能:

MIME:多用途互联网邮件扩展,可以传输非纯文本文件

Cache:缓存机制

Method:GET,PUT,POST,DELETE,HEAD,TRACE,CONNECT,OPTIONS;

GET:请求获取指定的资源;

PUT:向指定的位置上传资源的最新版本;

POST:用于实现表单认证,在资源之后附加相关数据;

DELETE:请求服务器删除被明确标识的资源;

HEAD:与GET方法相同,都是向服务器申请获取资源,但HEAD方法仅向服务器请求响应消息的首部元信息;

TRACE:请求服务器回送收到的请求信息;用于测试或者故障诊断;

CONNECT:保留,留待将来使用;

OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项以及请求资源可以使用的方法;

keepalive:持续连接机制,也称持久连接,长连接

HTML:超文本标记语言,http协议主要传输的语言

http协议的工作模式:request/response模式;

一次完整的http事务:请求<-->响应;

一次完整的http通信,包括一次请求及对应于此次请求的响应;

二、web资源的使用

1.web资源:

一个html文档;

一张图片(jpg/jpeg,gif,png)

一个MP3片段

一个mpeg/mp4片段

一个PHP脚本

一个js脚本

一个css样式表

...

一次http请求,只能请求一个web资源,一个网站拥有多个web资源,请求加载网站时,若对于每一个web资源服务器都要使用一个进程建立TCP链接,会使服务器负担过大,必须要合理分配进程处理请求,才能使效率更高,服务器用来处理客户端请求的模型称作并发响应模型

2.并发响应模型:

单进程IO模型:仅有一个进程用于处理和响应客户端请求,每次只能处理和响应一个客户端,串行响应模型;

多进程IO模型:同时启动多个进程,每个进程只能处理和响应一个客户端请求;

复用的IO模型:进程可以同时处理并响应多个客户端的请求;

多线程的IO模型:每个进程可以生成多个线程,每个线程可以响应一个用户请求;

事件驱动的IO模型:每个进程直接处理并响应多个客户端的请求,其中采用事件通知机制;

复用的多进程IO模型:启动M个进程,且每个进程可以生成N个线程,每个线程可以处理并响应一个客户端的请求;M*N个客户端;

复用的事件驱动的IO模型:启动M个进程,每个进程都是基于事件驱动的方式直接处理并响应多个客户端的请求;

3.web服务器的一次完整的http请求的处理过程:

10建立TCP连接

2)接收请求:将客户端发送来的报文经过通信子网的解封之后,将其放置于用户空间中相应的应用程序所在的内存空间中;

3)分析处理请求:通过读取报文的http协议首部和body部分,获取客户端请求的资源的具体信息;

4)访问资源:通过特定的IO方式从磁盘等IO设备上加载客户端请求的资源;

5)构建响应报文:将加载的资源使用特定协议予以封装;

6)发送响应报文:

7)记录日志信息:

4.URI:Uniform Resource Indentifier,统一资源标识符;

在整个Web网络上可以的各种资源,如:HTML文档,图片,视频或音频片段,应用程序,压缩包,脚本等,都可以使用URI进行统一的唯一的标识;

URI一般包含三个部分:

1)资源的命名机制;

2)存放资源的主机名称;

3)资源自身名称;

URL:Uniform Resource Locator,统一资源定位符,URI的一个分支,用来定位资源的方法,使用URL可以找到一个定位的web资源;

URL是互联网上用来描述web资源的定位方式的一组具有特定格式的字符串;

URL一般有三个部分:

1)协议:资源的提供方式或访问方式;

可用的协议:https,http,ftp,ssh,mailto,gopher,...

2)主机标识:可以使用主机的FQDN,也可以使用IP地址;

3)资源存放的路径:相对于主机的存放路径;使用某种特定方式实现的映射路径,用于标识资源的具体位置;此路径是从根开始出发并标识的路径,根是web服务的根,而并不是文件系统的根;

URL通用标准格式:

[scheme://][Username:[email protected]]Server[:port][/PATH/TO/RESOURCE][?PARAMETERS=VALUE&&...][#FLAG]

5.web资源的分类:

静态资源:

服务器会根据客户端的请求直接将资源原封不动的响应给客户端的资源;

html文档

图片

视频片段,音频片段

纯文本

css

...

动态资源:

通常是由某种编程语言编写的程序文件,在服务器上经过某种特定方式执行之后生成相应的html页面,服务器将程序运行生成的html页面响应给客户端的资源;

服务器端动态资源:

php脚本

jsp程序

.NET程序

python脚本

ruby脚本

C/C++程序

客户端动态资源:

javascript脚本

Servlet

ActiveX

6.资源的路径映射:

在一个web资源的URL中,有该资源的路径字段,但该路径一般不是该资源在服务器主机内的实际路径,而是一种通过chroot机制映射出来的路径。

一个映射web根目录的指令:

DocumentRoot /var/www/html/

此时,/var/www/html就变成了web访问的根目录,通过以下URL可以访问/var/www/html/目录下的资源

http://server/a.html

web服务器的资源路径的映射方式:

1)DocumentRoot

2)Alias

3)VirtualHost DocumentRoot

4)用户的docroot

...

7.http协议请求处理的连接方式:

1)非持续连接:短连接

在建立好的一个TCP连接上,仅能传送一个http请报文以及一个与之匹配的响应报文;

适用场合:用于请求单个大资源的响应报文的传送;

2)持续连接:持久连接,长连接,keepalive;

可以允许客户端在一个TCP连接上发送不止一次的http请求报文,每一个资源响应报文都可以基于同一个TCP连接响应给客户端;

适用场合:用于多个小资源请求或从反向代理服务器向后端服务器请求的场景;可以避免后端服务器使用过多的进程来处理和响应客户端请求,在很大的程度上可以节省服务器的资源开销;

注意:到底选择使用哪类连接方式,由提供资源的服务器决定;

三、http协议的开源实现:

一些静态资源的解决方案:

httpd(Apache)

nginx(Engine X)

Tengine

lighttpd

一些动态资源的解决方案:应用程序服务器

JSP:

Tomcat

Weblogic

Websphere

Jboss

Glassfish

PHP:

php

php-fpm

Python:

python

.NET:

IIS

四、httpd命令

1.特性:

高度模块化,由核心和模块组成,所有功能都放在模块当中

DSO:动态共享对象,可以实现模块的动态装载和卸载

2.httpd的模块

1)静态模块:编译至核心中的模块,如果想要更换静态模块,则必须要换核心文件,并且只有在重启服务进程之后,才能生效;

2)动态模块:可以基于DSO方式动态装载卸载,仅需要重载配置文件即可生效

MPM:多道处理模块,用来设定httpd进程的并发响应模型,有三种:

prefork:多进程IO模型;

1)一个主进程,多个子进程;

2)主进程用于管理子进程,创建套接字,接收客户端请求,并将客户端请求派发给子进程处理;

3)子进程负责处理客户端请求及构建和发送响应报文;

4)一个子进程仅能处理和响应一个客户端的请求;

5)httpd默认的MPM模块;

worker:复用的多进程IO模型(多进程多线程)

1)一个主进程,多个子进程;

2)主进程用于管理子进程,创建套接字,接收客户端请求,并将客户端请求派发给子进程处理;

3)子进程负责管理其内部的各线程;

4)线程负责处理客户端请求及构建和发送响应报文;

5)一个线程仅能处理和响应一个客户端的请求;

event:复用的IO模型(事件驱动的多进程模型)

1)一个主进程,多个子进程;

2)主进程用于管理子进程,创建套接字,接收客户端请求,并将客户端请求派发给子进程处理;

3)子进程负责处理客户端请求及构建和发送响应报文;

4)一个子进程可以处理和响应多个客户端的请求;

注意:event模型在httpd-2.0之前不支持;在httpd-2.2版本中仅用作测试;只有在httpd-2.4中才被定义为建议使用的模型;

在CentOS 6中,通过rpm包仅能安装httpd-2.2版本,event模型是测试模型,不支持DSO动态装载和卸载;

在CentOS 7中,通过rpm包能安装httpd-2.4版本,event模式为"production ready",并且支持DSO动态装载和卸载;

3.

原文地址:http://blog.51cto.com/papapa213/2104650

时间: 2024-08-29 23:56:44

在linux上设置web站点的相关文章

在Linux上设置web站点(二)——httpd2.2的基础配置

一.httpd2.2的组成: /etc/httpd:服务器的根目录 conf/httpd.conf,conf.d/*:配置文件 conf/magic:MIME的配置文件 logs:日志文件的存放路径,符号链接/var/log/httpd modules:动态模块文件的存放路径,符号链接/usr/lib64/httpd/modules run:httpd主进程pid的存放路径,符号链接/usr/run/httpd httpd的主配置文件:/etc/httpd/conf/httpd.conf 在此配

在Linux上设置web站点(三)——在httpd2.2中设置https服务

https是以安全为目标的http通道,在http下加入了SSL层,https的安全基础是ssl,因此加密的详细内容就需要ssl. 下面简介在https2.2下设置https服务的步骤 1.创建私有CA: 使用openssl命令,详细介绍:http://blog.51cto.com/papapa213/2096589 1)创建CA的私钥: (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) 2)生成自签证书: op

linux 上备份 web 站点的脚本。

[[email protected] script]# cat back_web.sh  #!/bin/bash #use scp  not use password . so do it -->#ssh-keygen -t rsa -->   scp -p .ssh/id_rsa.pub [email protected]机器B的IP:/root/.ssh/authorized_keys  #mkdir  & go to backup ########################

Linux上部署web服务器并发布web项目

近在学习如何在linux上搭建web服务器来发布web项目,由于本人是linux新手,所以中间入了不少坑,搞了好久才搞出点成果.以下是具体的详细步骤以及我对此做的一些总结和个人的一些见解,希望对跟我一样的新手们有些帮助,有误的地方还请大神们指出 ??!(以下操作都是在虚拟机中进行) 1.选用CentOS6 64位作为服务器系统. (原因:redhat要钱,而CentOS免费:CentOS相比于其它linux系统要成熟.稳定一点:CentOS7操作命令和目录结构发生了一些变化所以选用版本6) 2.

VS 远程调试阿里云上的web站点,Remote Debugger

调试步骤 远程服务器: 1.找到本地vs安装目录,Enterprise\Common7\IDE目录下的Remote Debugger整个文件夹复制到远程服务器 2.根据服务器的系统类型,选择其中的x64或x86文件夹,以管理员身份运行msvsmon.exe 3.将vs生成的项目文件发布到远程服务器,带上调试文件,pdb,最好使用debug模式完成 本地: 4.本地vs代码保持与服务器同步,不要修改 5.调试-->附加到进程,连接类型为 默认,连接目标填上远端服务器的IP:端口,回车(此处注意,不

linux上nginx新建站点

首先远程连接云服务器 首先,用cd命令找到nginx的配置文件,或者直接用vi命令打开这个文件,一般是/etc/nginx/nginx.conf这个文件 看到没有,nginx.conf配置文件果然在这里,下面用vi命令打开它 自箭头以下都是这个文件的内容,我么来看其中的部分字段: 这个host配置告诉我们,这个nginx会到如下的两个地方去读取站点配置信息,那么,既然我们既然是要赋值之前的后台,那么就去找之前的后台站点配置文件吧: 看完了文件之后,想要退出怎么办,这里我们是通过vi来看文件内容的

安装ORACLE时在Linux上设置内核参数的含义

转自:http://www.blogjava.net/tbwshc/archive/2012/09/13/387652.htmlhttp://blog.csdn.net/wuweilong/article/details/7420310 安装Oracle之前,除了检查操作系统的硬件和软件是否满足安装需要之外,一个重点就是修改内核参数,其中最主要的是和内存相关的参数设置. SHMMAX参数:Linux进程可以分配的单独共享内存段的最大值.一般设置为内存总大小的一半.这个值的设置应该大于SGA_MA

网络应用发布到linux上的web服务器上页面上显示麻将牌式字符的问题

什么是麻将牌式字符,就是中文显示为一个竖立长方形框框里面有四个数字或字母,请看下图中中文,日文和韩文的显示就知道了: 为什么会遇到这个问题? 系统不支持中文,日文和韩文字体. 如何解决: 安装中文字体,日文字体和韩文字体. 参考: 1.如何在Linux下如何安装多语言包 2.linux安装中文语言包 为什么一般不会遇到这个问题? 因为安装系统时一般都选择或默认选择了多语言支持. 注意: 由于问题是别人问我的,目前还没有最终解决,具体步骤等完成后再补充. 补充: 同事说他用rpm搜索 "fonts

Linux上设置memcached自启动

以下这段脚本: #! /bin/sh # # chkconfig: - 55 45 # description: The memcached daemon is a network memory cache service. # processname: memcached # config: /etc/sysconfig/memcached # Source function library - for other linux #. /etc/rc.d/init.d/functions # S