1.基础知识

HTTP:超文本传输协议,超链接
URI:Uniform Resource Identifier,全局范围内唯一命名符
MIME:Multipurpose Internet Mail Extension,多用途互联网邮件扩展
将非文本数据在传输前重新编码为文本文件,接收方能够用相反的方式将其重新还原为原来的格式,还能够调用相应的程序来打开此文件

动态网页:服务器端存储的文档非HTML格式,而是编程语言开发的脚本,根据浏览器的地址,属性参数(get/post等等),脚本接受参数之后在服务器端执行一次,运行完成之后生产HTML格式的文档。

IP:
Source IP
Destination IP
TCP:
Source Port
Destination Port
HTTP首部:
GET/2.html
Host:www.magedu.com(为web的虚拟主机提供,只能是域名)

HTTP报文:
请求报文
<method><request-URL><version>
<headers>
//空白行是必须的
<entity-body> //报文主体

GET / HTTP/1.1
Host: www.magedu.com
Connection: keep-alive

响应报文
<version><status><respon-phrase>
<headers>
//空白行是必须的
<entity-body> //报文主体

HTTP/1.1 200 OK
X-Powered-By: PHP/5.2.1
Vary: Accept-Encoding,Cookie,User-Agent
Cache-Control: max-age=3,must-revalidate
Content-Encoding: gzip
Content-Length: 6931

状态码:
1xx: 纯信息
2xx: 成功类
3xx: 重定向
4xx: (客户端)的错误类信息
5xx: (服务端)的错误类信息

Web服务器的主要操作
1、建立连接
2、接收请求
3、处理请求
4、访问资源
5、构建响应
6、发送响应
7、记录日志

HTTP/1.1
HTTP Method
GET,HEAD,POST,PUT,DELETE,TRACE,OPTIONS,CONNECTION

APACHE:
NCSA,httpd
A patchy Server = apache

FSF: GUN,GPL
ASF: Apache Software Foundation
web: httpd
Tomcat
Hadoop

httpd:
Web Server,Open Source
事先创建进程:
按需维持适当的进程
模块化设计,核心比较小,各种功能通过模块添加(可以单独编译模块,可以运行时配置)
支持多种方式的虚拟主机配置
Socket IP:Port
虚拟主机:一台物理服务器,WEB程序只有一个,WEB程序可以服务多个不同的站点
基于IP的虚拟主机
基于Port的虚拟主机
基于域名的虚拟主机

客户端请求报文的方法:
Method URL version
header

body

httpd: SELinux(实现让其处于permissive)
[root@nginx ~]# getenforce
Disabled

永久生效vi /etc/sysconfig/selinux

/usr/sbin/httpd(MPM: prefork)
httpd: root,root (小于1024的端口必须管理员启动)
httpd: apache,apache (WORK工作进程)

