基本知识
- 一个监听TCP 80端口的守护进程
- Web上资源位置
- ISOC(Internet Society)互联网协会定义了三种标识
URI URL URN - URI(统一资源标志符):如果资源能通过因特网或其他方式访问,则可以说使用的是一个URI
- URL(统一资源定位符):如果一个资源只能通过因特网访问,则把它叫做URL
- ISOC(Internet Society)互联网协会定义了三种标识
HTTP工作原理
- HTTP区分大小写,命令一律大写
- Web服务器支持CGI(通用网管接口,一种允许HTTP服务器与其他程序交换信息的规范)
- Web服务器还支持插件结构,可以将某个扩展名为类似
.php .pl等的文件发给内嵌的解释器去执行
常用的应用服务器列表
服务器 | 类型 | 网站
——- |—— |————
Tomcat |开源 |tomcat
GlassFish |开源 |GlassFish
JBoss |开源 |JBoss
OC4J |商业 |OC4J
WebSphere |商业 |WebSphere
WebLogic |商业 |WebLogic
Jetty |开源 |Jetty
负载均衡
- 提高性能,增加冗余性
几种方法:
1. 循环域名服务
给多个ip地址分配一个相同的主机名
例如:
1 | $ dig www.baidu.com a |
上面例子中,www.baidu.com被映射到规范名www.a.shifen.co上,之所以加上间接一层,是为了既可以把传递内容的责任委托给下游的CDN提供商,而又不会把自己跟域名的控制权交给CDN。
如果一台服务器宕机了,必须更新DNS,把流量从那台机器上引开
2. 负载均衡硬件
- 需要富裕的资金
- 商业第三方负载均衡硬件
F5 Networks公司的Big-IP Controller- 北电公司的
AlteonWeb交换产品 - 思科公司的内容服务交换机
Content Services Switches
3. 基于软件的负载均衡器
不要求用专门的硬件,可以在一台UNIX服务器上运行
HTTP服务程序
Ubuntu下安装
下载Apache HTTP Server
- 当前Apache HTTP Server版本为
httpd-2.4.25 - 本文直接下载的源文件
httpd-2.4.25.tar.gz
安装
安装过程中出现的任何问题,请文章结尾处 问题解决办法
1 | //下面两行二选一执行 |
如果安装失败,请参阅以下部分:问题解决办法
问题解决办法
没有创建目录的权限
当进行make && make install 时安装过程中出现了没有权限的报错,可能问题是在Ubuntu下安装目录需要授权,以本文安装目录/usr/local/为例,
1 | $ sudo chmod 777 /usr/local |
安装httpd,apr,apr-util,pcre错误解决
提示缺少apr和apr-util
- apr安装
1 | $ tar -zxf apr-1.5.2.tar.gz |
- apr-util安装
1 | $ tar -zxf apr-util-1.5.4.tar.gz |
- pcre下载和安装
切记:需下载pcre,而不是pcre2,否则到httpd安装时,会提示无法找到
pcre-config
1 | $ tar -zxf pcre-8.39.tar.gz |
重新安装Apache HTTP
当apr,apr-util,pcre都安装完毕之后,需重新安装Apache HTTP
1 | $ cd httpd-2.4.25 |
配置Apache
所有配置文件保存在`conf`中,需要检查并自定制`httpd.conf`这个文件
配置全局设定
例如:服务器池,HTTP服务器监听查询的TCP端口(通常是80),以及用于加载动态模块的设定(LoadModule)
配置“默认”服务器
配置的参数包括:
- 服务器以哪个用户和用户组的身份运行(要用非root的身份)
DocumentRoot语句:定义了对外提供的文档所在目录树的根<Document>逐个目录控制访问
运行Apache
1 | $ cd /YOURPATH/apache/bin/ |
如果启动过程中,报出如下错误:
1 | AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message |
解决办法
1 | $ vim /YOURPATH/apache/conf/httpd.conf |
在文件中找到ServerName这一行,将此行第一个字符#去除,然后更改为:ServerName 127.0.0.1:80
重新执行
1 | $ sudo ./apachectl -k start |
在浏览器中输入localhost,回车,出现如下界面:
