http://10.1.1.35/ule_basic/ule13_httpd.txt

来源:互联网 发布:民航航线图数据下载 编辑:程序博客网 时间:2024/06/01 08:29
--
apacheweb服务器

两种包:一种是系统自带的httpd
另一种源码包apache

httpd a patchy server-->apache

网页技术: 静态页面和动态页面

静态页面: 都是格式化的标签(html超文本标记语言)组成的页面,后缀名有.html .htm

动态页面:使用动态脚本(asp,php,jsp,cgi,fastcgi),一般会连接数据库,有交互动作

常见的网站架构:

windows平台下: windows server 2003 + IIS + mssql + asp
lamp:linux+ apache + mysql + php


web服务器
iis
apache
ngnix (enginee X)
tomcat jboss weblogic --中间件


[root@li ~]# yum list |grep httpd
This system is not registered with RHN.
RHN support will be disabled.
httpd.i386 2.2.3-31.el5 installed --rhel自带的rpm版的apache包


配置文件:/etc/httpd/conf/httpd.conf
守护进程:httpd
访问协议:http(端口80)https (端口443) http+ssl(secure socket layer)

vim /etc/httpd/conf/httpd.conf
ServerTokens OS--向客户端提供一些服务器和web服务器的信息
--用这个命令可以查看一些网站的信息curl -I www.uplooking.com

ServerRoot "/etc/httpd"--存放配置文件的主目录

PidFile run/httpd.pid--指定存放pid的位置

Timeout 120--连接超时时间

KeepAlive Off--rpm版默认是off,源码版默认是on, 一次连接,多次请求
MaxKeepAliveRequests 100
KeepAliveTimeout 15

<IfModule prefork.c>--apache的prefork模式
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>

<IfModule worker.c>--apache的worker模式
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>

Listen 80--监听端口



LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
...................--apache的动态模块调用,DSO (dynamic shared objects)


