Web服务器
来源:互联网 发布:nginx优化 2016 编辑:程序博客网 时间:2024/06/08 12:10
什么是Web服务器
Web服务器一般是网站服务器,是安装在计算机中的一个程序,可以向浏览器等Web客户端发送文档,你可以在Web服务器上放置数据文件,让全世界的人来浏览。目前比较主流的几个Web服务器软件包括世界使用量排名第一的apache,轻量级,提供反向代理功能,支持高并发的nginx,还有微软的iis服务器,今天主要介绍apache服务器。
Apache简介
Apache服务器的全称是 Apache HTTP Server,支持多个平台,速度快,运行稳定,可以通过简单的api扩展,把php/Python等解释器加入到服务器中,所以Apache的应用十分广泛。
在Internet开始流行的时候,出现了http协议,美国的一所大学开始组织研究生编写基于http协议的Server端程序和Client,因为这个项目是出于学术的目的,进行了一段时间后解散了,并把项目开源了。由于Internet的发展,对http Server的需求越来越大,公开源码的项目成了研究的起点,很多黑客(顶尖的计算机高手)给程序提交代码,增加功能,并对出现的bug加以修复,这个服务器端程序不断完善,最终成为了今天的Apache服务器,那个Client最终演变成了今天的firefox。
这个服务器软件为什么叫Apache呢,Apache之父说:我选择apaceh这个名字是选择它所包含的积极的含义。阿帕奇族是最后一个屈服于美国政府的名族。当时我担心大公司迟早会参与竞争并‘教化’这块最早的互联网之地,所以在我看来,阿帕奇是一个很好的名字。
apache服务器的安装
linux下软件的安装方式有两种,源码安装和rpm安装,源码安装优点是用编译器编译后的代码更贴近硬件,运行效率更高,编译安装还能提供很多编译的参数,可以最大化定制软件,缺点就是编译过程比较耗时,编译过程中出现错误不好解决,像apache服务器是用c语言写的,编译时如果出现什么报错信息,就要去搜索引擎查明找原因,然后修改c语言的代码,对没有c语言基础的还是挺困难的。rpm(二进制文件)安装,已经提前帮你编译成了二进制代码,省去了编译时间,缺点就是相对于编译安装的软件运行效率稍低,不能定制安装时的一些参数。
如果你从apache官网下载apache安装也挺麻烦的,还要解决依赖关系的问题。什么是依赖关系呢,举个windows的例子,运行某个游戏它提示你缺少*.dll文件,安装某软件时要你安装.net库,一个程序的运行需要另一个程序提供一些支持,这就是依赖关系。windows还好点,都是微软一家开发的,很多依赖关系根本不需要用户解决,毕竟用windows的都是小白用户。而linux就不同了,它的整个系统是由很多开发组共同完成的,linux的软件包是很灵活的,很多软件都不是必须的,有些功能可有很多软件提供。安装某个软件时可能需要另一个软件的功能支持,而这个软件可能还需要其他软件的功能支持,通常安装一个软件会依赖数十个文件,上百个都有可能,安装一个软件就要安装这么多软件,挺耗费时间的,有时还会碰上环形依赖,这个就更让人头痛了。
好在各个linux系统都提供了依赖包管理工具,像RedHat和Centos下提供的的yum工具,他可以自动解决所有依赖关系,并全部下载安装,无须自己一次次繁琐地下载安装,安装apache只需要运行yum -y install apache
命令就可以完成apache的安装,-y
的意思是遇到所有提示都选yes。
其实除了源码安装和rpm安装外,还有一种安装方式,脚本安装。在windows下搭建网站环境运行环境也挺麻烦的,好在有wamp server或Xampp,phpstudy等软件包,安装了它们后那些常用的软件apache,mysql,php,phpmyadmin都集成了,不用你一个一个去下载,并配置关联它们。在linux下有没有这种程序呢,那就是shell脚本了,所谓脚本安装,就是别人把程序的安装过程都写在一个shell脚本里,他的本质还是用到了源码安装和rpm安装,所以没把它门归到那两类中。一个以前需要花一天时间安装的软件,用脚本安装包的话,运行一下脚本,进行一些简单的配置,它便帮你进行那一系列繁琐地安装过程。脚本安装的坏处就是不能定制,软件安装在哪,软件的一些参数设置,脚本的作者都已近帮你写好了,除非是你自己写的脚本或者是自己会修改脚本。在这里给大家推荐我自己用的一款脚本 名字叫oneinstack,大家自己搜索
apache主配置文件
前面啰嗦了那么一堆,写了一下apache的安装过程,现在开始写这篇文章中最重要的内容,apache的主配置文件httpd.config中一些常见的配置项。
主配置大约500多行,但其中只有一小部分的apache指令,大多数都是注释,去掉注释大约100多行,下面是配置文件的内容,通过翻译和搜索引擎,我给每条指令都加上了注释。
//是否显示apache的版本信息ServerSignature On//在出现错误页的时候不服务器操作系统的名称ServerTokens Full//整个配置文件的根路径ServerRoot "G:/wamp/wamp/bin/apache/apache2.4.9"Define APACHE24 Apache2.4//监听的服务器和端口号Listen 0.0.0.0:80Listen [::0]:80//apache是基于模块化设计的,在此设置加载一些动态模块LoadModule access_compat_module modules/mod_access_compat.soLoadModule asis_module modules/mod_asis.soLoadModule auth_basic_module modules/mod_auth_basic.soLoadModule php5_module "G:/wamp/wamp/bin/php/php5.5.12/php5apache2_4.dll"//设置apache运行账户及账户组<IfModule unixd_module>User daemonGroup daemon</IfModule>//管理员的邮箱,apache运行出现严重错误可以向管理员发邮件ServerAdmin admin@example.com//主机名ServerName localhost:80//是否进行域名的解析HostnameLookups Off//网站的根目录DocumentRoot "G:/wamp/wamp/www/"//apache下文件的访问权限,下面更具体的设置可以覆盖此处设置<Directory /> //.htaccess是否可用 AllowOverride none Require all denied</Directory>//网站的一些设置<Directory "G:/wamp/wamp/www/"> //Indexes允许查看目录树,设置-Indexes可以关闭目录树 Options Indexes FollowSymLinks //是否支持.htaccess AllowOverride allRequire all grantedOrder Deny,Allow//允许谁访问 Allow from all </Directory>//定义一些首页文件<IfModule dir_module> DirectoryIndex index.php index.php3 index.html index.htm</IfModule>//单个文件的权限<Files ".ht*"> Require all denied</Files>//错误日志ErrorLog "G:/wamp/wamp/logs/apache_error.log"//定义记录错误的级别LogLevel warn//定义写日志的一些格式<IfModule log_config_module> LogFormat "%h %l %u %t \\\\\\\\"%r\\\\\\\\" %>s %b" common <IfModule logio_module> LogFormat "%h %l %u %t \\\\\\\\"%r\\\\\\\\" %>s %b </IfModule> //日常日志 CustomLog "G:/wamp/wamp/logs/access.log" common</IfModule>//在不同目录下有不同网站,但在同一个域名下,这时可以配置alias<IfModule alias_module> ScriptAlias /cgi-bin/ "G:/wamp/wamp/bin/apache/apache2.4.9/cgi-bin/"</IfModule>//文件夹权限的设置<Directory "G:/wamp/wamp/bin/apache/apache2.4.9/cgi-bin"> AllowOverride None Options None Require all granted</Directory>//设置一些文件类型对应的处理方式<IfModule mime_module> TypesConfig conf/mime.types AddEncoding x-compress .Z AddEncoding x-gzip .gz .tgz AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-httpd-php .php AddType application/x-httpd-php .php3</IfModule>EnableSendfile offAcceptFilter http noneAcceptFilter https none//引入一些配置文件,把一些配置项写入独立的文件,让主配置文件显得简洁Include conf/extra/httpd-autoindex.confInclude conf/extra/httpd-vhosts.conf//进行条件判断,如果加载了proxy_html_module模块则包含<IfModule proxy_html_module>Include conf/extra/proxy-html.conf</IfModule><IfModule ssl_module>SSLRandomSeed startup builtinSSLRandomSeed connect builtin</IfModule>//代表引入 G:/wamp/wamp/alias 下的所有文件Include "G:/wamp/wamp/alias/*"
最后
作者: qq_自学成才是王道_0
链接:http://www.imooc.com/article/6225
来源:慕课网
- WEB服务器
- web服务器
- web 服务器
- WEB服务器
- web服务器
- web 服务器
- WEB服务器
- WEB服务器
- web服务器
- WEB服务器
- WEB服务器
- Web服务器
- web服务器
- WEB 服务器
- web服务器
- web服务器
- Web服务器
- web服务器
- IDEA下Maven项目整合Spring和MyBatis出现jdbc.properties is invalid;前言中不允许有内容
- 分布式架构
- Python爬虫学习--urllib的基本使用笔记
- js实现左右切换页面
- atcoder-Coloring Dominoes(组合数学)
- Web服务器
- window.onresize使用实例
- 数据分析之微信通讯录分析
- PAT乙级(Basic Level)真题 >A+B和C (15)
- matlab字体终极解决方案
- Java源代码阅读-HashMap篇
- [CTF]No.0003 哈希长度扩展攻击以及HashPump
- xss挑战赛-wp
- mysql性能优化之profiling