--
apache web服务器
两种包:一种是系统自带的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>
-------------------------
http://10.1.1.35/ule_basic/ule13_httpd.txt
最新推荐文章于 2023-12-17 19:22:41 发布