Include conf.d/*.conf--子配置文件

User apache
Group apache--定义访问时的用户名和用户组,在源码版里默认是daemon

ServerAdmin root@localhost--管理邮箱


DocumentRoot "/www"--定义网站的根目录

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

DirectoryIndex index.html index.html.var--定义网站访问时的主页文件


AccessFileName .htaccess--网页加密文件

ErrorLog logs/error_log

LogLevel warn

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"


/etc/init.d/httpd start

http://127.0.0.1/--第一次没改配置文件启动httpd,访问自己,会看到一个红帽test page



例一:建立网站主页
在网站根目录下 建立一个主页文件

echo 'main page' > /var/www/html/index.html

http://127.0.0.1/--就可以看到main page的信息,也就是直接访问到主页

例二:修改网站根目录

vim /etc/httpd/conf/httpd.conf

DocumentRoot "/www"--修改网站根目录为/www

<Directory "/www">--把这个也对应的修改为/www


mkdir /www

/etc/init.d/httpd reload--重装启apache服务

echo 'new main page' > /www/index.html

http://127.0.0.1/--看到新网站根目录下的new main page信息

例三:修改主页文件类型
vim /etc/httpd/conf/httpd.conf

DirectoryIndex abcd.html index.html index.html.var--修改网站主页类型,优先找abcd.html,再去找index.html

/etc/init.d/httpd reload

echo 'abcd main page' > /www/abcd.html

elinks 127.0.0.1--现在看到的就是abcd main page,因为abcd.html是优先的

例四:
DefaultLanguage zh-CN--默认语言集为中文

LanguagePriority zh-CN en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-TW--语言优先级,把中文写到最前面



---------------------------------------------------------------------------

--关于apache的标签
directory(针对目录) file(针对文件) location(针对位置)

<Directory "/www">--对/www目录的控制开始标签
Options Indexes FollowSymLinks--允许列表形式,和符号链接
AllowOverride None--不使用.htaccess控制
Order allow,deny
Allow from all--这两名就是允许/www下的所有文件被访问
</Directory>--对/www目录的控制结束


indexes --指当找不到默认的主页文件时,就把此目录下的文件或目录以列表的形式显示出来
FollowSymLinks--允许符号链接,扩展了网站根目录
AllowOverride--指定是否允许.htaccess控制

Order allow,deny--指定先允许,再拒绝
Allow from all--指定允许所有


例五:把网站的文件修改成目录列表的形式


Options Indexes FollowSymLinks--确认网站根目录的options选项里有indexes参数

vim /etc/httpd/conf.d/welcome.conf--打开这个文件(就是红帽test page),注释掉所有,或者是删除此文件

#<LocationMatch "^/+$">
# Options -Indexes
# ErrorDocument 403 /error/noindex.html
#</LocationMatch>--这四行定义了红帽 test page,我在这里全部注释掉


/etc/init.d/httpd reload

elinks 127.0.0.1--可以看到网站根目录下的所有文件和目录是以列表形式显示


例六:
1,拒绝所有
Order deny,allow
deny from all--把对网站根目录的权限改为拒绝所有

/etc/init.d/httpd reload

elinks 127.0.0.1--所有文件都不可访问


2,拒绝所有,只允许10.1.1.35访问
Order deny,allow
deny from all
allow from 10.1.1.35

/etc/init.d/httpd reload

elinks 10.1.1.35--只有35这台机可以访问

3,当拒绝所有和允许所有都存在时
Order deny,allow
deny from all
allow from all--这个与iptables规则,和路由器的ACL不同,这是越后越生效,匹配前面的,还要再去匹配后面的规则,并且后面的规则生效

/etc/init.d/httpd reload

elinks 10.1.1.35--都可以访问



Order allow,deny
allow from all
deny from all--按照后面生效的规则,这是拒绝所有


4,允许10.1.1.0网段访问,但拒绝10.1.1.35访问
Order allow,deny
allow from 10.1.1.0/255.255.255.0
deny from 10.1.1.35


例七:file标签

<Directory "/www">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
<Files "ule01.txt">--针对/www目录下的ule01.txt文件的控制开始标志,注意,这里对大小写敏感,所以不能对象UlE01.txt,uLe.01.txt等等做出控制
order deny,allow
deny from all
</Files>--结束标志
</Directory>


/etc/init.d/httpd reload


http://10.1.1.35/ule01.txt --访问不了,别的都可以访问



例八:location 标签

[root@li ~]# mkdir /www/aa
[root@li ~]# echo 'aa main page' > /www/aa/index.ht

[root@li ~]# mkdir /www/Aa
[root@li ~]# echo 'Aa main page' > /www/Aa/index.html

[root@li ~]# vim /etc/httpd/conf/httpd.conf--加上下面一段

<Location "/aa">--这个也是大小写敏感
order deny,allow
deny from all
</Location>

/etc/init.d/httpd reload


http://10.1.1.35/aa/--这样访问是拒绝的
http://10.1.1.35/Aa/--可以看到Aa main page的字样,表示没受控制,验证了大小写敏感


例九:查看服务器的status,info

vim /etc/httpd/conf/httpd.conf--打开下面两段,并把访问权限改为能访问


<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
allow from all --我这里手动加上了allow from all,允许所有人访问此服务器的status
# Allow from .example.com
</Location>


<Location /server-info>
SetHandler server-info
Order deny,allow
Deny from all
allow from all--这个也是样,手动加上了,允许所有人访问
# Allow from .example.com
</Location>

/etc/init.d/httpd reload


http://10.1.1.35/server-status
http://10.1.1.35/server-info


--注意:location和directory如果控制的资源重合,或者相同,则location生效。


例十:口令文件验证

对/www目录进行口令验证
vim /www/.htaccess--因为是对/www目录进行口令验证,所以,在建立在/www目录下
authname "your password?"
authtype Basic
authuserfile /etc/httpd/userpasswd--注意这个文件路径不要定义到/www或者/www子目录下,防止用户通过http协议下载
require valid-user


[root@li ~]# htpasswd -c /etc/httpd/userpasswd abc--创建密码文件,-C是创建的意思,abc用户在这里与系统用户无关
New password:
Re-type new password:
Adding password for user abc
[root@li ~]# htpasswd /etc/httpd/userpasswd li--再加入验证用户就不用加-C参数
New password:
Re-type new password:
Adding password for user li
[root@li ~]# cat /etc/httpd/userpasswd --查看可以看到密码是加密的
abc:FsWq5DHYkXX4c
li:yLQGK44T6EF4s


vim /etc/httpd/conf/httpd.conf


<Directory "/www">
Options Indexes FollowSymLinks
AllowOverride all--把none改成all,表示对/www目录启用.htacess验证功能
Order allow,deny
allow from all
</Directory>


/etc/init.d/httpd reload


http://10.1.1.35/--访问时,就会弹出一个框框,要求输入用户名和密码才能访问
输入成功,第二次访问就不需要用户名和密码,需要清除网站缓存才可以

--一般情况下,不会去使用这种验证功能,因为每次访问都要去读取.htaccess,对网站性能是有消耗,可以用上面学的标签功能来替代

例十一:建立系统帐号的个人空间

vim /etc/httpd/conf/httpd.conf


<IfModule mod_userdir.c>--针对mod_userdir.c这个模块的配置
# UserDir disable--默认这是关闭系统用户的个人空间功能 ,我们在这里注释掉
UserDir public_html--打开这一项
</IfModule>

--再打开下面这一整段的注释
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>

/etc/init.d/httpd reload


[root@li ~]# cd /home/a/
[root@li a]# mkdir public_html
[root@li a]# echo 'the user room for a' > /home/a/public_html/index.html

[root@li a]# cd /home/b
[root@li b]# mkdir public_html
[root@li b]# echo 'the user room for b' > /home/b/public_html/index.html

[root@li b]# ll /home/a -d--可以看到普通用户家目录是不允许apache用户去读的
drwx------ 13 a a 4096 05-22 14:30 /home/a
[root@li b]# chmod 701 /home/a
[root@li b]# chmod 701 /home/b--我们改权限让apache用户可读



http://10.1.1.35/~a/--这样就访问到a用户空间里的主页
http://10.1.1.35/~b/--访问到b用户空间里的主页







--#################################################################################


apache的虚拟主机功能
指的就是一台服务器跑多台apache


--基于IP地址的虚拟主机

[root@li b]# vim /etc/httpd/conf/httpd.conf

<VirtualHost 10.1.1.36:80>--这一段就是一个虚拟主机的配置
# ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /www/aa--这是用http://10.1.1.36访问时的网站根目录
ServerName aa.cluster.com--这是访问的域名,但要有/etc/hosts和DNS的支持
ErrorLog logs/aa-error_log--错误日志路径
CustomLog logs/aa-access_log common--访问日志
</VirtualHost>
<VirtualHost 10.1.1.37:80>
# ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /www/bb
ServerName bb.cluster.com
ErrorLog logs/bb-error_log
CustomLog logs/bb-access_log common
</VirtualHost>

/etc/init.d/httpd restart

[root@li b]# mkdir /www/aa/
[root@li b]# mkdir /www/bb/--把虚拟主机的两个网站根目录给创建出来
[root@li b]# echo 'aa'> /www/aa/index.html

[root@li b]# echo 'bb'> /www/bb/index.html--不同的网站根目录写上不同的主页,以方便实验区分

[root@li b]# ifconfig eth0:0 10.1.1.36 netmask 255.255.255.0

[root@li b]# ifconfig eth0:1 10.1.1.37 netmask 255.255.255.0--这两个IP在服务器上要存在,如果不存在,可以虚拟出来做实验


http://10.1.1.36/--这样访问就是访问到了/www/aa目录下的index.html的内容
http://10.1.1.37/--显示/www/bb目录下的index.html的内容

http://aa.cluster.com/
http://bb.cluster.com/--要实现域名访问,必须把它们与36,37IP地址的对应写到/etc/hosts或者是DNS记录里


--上面的虚拟主机配置段还有一种写法
<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /www/bb
ServerName 10.1.1.36
ErrorLog logs/bb-error_log
CustomLog logs/bb-access_log common
</VirtualHost>



--不好的地方就是占用IP资源,但是配置方便,不需要去配置DNS,做实验时比较快捷

-----------------------------------------------------------

--基于端口的虚拟主机

[root@li b]# vim /etc/httpd/conf/httpd.conf


Listen 80
Listen 8080--多加一个监听的端口 8080

<VirtualHost 10.1.1.35:8080>--这里端口为8080
# ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /www/bb
ServerName bb.cluster.com
ErrorLog logs/bb-error_log
CustomLog logs/bb-access_log common
</VirtualHost>


/etc/init.d/httpd reload

http://10.1.1.35:8080/--这样访问就能访问到/www/bb下面的网站内容

--访问时要指定端口,如果不知道端口,就不能访问,而且端口开得越多,安全性下降


------------------------------------------------------------------


--基于域名的虚拟主机

sports.sina.com
news.sina.com
book.sina.com
car.sina.com
...............................


第一步:
配置DNS服务,加上CNAME的子域名的对应记录

IN NS li.cluster.com.
www IN A 10.1.1.35
sports IN CNAME www
news IN CNAME www--加上了这两句CNAME的记录

[root@li b]# /etc/init.d/named restart

[root@li b]# vim /etc/resolv.conf
nameserver 10.1.1.35--这里改成DNS的查找服务器为本机

[root@li b]# nslookup www.cluster.com
[root@li b]# nslookup news.cluster.com
[root@li b]# nslookup sports.cluster.com--检验这三个域名返回的IP结果都为10.1.1.35

第二步:

[root@li b]# vim /etc/httpd/conf/httpd.conf


NameVirtualHost *:80--把这一句打开注释,表示开启基于域名的虚拟主机技术


<VirtualHost *:80>
DocumentRoot /www
ServerName www.cluster.com--访问www.cluster.com就访问到/www目录
ErrorLog logs/www-error_log
CustomLog logs/www-access_log common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/sports
ServerName sports.cluster.com--访问sport.cluster.com,就访问到/www/sports目录下
ErrorLog logs/sports-error_log
CustomLog logs/sports-access_log common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/news
ServerName news.cluster.com--访问news.cluster.com,就访问到/www/news下
ErrorLog logs/news-error_log
CustomLog logs/news-access_log common
</VirtualHost>

/etc/init.d/httpd reload



第三步:
分别建立他们的网站根目录,并建立不同的主页,以方便实验区分

第四步:验证

http://www.cluster.com/
http://sports.cluster.com/
http://news.cluster.com/



--------------------------

简单的HTML主页写法

<html>
<head><center><H1>this is sports man page</H1></center> </head>
<head><center><H6>basketball</H6></center> </head>

<body>
<center>
asldjsal;ga;slgasl;gjalgjal;jgaglksalk


</center>
</body>



</html>

-------------------------





原创粉丝点击