HTTP 服务器学习
一 目录结构
1 根目录 /etc/httpd/
2 主配置文档 /etc/httpd/conf/httpd.conf
3 主目录 /var/www/html
二 httpd.conf详解
Section 1:Global Environment
1 ServerRoot “/etc/httpd” 服务器的根目录
2 PidFile run/httpd.pid 运行时候进程id文件
3 Timeout 120 指定了服务器和客户端超时时间间隔在两分钟之内自动断开连接
KeepAlive Off 是否打开apache的持续连接功能
MaxKeepAliveRequests 100 限制客户端使用同一个连接进行的请求数量
KeepAliveTimeout 15 在一次持续的连接过程中,两次请求之间的最大时间间隔
4 <IfModuleprefork.c>
StartServers 8 #指apache刚刚开启时候创建8个子进程
MinSpareServers 5 #最小空闲子进程数目
MaxSpareServers 20 #最大空闲子进程数目
ServerLimit 256
MaxClients 256 #设定同时允许的在线人数
MaxRequestsPerChild 4000 #限制每个子进程在终止前所能提出的请求数量
</IfModule>
这种格式在配置文档中页最常见
5 Listen80 监听的端口这里可以监听多个端口,只要是系统上面有效且没有被其他服务占用的端口
6 LoadModuleauth_basic_module modules/mod_auth_basic.so 这些语句是apache 启动时候加载的模块,如果我们安装了模块,可以在这里指定,让它自动加载
7 Include conf.d/*.conf 说名配置文件还包括conf.d/下面的所有conf文件
8
User apache
Group apache 运行时候是以apache身份运行
Section 2: ‘Main‘ server configuration
1 [email protected] 服务器管理员
2 ServerName ··· 服务器名称
3 DocumentRoot “/var/www/html”安装时候网站根目录
我们可以把自己的网站直接放置到此目录下
4 UseCanonicalName Off 指定apache服武器如何构造url地址,服务器名和服务器端口为Off时候,apache使用客户端提供的主机名和端口号,为On时候apache使用ServerName指定的值
5 <Directory />
Options FollowSymLinks
AllowOverride None
Order Deny,Allow
Allow from all
</Directory>
这是一种在配置脚本里面最常见的格式,这里定义了目录的访问控制限制
Options Indexes FollowSymLinks 定义目录可以支持目录浏览,符号连接
Deny allow 语句可以限制目录的可访问性,比如我们可以把all换成IP或者域名之类的,
站点目录访问控制
6 AllowOverrideNone/All 不启用身份验证//全部启用身份验证控制
启用身份验证时候必须有效的用户输入用户名密码之后才可以访问到
站点。增加了站点的安全性
这里启用身份验证AllowOverrideAll
AccessFileName .htaccess 指定验证的文件名
我们必须在站点主目录下面编辑.htaccess文件格式如下
Vi .htaccess
authuserfile 路径名称
authtype basic
authname “说明文字”
require valid-user
eg:
cd /var/www/html
vi .htaccess
authuserfile/var/www/html/.htpasswd #验证文件
authtype basic #启用基本验证类型
authname “Pleaseinput your name and passwd”
require valid-user #所有有效用户都可访问
.htpasswd 文件产生方法
htpasswd –c .htpasswd guomin 输入密码第一次文件不存在用-c参数创建
这样就创建了guomin一个有效的帐户
htpasswd .htpasswd zhangsan 输入密码以后就直接添加,不用-c参数
创建zhangsan帐户
讲解:这里的require字段有三种参数
1) user 2) group 3) valid-user
如require user user1 user2 即user1和user2具有目录访问权
Require group user1 user2 只有隶属于这两个用户组的用户可以访问
Require valid-user 所有有效的用户都可以访问
个人站点服务:
UserdirDisable 把这一行注释掉,开启个人站点服务
UserDirpublic_html 打开这一行
个人站点就是个人家目录下边的public_html下边的站点
我们创建账号,在家目录下边添加文件夹public_html 编辑网页,
把家目录开启读取权,访问http://192.168.1.1/~username即可
在这里我们可以做别名记录,这样直接访问主地址下面的别名记录就可以了
Alias /user “/home/user/public_html”
则直接访问http://192.168.1.1/username/即可访问得到
Directory Indexindex.htm 读取目录里的默认文件
三虚拟主机配置
1 基于ip地址
多个ip 多个名字 80 多个站点
192.168.1.100 www.guomin.com 80 /var/www/html
192.168.1.101 tec.guomin.com 80 /var/www/tec
192.168.1.102 mkt.guomin.com80 /var/www/mkt
代码如下
<VirtualHost192.168.1.1:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html
ServerName www.guomin.com
ErrorLog /var/www/html/error_log
CustomLog /var/www/html/access_log common
</VirtualHost>
<VirtualHost192.168.2.1:80>
ServerAdmin [email protected]
DocumentRoot /var/www/tec
ServerName tec.guomin.com
ErrorLog /var/www/tec/error_log
CustomLog /var/www/tec/access_log common
</VirtualHost>
<VirtualHost192.168.3.1:80>
ServerAdmin [email protected]
DocumentRoot /var/www/mkt
ServerName mkt.guomin.com
ErrorLog /var/www/mkt/error_log
CustomLog /var/www/mkt/access_log common
</VirtualHost>
配置网卡,子接口地址
建立dns服务器,配置好这几台主机(这里还没介绍DNS,所以可以直接在/etc/hosts文件内部加入映射关系,因为域名的解析是先去找这个文件,如果找不到,才去DNS服务器查询,默认的定义查询顺序在/etc/nsswitch.conf 文件内部定义,有兴趣可以研究······)
在/var/www/下边分别建立对应的站点的主目录,主页文件。
2 基于端口
少量ip 少量名字 多个端口 多个站点
192.168.1.100 www.guomin.com 80 /var/www/html
www.guomin.com 800 /var/www/tec
www.guomin.com 8000 /var/www/mkt
代码如下
<VirtualHost192.168.1.1:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html
ServerName www.guomin.com
ErrorLog /var/www/html/error_log
CustomLog /var/www/html/access_log common
</VirtualHost>
<VirtualHost192.168.1.1:800>
ServerAdmin [email protected]
DocumentRoot /var/www/tec
ServerName www.guomin.com
ErrorLog /var/www/tec/error_log
CustomLog /var/www/tec/access_log common
</VirtualHost>
<VirtualHost192.168.1.1:8000>
ServerAdmin [email protected]
DocumentRoot /var/www/mkt
ServerName www.guomin.com
ErrorLog /var/www/mkt/error_log
CustomLog /var/www/mkt/access_log common
</VirtualHost>
在配置文档搜索Listen字段
加入两行
Listen 80
Listen 800
Listen 8000 这的的端口可以随便指定,但是一定要和VirtualHost 字段中的端口对应
在/var/www/下边分别建立对应的站点的主目录,主页文件。
3 基于主机头
这里要打开NameVirtualHost 字段
NameVirtualHost 192.168.1.100:80
少量ip 多个名字同样端口 多个站点
192.168.1.100 www.abc.com /var/www/html
tec.abc.com /var/www/tec
mkt.abc.com /var/www/mkt
代码如下
<VirtualHost192.168.1.1:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html
ServerName www.guomin.com
ErrorLog /var/www/html/error_log
CustomLog /var/www/html/access_log common
</VirtualHost>
<VirtualHost192.168.1.1:80>
ServerAdmin [email protected]
DocumentRoot /var/www/tec
ServerName tec.guomin.com
ErrorLog /var/www/tec/error_log
CustomLog /var/www/tec/access_log common
</VirtualHost>
<VirtualHost192.168.1.1:80>
ServerAdmin [email protected]
DocumentRoot /var/www/mkt
ServerName mkt.guomin.com
ErrorLog /var/www/mkt/error_log
CustomLog /var/www/mkt/access_log common
</VirtualHost>
建立域名的映射关系,这里tec.guomin.com mkt.guomin.com 都应为www.guomin.com的别名记录,而不是A记录。搭建好网络直接在浏览器输入域名如www.guomin.commkt.guomin.com进行访问
Apache配置支持cgi动态网站(最早期的网站好多都是基于cgi方式架设起来的。现在不是很流行,单是这项技术很好用,方便,快捷,不需要对动态网站开发语言如PHP JSP .net,直接脚本)
开发cgi最常用的就是perl了
安装perl
Rpm –qa|grep perl
Rpm –qa|grepmod_perl
没有的话安装
在主配置文件httpd.conf加入
LoadModuleperl_module modules/mod_perl.so
Alias /cgi-bin/"/var/www/cgi-bin/" 为/var/www/cgi-bin/目录做别名
AddHandlerperi-script .cgi .pl .pm 添加文件类型
<Directory"/var/www/cgi-bin">
AllowOverride None
SetHandler perl-script
PerlHandler ModPerl::Registry
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
设置/var/www/cgi-bin/的访问控制,我们可以直接把我们的perl脚本放置到此目录下,让网页直接调用这些脚本就OK!