简单Web服务器的用法以及配置信息
2011-08-12 19:13
507 查看
在linux中,要搭建一个web服务器基本上都是基于httpd实现的,所以要想使用web服务器,则需要先安装httpd
关于httpd的软件包,主要有3种
我们安装的就是最基本的httpd工具
而httpd.i386 是我们的httpd工具
httpd-devel.i386 则是服务器软件包
httpd-manual.i386 则是各种各样的说明文档,帮助文档。
小扩展:
/etc/httpd 目录下保存着所有的配置文件
相关的日志文件都在 /var/log/httpd
相关的模块都在/usr/lib/httpd/modules
相关的pid文件都在/var/run
相关的二进制文件/usr/sbin /usr/bin
服务脚本:/etc/rc.d/init/httpd
而在/etc/httpd目录下
./conf目录:放的是我们主配置文件
./conf.d目录:保存着可以被分为配置文件一部分的,在启动时被加载的,所以这里面所有.conf结尾的文件都会被当做主配置文件加载时候的一部分一起被加载。
当我们安装好httpd,我们就可以开启这个服务来使用了!
开启 httpd服务以及监听
小扩展:
nststat -tnl 我们经常使用这个命令来查看80端口是否已经开启
service httpd reload 而用这条命令在重读配置文件
开启之后我们就可以在自己的浏览器输入我们的ip试试啦!
我们看到了Redhat为我们准备的一个欢迎页,为什么会是这样的呢?
因为其实我们的正确的主页默认在:/var/www/html/目录下的index.html
当我们没有这个文件的时候,他就会自动读取/etc/httpd/conf.d/下的welcome.conf,而这个文件,则就是我们现在看到的主页啦!
==================================================
当然,仅仅能开启,能用,是不行的,我们必须要加入自己的元素,那么怎么做呢?
修改/etc/httpd/conf/httpd.conf文件!
httpd.conf的简单介绍:
首先注意这个配置文件里的所有指令都不区分大小写。但是后面跟的路径将严格区分大小写。
主要配置文件分为三大段:
Section 1 全局配置
Section 2 主服务器的配置
Section 3 关于虚拟主机的
一点一点的来看:
ServerTokens OS
服务器标示,它主要用于定义底下显示什么信息的。(初始化为 OS)
如果想看ServerTokens提供哪些指令,则需要装那个帮助文档包
ServerRoot "/etc/httpd"
主目录装在哪,这个很重要,不能改。后面的相对路径都是根据这个路径来的
Timeout 120
TCP连接的超时时间。(120秒)
KeepAlive Off
是否使用持久连接。
MaxKeepAliveRequests 100
定义最多请求多少对象
KeepAlive Timeout 15
不能让你长期占坑的超时时间。
接下来的这种形式表示它是一个“容器”这个“容器”里的参数只对被定义的一个文件/目录/IP等有效
<IfModuie prefork.c> ##比如这个就是对prefork.c这个c语言的文件有效
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256 服务器最多允许多少个用户连进来
MaxClients 256 最大并发客户端数
MaxRequestsPerChild 4000 每一个进程最多允许多少请求。
</IfModule>
Listen 80
监听在所有地址的80端口上
LoadModule 这个表明了启用什么模块
格式:LoadModule foo_module modules/mod.foo.so
其实就是 LoadModule 模块名 模块位置
Include conf.d/*.conf
这则就是指定了所有在/etc/httpd/conf.d/下的以conf结尾的文件都可以当配置文件的一部分来使用。
User apache
Group apache
这两个定义安全上下文的时候,用户/组访问进来到底以哪个身份来运行。这里默认是apache身份
ServerAdmin root@localhost
服务器管理员的邮箱地址,可以随便的自定义
ServerName www.a.org
服务器的名字。
DocumentRoot "/var/www/html"
定义默认情况下主服务器中网页文件存放在什么地方(这个是需要我们根据实际情况来修改的)
好吧,我们又遇到了一个“容器”,来看看这个容器是干什么用的。
<Directory "/var/www/html"> 定义某个特定目录在被访问的时候,应该有哪些访问特征的
Options Indexes FollowSymLinks 这里定义了 允许映像文件 和 追踪符号链接。其实这两项暂时对我们都没有什么很大的用途,可以将其改成 None
这个选项还有其他的选择比如:
SynLinksifOwnerMatch 属主匹配的时候允许访问
ExecCGI 是否允许执行这个网站的CGI脚本。
MultiViews 多功能视图 可以显示不同的页面功能。
AllowOverride None
是否允许覆盖,这里的None表示不允许任何人覆盖。主要覆盖什么呢?其实就是定义了是否启用下面这俩,访问控制的,如果是None则启用下面的,如果是其他则屏蔽下面的
Order allow,deny # 定义访问控制
定义允许/不允许如何 这里只能定义一种(允许|不允许)的条件, 而哪项写在后面,那项就是默认。
Allow from all 基于客户端来源的访问控制规则,这里直接Allow from all则定义了所有都允许。
比如:定义,拒绝192.168.0.1访问
Order deny,allow
deny from 192.168.0.1
比如:定义只允许 192.168.0.0/24网段访问
Order allow,deny
Allow from 192.168.0.0/24
<Directory> 结束,标志着我们的容器到头了
OK我们继续~
DirectoryIndex index.html index.html.var
指定主页面叫什么名字,有多个则按顺序一个个的检查。
Errorlog logs/error_log
错误日志的存放位置
这里保存着服务器启动的信息,和发生的错误信息
LogLevel warn
日志级别,只有高于或等于这个级别(warn)的日志才会被记录下来
LogFormat "........"
定义日志格式,每一种格式的名称叫什么。
CustomLog logs/access_log combines
定义访问日志,并以什么格式显示,这里我们用定义好的 combines 格式进行显示。
当我们修改完httpd.conf的时候,我们就可以保存退出了,然后需要运行
httpd -t 来检查一下我们的配置文件是否有语法错误。
当一切OK的了之后,我们就可以重读配置文件来使用了!
------------------------------------------------------------------------
那么我们练习一下:
实现以下应用:
1、网页存放位置:/web/html
2、访问控制列表:仅允许 192.168.0.0/24 访问,且不允许索引文件,但允许使用链接文件
3、使用common格式的访问日志
4、设定可以使用主页面文件为index.php、index.jsp和index.html;
5、设定持久连接的保持时间为3秒钟;
6、设定同时监听80和8080端口;
你是否设置成功了呢?是否遇到了这样的问题呢?
好吧,其实我忘了告诉你一个很重要的知识点:
httpd接受了selinux的控制。
我们在使用配置httpd的功能的时候,必须将selinux临时关掉,因为它会发现你企图修改一个灰常重要的文件,所以它会禁止你的~
如何关掉呢?很简单~
setenforce 0
而我们可以使用 getenforce可以查看selinux的状态
Enforcing 表示开着
Permissive 表示关了……
OK,说了这么多,这条命令输入之后,重新启动一次httpd,看看是不是可以了呢?
yum install httpd
关于httpd的软件包,主要有3种
我们安装的就是最基本的httpd工具
而httpd.i386 是我们的httpd工具
httpd-devel.i386 则是服务器软件包
httpd-manual.i386 则是各种各样的说明文档,帮助文档。
小扩展:
/etc/httpd 目录下保存着所有的配置文件
相关的日志文件都在 /var/log/httpd
相关的模块都在/usr/lib/httpd/modules
相关的pid文件都在/var/run
相关的二进制文件/usr/sbin /usr/bin
服务脚本:/etc/rc.d/init/httpd
而在/etc/httpd目录下
./conf目录:放的是我们主配置文件
./conf.d目录:保存着可以被分为配置文件一部分的,在启动时被加载的,所以这里面所有.conf结尾的文件都会被当做主配置文件加载时候的一部分一起被加载。
当我们安装好httpd,我们就可以开启这个服务来使用了!
service httpd start service httpd status
开启 httpd服务以及监听
小扩展:
nststat -tnl 我们经常使用这个命令来查看80端口是否已经开启
service httpd reload 而用这条命令在重读配置文件
开启之后我们就可以在自己的浏览器输入我们的ip试试啦!
我们看到了Redhat为我们准备的一个欢迎页,为什么会是这样的呢?
因为其实我们的正确的主页默认在:/var/www/html/目录下的index.html
当我们没有这个文件的时候,他就会自动读取/etc/httpd/conf.d/下的welcome.conf,而这个文件,则就是我们现在看到的主页啦!
==================================================
当然,仅仅能开启,能用,是不行的,我们必须要加入自己的元素,那么怎么做呢?
修改/etc/httpd/conf/httpd.conf文件!
httpd.conf的简单介绍:
首先注意这个配置文件里的所有指令都不区分大小写。但是后面跟的路径将严格区分大小写。
主要配置文件分为三大段:
Section 1 全局配置
Section 2 主服务器的配置
Section 3 关于虚拟主机的
一点一点的来看:
ServerTokens OS
服务器标示,它主要用于定义底下显示什么信息的。(初始化为 OS)
如果想看ServerTokens提供哪些指令,则需要装那个帮助文档包
ServerRoot "/etc/httpd"
主目录装在哪,这个很重要,不能改。后面的相对路径都是根据这个路径来的
Timeout 120
TCP连接的超时时间。(120秒)
KeepAlive Off
是否使用持久连接。
MaxKeepAliveRequests 100
定义最多请求多少对象
KeepAlive Timeout 15
不能让你长期占坑的超时时间。
接下来的这种形式表示它是一个“容器”这个“容器”里的参数只对被定义的一个文件/目录/IP等有效
<IfModuie prefork.c> ##比如这个就是对prefork.c这个c语言的文件有效
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256 服务器最多允许多少个用户连进来
MaxClients 256 最大并发客户端数
MaxRequestsPerChild 4000 每一个进程最多允许多少请求。
</IfModule>
Listen 80
监听在所有地址的80端口上
LoadModule 这个表明了启用什么模块
格式:LoadModule foo_module modules/mod.foo.so
其实就是 LoadModule 模块名 模块位置
Include conf.d/*.conf
这则就是指定了所有在/etc/httpd/conf.d/下的以conf结尾的文件都可以当配置文件的一部分来使用。
User apache
Group apache
这两个定义安全上下文的时候,用户/组访问进来到底以哪个身份来运行。这里默认是apache身份
ServerAdmin root@localhost
服务器管理员的邮箱地址,可以随便的自定义
ServerName www.a.org
服务器的名字。
DocumentRoot "/var/www/html"
定义默认情况下主服务器中网页文件存放在什么地方(这个是需要我们根据实际情况来修改的)
好吧,我们又遇到了一个“容器”,来看看这个容器是干什么用的。
<Directory "/var/www/html"> 定义某个特定目录在被访问的时候,应该有哪些访问特征的
Options Indexes FollowSymLinks 这里定义了 允许映像文件 和 追踪符号链接。其实这两项暂时对我们都没有什么很大的用途,可以将其改成 None
这个选项还有其他的选择比如:
SynLinksifOwnerMatch 属主匹配的时候允许访问
ExecCGI 是否允许执行这个网站的CGI脚本。
MultiViews 多功能视图 可以显示不同的页面功能。
AllowOverride None
是否允许覆盖,这里的None表示不允许任何人覆盖。主要覆盖什么呢?其实就是定义了是否启用下面这俩,访问控制的,如果是None则启用下面的,如果是其他则屏蔽下面的
Order allow,deny # 定义访问控制
定义允许/不允许如何 这里只能定义一种(允许|不允许)的条件, 而哪项写在后面,那项就是默认。
Allow from all 基于客户端来源的访问控制规则,这里直接Allow from all则定义了所有都允许。
比如:定义,拒绝192.168.0.1访问
Order deny,allow
deny from 192.168.0.1
比如:定义只允许 192.168.0.0/24网段访问
Order allow,deny
Allow from 192.168.0.0/24
<Directory> 结束,标志着我们的容器到头了
OK我们继续~
DirectoryIndex index.html index.html.var
指定主页面叫什么名字,有多个则按顺序一个个的检查。
Errorlog logs/error_log
错误日志的存放位置
这里保存着服务器启动的信息,和发生的错误信息
LogLevel warn
日志级别,只有高于或等于这个级别(warn)的日志才会被记录下来
LogFormat "........"
定义日志格式,每一种格式的名称叫什么。
CustomLog logs/access_log combines
定义访问日志,并以什么格式显示,这里我们用定义好的 combines 格式进行显示。
当我们修改完httpd.conf的时候,我们就可以保存退出了,然后需要运行
httpd -t 来检查一下我们的配置文件是否有语法错误。
当一切OK的了之后,我们就可以重读配置文件来使用了!
------------------------------------------------------------------------
那么我们练习一下:
实现以下应用:
1、网页存放位置:/web/html
2、访问控制列表:仅允许 192.168.0.0/24 访问,且不允许索引文件,但允许使用链接文件
3、使用common格式的访问日志
4、设定可以使用主页面文件为index.php、index.jsp和index.html;
5、设定持久连接的保持时间为3秒钟;
6、设定同时监听80和8080端口;
你是否设置成功了呢?是否遇到了这样的问题呢?
[root@station29 conf]# service httpd start Starting httpd: Syntax error on line 282 of /etc/httpd/conf/httpd.conf: DocumentRoot must be a directory [FAILED]
好吧,其实我忘了告诉你一个很重要的知识点:
httpd接受了selinux的控制。
我们在使用配置httpd的功能的时候,必须将selinux临时关掉,因为它会发现你企图修改一个灰常重要的文件,所以它会禁止你的~
如何关掉呢?很简单~
setenforce 0
而我们可以使用 getenforce可以查看selinux的状态
Enforcing 表示开着
Permissive 表示关了……
OK,说了这么多,这条命令输入之后,重新启动一次httpd,看看是不是可以了呢?
相关文章推荐
- windows 2008 server web服务器的搭建以及站点的简单部署
- 通过Socket实现简单web服务器功能(接收页面请求信息)不使用Tomcat!
- 【web前端自动化工作环境配置】6. 版本控制工具git与githup的区别与联系以及git的基本用法
- Tomcat 服务器配置及远程调试和不同web项目session共享方法以及设置TOMCAT的内存
- 信息安全系统设计基础实验五:简单嵌入式 WEB 服务器实验 (20135229,20135234)
- Tomcat 服务器配置用户信息,配置manager WebApp远程访问
- 20145202、20145225、20145234 《信息安全系统设计基础》实验五 简单嵌入式WEB 服务器实验
- 在Eclipse中配置Web服务器,并开发部署一个简单的web应用
- java_web初学笔记之<Tomcat服务器的简单配置>
- 正在进行调试的Web服务器进程已由Internet信息服务(IIS)终止。可以通过在IIS中配置应用程序池Ping设置来避免这一问题。有关更多详细信息,请参见“帮助”
- 在Myeclipse2017上面配置tomcat9.0服务器以及第一个web开发
- 升级到geoserver2.3,地图服务配置到其他服务器上变得简单。以及相应小bug
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
- 简单web服务器程序(配置文件读取端口)
- Hadoop-web日志信息挖掘MapReduce简单应用以及代码下载
- nodejs安装与配置(express生成简单的web服务器)
- java基础:Web服务器原理 以及 用java简单实现
- 正在进行调试的Web服务器进程已由Internet信息服务(IIS)终止。可以通过在IIS中配置应用程序池Ping设置来避免这一问题。有关更多详细信息,请参见“帮助”
- DEBIAN 下安装nfs服务器以及配置简单方法(做了些修改)
- android发送xml信息到web服务器简单例子