/etc/rc.d/init.d/httpd
Port: (80/tcp),(ssl: 443/tcp)
/etc/httpd: 工作根目录
主配置文件: httpd.conf
/etc/httpd/conf.d/*.conf
/etc/httpd/modules: 各种模块路径
/etc/httpd/logs: ---> /var/log/httpd: 日志目录
日志文件有两类:访问日志access_log,错误日志err_log
/var/www
html: 静态页面的访问路径
cgi_bin: 动态页面的访问路径
cgi: Common Gateway Interface, 调用这种协议(CGI),web服务器启动一种程序处理动态内容,然后获取返回的结果。
Client ---> httpd(index.cgi) --->Spawn Process(index.cgi)发起进程,执行 --->httpd --->Client

fastcgi:

动静分离:web服务器,返回静态内容;应用程序服务器,返回动态内容

http://10.160.65.44/manual/
安装httpd-manaual,然后生成/etc/httpd/conf.d/manual.conf的配置文件

MPM: Multi Path Modules
mpm_winnt
prefork (一个请求用一个进程响应)
worker (一个请求用一个线程响应,启动多个进程,每个进程生产多个线程,多个线程可以共享一个进程资源,但涉及到锁)
event (一个进程处理多个请求)

修改启动方式:vi /etc/sysconfig/httpd

URL路径跟本地文件系统路径不是一回事,URL是相对于DocumentRoot的路径而言的。

Options:
None:不支持任何选项
Indexes: 允许索引目录(网站一定不要允许,列出所有文件)
FollowSynLinks:允许网页访问符号链接指向的文件
ExecCGI:允许执行CGI脚本
MultiViews:多视角,国际网站,不同地域显示不同语言

2.网站需要提供用户名密码访问

  修改配置文件/etc/httpd/conf/httpd.conf

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
# AllowOverride None
AllowOverride AuthConfig
AuthType Basic
AuthName "Restricted Site..."
AuthUserFile "/etc/httpd/conf/htpasswd"
Require valid-user

  利用htpasswd命令创建AuthUserFile文件:

[root@nginx conf]# htpasswd -c -m /etc/httpd/conf/htpasswd hadoop    //-c创建新文件   -m密码以MD5方式存放
New password:
Re-type new password:
Adding password for user hadoop
[root@nginx conf]# htpasswd -m /etc/httpd/conf/htpasswd tom
New password:
Re-type new password:
Adding password for user tom
[root@nginx conf]# cat htpasswd
hadoop:$apr1$SktXz...$be6hoavgRDZnCp4WGarIE.
tom:$apr1$gdws0/..$kO9siT77R9cAax4HiYVDx0

  这样访问的时候需要提供用户名和密码。

  也可以使用组的方式来限定用户访问:

3. 虚拟主机

  基于IP的虚拟主机访问,在/etc/httpd/conf.d/下面增加virtual.conf配置文件,给eth0绑定一个IP

  ip addr add  192.168.144.45/24  dev eth0

  ip addr show

<VirtualHost 192.168.144.44:>
ServerName hello.magedu.com
DocumentRoot "/www/magedu.com"
</VirtualHost>
<VirtualHost 192.168.144.45:>
ServerName www.a.org
DocumentRoot "/www/a.org"
</VirtualHost>

  分别在目录下建立index.html文件,通过不同的IP访问不同的主页面。

  

  基于Port的虚拟主机访问,需要注意的是在/etc/httpd/conf/httpd.conf配置文件中需要增加监听端口

#Listen 12.34.56.78:
Listen
Listen <VirtualHost 192.168.144.44:80>
ServerName hello.magedu.com
DocumentRoot "/www/magedu.com"
</VirtualHost>
<VirtualHost 192.168.144.45:>
ServerName www.a.org
DocumentRoot "/www/a.org"
</VirtualHost>
<VirtualHost 192.168.144.44:8080>
ServerName www.b.net
DocumentRoot "/www/b.net"
</VirtualHost>

  这样,可以通过相同的IP,不同的端口进行不同主页的访问。

  

  通过主机名的访问,需要在配置文件中加入NameVirtualHost 192.168.144.44:80

NameVirtualHost 192.168.144.44:
<VirtualHost 192.168.144.44:>
ServerName hello.magedu.com
DocumentRoot "/www/magedu.com"
</VirtualHost>
<VirtualHost 192.168.144.45:>
ServerName www.a.org
DocumentRoot "/www/a.org"
</VirtualHost>
<VirtualHost 192.168.144.44:>
ServerName d.gov
DocumentRoot "/www/d.gov"
</VirtualHost>
<VirtualHost 192.168.144.44:>
ServerName www.b.net
DocumentRoot "/www/b.net"
</VirtualHost>

  然后在WINDOWS的hosts文件中解析这两条记录

10.160.65.44    hello.magedu.com
10.160.65.44 d.gov

  通过域名访问,可以访问不同的主页。

  

    

Linux 之HTTP服务,APACHE的更多相关文章

  1. Linux中要重启apache服务与在windows是有很大的区别,下面我们来介绍一下

    在Linux中要重启apache服务与在windows是有很大的区别,下面我们来介绍一下常用的命令,需要的朋友参考下吧(http://www.hnkjlb.com) linux系统为Ubuntu 一. ...

  2. Linux基础-14-ssh服务、apache服务

    1. ssh服务 ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息. ssh服务端 ...

  3. Linux下编译安装Apache Http Server

    Linux下编译安装Apache Http Server [TOC] 1.下载httpd-2.4.12.tar.bz2 wget http://mirror.bit.edu.cn/apache/htt ...

  4. Linux下tomcat服务

    一:Linux下tomcat服务的启动.关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务:切换到tomcat主目录下的bin目录(cd usr/loca ...

  5. Linux下把Mysql和Apache加入到系统服务里

    Linux下注册Apache与MySQL为系统服务 Apache加入到系统服务里面: cp /安装目录下/apache/bin/apachectl /etc/rc.d/init.d/httpd 修改h ...

  6. linux中编译安装Apache、PHP、MySQL(上)

    1.简介 在阿里云买了个云服务器,一直没时间折腾.过了近十天了吧,才有时间好好玩玩这个云服务器.自己是做Web开发的,所以我需要的开发环境是LAMP.之前打算是采用yum安装,不过yum安装apach ...

  7. linux编译安装php apache mysql (已试过)

    阅读目录 (全部使用源码安装方式,先安装mysql,然后是apache,再是php,这样好像能防止挺多问题的,期间出现问题基本是依赖没有或者版本不对) 1.简介 2.安装apache 2.1.yum方 ...

  8. linux设置开机服务自动启动/关闭自动启动命令

    linux设置开机服务自动启动/关闭自动启动命令 2012-02-06 15:13 [root@localhost ~]# chkconfig --list     显示开机可以自动启动的服务[roo ...

  9. Linux中如何安装Apache服务器

    Linux中如何安装Apache服务器 由于学习的需要,所有手动安装了一下Apache源码包,安装过程中的问题千奇百怪,但是如果弄清楚了问题出在哪里,那么也不是太难.如果有学习者出现安装中的问题,可仔 ...

  10. linux下tomcat服务的相关命令

    一:Linux下tomcat服务的启动.关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务:切换到tomcat主目录下的bin目录(cd usr/loca ...

随机推荐

  1. Linux上分析java程序的问题

    通过日志看不出来的问题,可以通过看java的堆栈信息(dump文件)来看出一些端倪. 1. 找java的进程id.jdk/bin的目录 ps -ef | grep java 2. cd 到bin的目录 ...

  2. 【菜鸟学习jquery源码】数据缓存与data()

    前言 最近比较烦,深圳的工作还没着落,论文不想弄,烦.....今天看了下jquery的数据缓存的代码,参考着Aaron的源码分析,自己有点理解了,和大家分享下.以后也打算把自己的jquery的学习心得 ...

  3. VS 远程调试之 “The visual studio remote debugger does not support this edition of windows”

    The error message "The visual studio remote debugger does not support this edition of windows&q ...

  4. 转(Response.WriteFile 无法下载大文件解决方法)

    以前用Response.WriteFile(filename),但当遇到大文件时无法完整下载. 该方法最大的问题,它不是直接将数据抛到客户端,而是在服务器端(IIS)上缓存.当下载文件比较大时,服务器 ...

  5. 怎样安装Ubuntu操作系统

    (转载自:http://jingyan.baidu.com/article/ff42efa9423991c19e22020d.html) 准备工作 1. 一台普通电脑(装没装操作系统无所谓),保证电脑 ...

  6. adb server无法终止问题

    这两天通过python去连接Android手机时,一直提示:Adb connection Error:An existing connection was forcibly closed by the ...

  7. linux查看父子进程

    python多进程代码 http://blog.csdn.net/yfkiss/article/details/6729364  Linux下多线程查看工具(pstree.ps.pstack) tes ...

  8. Retina屏实现1px边框

    问题描述 通常我们实现边框的方法都是设置1px的边框,但是在retina屏上因为设备像素比的不同,边框在移动设备上的表现也不相同,例如在devicePixelRatio = 2的retina屏下会显示 ...

  9. 前端学习实践笔记--JavaScript深入【2】

    趁热继续再来学习一波,接下来主要介绍函数,object,数组,面向对象,new实例化. 在介绍“对象”之前,首先得梳妆打扮一番吧,那这梳妆打扮主要有两条路线,一条是淑女范(利用函数对象化),一条是邻家 ...

  10. JS的多线程

    注:以下内容基于IE中GIF的onload事件的基础上,故所有测试IE only 需要用到的几个图片 先看一个简单的事实: 复制代码代码如下: <SCRIPT LANGUAGE="Ja ...