Linux 之HTTP服务,APACHE
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的更多相关文章
- Linux中要重启apache服务与在windows是有很大的区别,下面我们来介绍一下
在Linux中要重启apache服务与在windows是有很大的区别,下面我们来介绍一下常用的命令,需要的朋友参考下吧(http://www.hnkjlb.com) linux系统为Ubuntu 一. ...
- Linux基础-14-ssh服务、apache服务
1. ssh服务 ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息. ssh服务端 ...
- Linux下编译安装Apache Http Server
Linux下编译安装Apache Http Server [TOC] 1.下载httpd-2.4.12.tar.bz2 wget http://mirror.bit.edu.cn/apache/htt ...
- Linux下tomcat服务
一:Linux下tomcat服务的启动.关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务:切换到tomcat主目录下的bin目录(cd usr/loca ...
- Linux下把Mysql和Apache加入到系统服务里
Linux下注册Apache与MySQL为系统服务 Apache加入到系统服务里面: cp /安装目录下/apache/bin/apachectl /etc/rc.d/init.d/httpd 修改h ...
- linux中编译安装Apache、PHP、MySQL(上)
1.简介 在阿里云买了个云服务器,一直没时间折腾.过了近十天了吧,才有时间好好玩玩这个云服务器.自己是做Web开发的,所以我需要的开发环境是LAMP.之前打算是采用yum安装,不过yum安装apach ...
- linux编译安装php apache mysql (已试过)
阅读目录 (全部使用源码安装方式,先安装mysql,然后是apache,再是php,这样好像能防止挺多问题的,期间出现问题基本是依赖没有或者版本不对) 1.简介 2.安装apache 2.1.yum方 ...
- linux设置开机服务自动启动/关闭自动启动命令
linux设置开机服务自动启动/关闭自动启动命令 2012-02-06 15:13 [root@localhost ~]# chkconfig --list 显示开机可以自动启动的服务[roo ...
- Linux中如何安装Apache服务器
Linux中如何安装Apache服务器 由于学习的需要,所有手动安装了一下Apache源码包,安装过程中的问题千奇百怪,但是如果弄清楚了问题出在哪里,那么也不是太难.如果有学习者出现安装中的问题,可仔 ...
- linux下tomcat服务的相关命令
一:Linux下tomcat服务的启动.关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务:切换到tomcat主目录下的bin目录(cd usr/loca ...
随机推荐
- [2014.01.27]wfPng 水印贴图组件 2.1
支持载入bmp,jpg,gif,png四种格式等. 支持图片水印使用png格式,支持区域透明,半透明的png图片. 支持图片缩放. 支持画线.画矩形.画椭圆,画正圆等图形. 支持在图片上输出文字. 能 ...
- virtualbox 使用USB引导启动安装系统
想要测试u盘系统引导有没有问题,从u盘中启动我烧录的Android x86系统. 这种方式可以在已有空的虚拟机上直接启动U盘中的系统. 百度上能搜到的方式都是使用CMD命令(懒人表示太麻烦--),so ...
- spring事务传播机制与隔离级别、通知类别
Spring在TransactionDefinition接口中规定了7种类型的事务传播行为, 它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播: 事务传播行为类型 说明 PROPAGATIO ...
- web.xml文件详解
web.xml文件详解 Table of Contents 1 listener. filter.servlet 加载顺序 2 web.xml文件详解 3 相应元素配置 1 listener. f ...
- 基于Netty的私有协议栈的开发
基于Netty的私有协议栈的开发 书是人类进步的阶梯,每读一本书都使自己得以提升,以前看书都是看了就看了,当时感觉受益匪浅,时间一长就又还回到书本了!所以说,好记性不如烂笔头,以后每次看完一本书都写一 ...
- 防止在iOS设备中的Safari将数字识别为电话号码
在测试中发现iPad上的Safari总会把长串数字识别为电话号码,文字变成蓝色,点击还会弹出菜单添加到通讯录. 别的地方倒也罢了,如果在用户名中出现数字(手机注册新浪微博的话用户名就是“手机用户xxx ...
- NLP情感分析监督学习样本打标
1). 情感打标 a). 全句 单句 标签 好吃是好吃 pos 真材实料 pos 不过感觉一人份的量就有点小贵 neg 点的是肥牛米线 neu b). 全文本 文本 标签 分量足,味道不错,味道也不错 ...
- GDB 调试 一些命令
1. gdb查看指定地址的内存地址的值:examine 简写 x-----使用gdb> help x 来查看使用方式 x/ (n,f,u为可选参数)n: 需要显示的内存单元个数,也就是从 ...
- Arduino 翻译系列 - LED 灯闪烁
原文地址 - https://www.arduino.cc/en/Tutorial/Blink 闪烁 这个例子展示了你能拿 Arduino / Genuino 板子来干的最简单的事:使开发板上的 LE ...
- nyoj 82 迷宫寻宝(二)
http://acm.nyist.net/JudgeOnline/problem.php?pid=83 题目解法主要在于判断两线段是否相交,思路是穷举所有地图四周的点,其中每一个边界上的点和终点构成一 ...