Apache HTTP配置
apache是世界排名第一的web服务器, 根据netcraft(www.netsraft.co.uk)所作的调查,世界上百分之五十以上的web服务器在使用apache. 1995年4月, 最早的apache(0.6.2版)由apache group公布发行. apache group 是一个完全通过internet进行运作的非盈利机构, 由它来决定apache web服务器的标准发行版中应该包含哪些内容. 准许任何人修改隐错, 提供新的特征和将它移植到新的平台上, 以及其它的工作. 当新的代码被提交给apache group时, 该团体审核它的具体内容, 进行测试, 如果认为满意, 该代码就会被集成到apache的主要发行版中.
########################################
1) 几乎可以运行在所有的计算机平台上.
2) 简单而且强有力的基于文件的配(httpd.conf).
3) 支持通用网关接口(cgi)
4) 支持虚拟主机.
5) 支持http认证.
6) 集成perl.
7) 集成的代理服务器
8) 可以通过web浏览器监视服务器的状态, 可以自定义日志.
9) 支持服务器端包含命令(ssi). 11) 支持安全socket层(ssl).
10) 具有用户会话过程的跟踪能力.
11) 支持fastcgi 14) 支持java servlets. ...
缺点(maybe it is, maybe not): apache没有为管理员提供图形用户接口(gui), 但最近的apache版本已经有了gui的支持. 以下是apache的许可证
#####################################
查看是否安装了apache#rpm �Cqa httpd
#mount /mnt/cdrom
#cd /mnt/cdrom/RedHat/RPMS
#rpm �Civh httpd-******.i386.rpm
#rpm �Civh httpd-manual******.rpm
启动apache
#service httpd start
#service httpd stop
#service httpd restart
#setup#ntsysv
#################################################
查看配置文件:
#grep �Cv “#”
/etc/httpd/conf/httpd.conf
#配置文件批令分为三个基本组
1. 控制Apache server的全局操作的指令(全局环境变量).
2.配置主服务或者默认服务的指令,它针对那些被虚拟主机以外的请求作出响应.
3. 虚拟主机设置,这使得发往不同的ip或者主机名的请求可以被子同一个Apache服器处理
##############################################
这部分的指令将影响整个Apache服器,
例如它所能处理的并发请求数或者它在
哪里能够找到其配置文件
ServerRoot “/etc/httpd”
指定包含httpd服务器文件的目录
Timeout 300
Timeout定义客户程序和服务器连接的超时间隔,超过这个时间间隔如果仍未收到客户的数据,服务器将断开与客户机的连接
KeepAlive On
是否支持持久联接(而不是每个请求建一个连接),设off关闭此功能
MaxKeepAliveRequests 100
在持久连接期间,所允许的最大请求数量。设为0表示不作限制
建议设为较高的数,以提高性能
KeepAliveTimeout 15
KeepAliveTimeout测试一次连接中的多次请求传输之间的时间.
如果服务器已经完成了一次请求,但一直没有接收到客户程序的下一次请求,在间隔超过了这个参数设置的值之后,服务器就断开连接。
StartServers 8
系统启动时的守护进程数
MaxClients 150
服务器的能力毕竟是有限的,不可能同时处理无限多的连接请求,因此参数就用于规定服务器支持的最多并发访问的客户数,如果这个值设置得过大,系统在繁忙时不得不在过多的进程之间进行切换来为太多的客户进行服务,这样对每个客户的反应就会减慢,并降低了整体的效率。如果这个值设置的较小,那么系统繁忙时就会拒绝一些客户的连接请求。当服务器性能较高时,就可以适当增加这个值的设置。对于专业网站,应该使用提高服务器效率的策略,因此这个参数不能超过硬件本身的限制,如果频繁出现拒绝访问现象,就说明需要升级服务器硬件了。对于非专业网站,不太在意对客户浏览器的反应速度,或者认为反应速度较慢也比拒绝连接好,就也可以略微超过硬件条件来设置这个参数。
Listen
Listen参数可以指定服务器除了监视标准的80端口之外,还监视其他端口的 HTTP请求。由于linux系统可以同时拥有多个IP地址,也可以指定服务器只听取对某个IP地址的HTTP请求。如果没有配置这一项,则服务器会回应对所有IP的请求。
-----------------------------------------------------------------------------------------------------
服务配置:
Apache服务器需要各种设置,以定义自己使用各种参数以提供Web服务。对于使用虚拟主机的情况,除了在虚拟主机的定义项中覆盖的设置之外(有的设置必须重新定义),这里的设置也是虚拟主机的缺省设置。
配置文件中应该改变的也许只有ServerAdmin, 这一项用于配置WWW服务器的管理员的email地址,这将在HTTP服务出现错误的条件下返回给浏览器,以便让Web使用者和管理员联系,报告错误。习惯上使用服务器上的webmaster作为WWW服务器的管理员,通过邮件服务器的别名机制,将发送到webmaster 的电子邮件发送给真正的Web管理员。
ServerName new.host.name
如果你没有注册DNS名字,请在这里输入IP地址。
缺省情况下,并不需要指定这个ServerName参数,服务器将自动通过名字解
析过程来获得自己的名字,但如果服务器的名字解析有问题(通常为反向解析不 正确),或者没有正式的DNS名字,也可以在这里指定IP地址。
DocumentRoot “/var/www/html"
DocumentRoot定义这个服务器对外发布的超文本文档存放的路径,客户程序请求的UR L就被映射为这个目录下的网页文件。这个目录下的子目录,以及使用 符号连接指出的文件和目录都能被浏览器访问,只是要在URL上使用同样的相对目录名
#######################################
组织和管理站点内容
1,挂装新的磁盘分区到文档目录
2,在文档目录下使用符号链接使文档目录之外的内容被访问.
3,使用别名机制使文档目录之外的内容被访问.
1,创建符号链接对站点内容进行扩展
#cd /var/www/html
#ln �Cs /usr/share/doc doc
测试:
http://192.168.6.226/doc/
2,使用别名机制:
#vi /etc/httpd/conf/httpd.conf
//添加如下配置
Alias /ftp /var/ftp/pub
<Directory “/var/ftp/pub”>
AllowOverride None
Options Indexes
Order allow, deny
Allow from all
</Directory>
###########################################
用户为创建自己的站点需要执行的步骤:
$whoami
$cd
$mkdir public_html
//创建目录 public_html
$cd ..
$chmod 711 aididu
$cd ~/public_html
//创建index.html
$vi index.html
Hello ! Network 3 students !!!!
$cat index.html在客户端进行验证
地址栏中输入:
http://192.168.5.73/~aididu/home/aididu/public_html/sss
###########################################
访问控制和认证授权:
1 访问控制
Apache用下面3个指令配置访问控制
Order:用于指定允许和拒绝访问规则的先后顺序
Deny: 定义拒绝访问控制列表
Allow:定义允许访问控制列表
1,Order Allow,Deny:在拒绝访问之前先执行允许访问规则.
2,Order Deny, Allow:在允许访问之前先执行拒绝访问规则.
3Deny和Allow 指令后面需要跟访问控制列表,
他们的形式如下:All:表所有客户域名:表该域名下的所有客户
IP地址网络/子网掩码:192.168.3CIDR:192.168.2.0/24
例如:
Order Deny,Allow
Deny from all
Allow from aididu.com
192.168.5.73
Order Allow,DenyAllow from jamond.netDeny from aididu.jamond.com
_________________________________________________
访问控制列表配置举例
#vi /etc/httpd/conf/httpd.conf将如下行前的”#”去掉
#<location /server-info>
SetHandler server-info
Order deny,allow
Deny from all
Allow from 192.168.5.58
</Location>
重启httpd
测试:
在地址栏中输入
http:// 192.168.5.73/server-info/
修改为别的IP后重新输入
###################################
认证和授权:
1,认证:两种认证,
基本(Basic)认证和摘要(digest)认证Digest 比Basic更加安全,但目前有部分浏览器并不支持digest,因此通用为basic认证
认证的配置指令:
Apache服务器配置用户认证和认证需要使用如下的配置指令。其中表1列出了可用的认证配置指令。
指令
指令语法
说明
AuthName AuthName领域名称 定义受保护领域的名称
AuthType AuthType Basic或Digest 定义使用的认证方式
AuthGroupFile AuthGroupFile文件名 指定认证口令文件位置
AuthUserFile AuthUserFile文件名 指定认证组文件的位置
2授权:
当使用认证指令配置了认证之后,还需要为指定的用户或组进行认证。为用户或组进行认证的指令是Require。Require指令的三种使用格式如表2中的说明。
Apache的认证配置指令的使用格式
指令语法格式
说明
Require user 用户名 [用户名] … 认证给指定的一个或多个用户
Require group 组名 [组名] … 认证给指定的一个或多个组
Require valid-user
认证给认证口令文件中的所有用户
管理认证口令文件和认证组文件:
1,创建新的认证口令文件.
#htpasswd -c 认证口令文件 用户名
2修改认证口令文件
# htpasswd 认证口令文件 用户名
3认证口令文件的格式
用户名:加密的口令
4管理认证组文件
组名:用户名 用户名
认证授权配置举例:
#vi /etc/httpd/conf/httpd.conf添加如下的配置行
<Directory
“/var/www/html/private”>
//不使用.htaccess文件
AllowOverride None
AuthType Basic
AuthName “jamond”
AuthUserFile /var/www/passwd/jamond
Require valid-user</Directory>
//创建认证口令文件,并添加两个用户
#mkdir /var/www/passwd
#cd /var/www/passwd
#htpasswd �Cc jamond aididu输入密码
#htpasswd jamond kkk输入密码
将认证口令文件的属主改为apache
#chown apache.apache jamond
重新启动httpd
测试:
在地址栏中输入:http://192.168.5.73/private/
出现对话框即可,输入密码,验证成功!
------------------------------------------------------------------------------------------------------
访问控制,认证和授权的综合运用:
1,对访问控制和认证授权进行控制
在对一个容器(Directory或Files或Location)同时配置了访问控制和认证授权之后,这两类指令是否都会起作用,这将由一个指令进行控制,它就是Satisy.该指令只有在对一个容器同时设置了访问控制和认证授权后才起作用.它有两种可能的取值.
A,Satisfy all:访问控制和认证授权两类指令均起作用.
B,Satisfy any:只要一类指令满足条件即可访问.
举例说明Satisfy指令的使用:
#vi /etc/httpd/conf/httpd.conf
<Location /server-status>
SetHandleer server-status
Order deny,allow
Deny from,allowAllow from 192.168.6
AuthType BasicAuthName “Admin”
AuthUserFile /var/www/passwd/jamond
AuthGroupFile /var/www/passwd/admingrp
require group admin
Satisfy all
</Location>
#vi /var/www/passwd/admingrp
admin: osmod jim
#chown apache.apache
/var/www/passwd/admingrp
#service httpd restart
测试:
http://192.168.6.252/server-status
############################################
在.htaccess 文件中配置认证和授权:
# vi /etc/httpd/conf/httpd.conf
#<Directory “/var/www/html/private”>
//允许在.htaccess文件中使用认证和授权
AllowOverriden ArthConfig
</ Directory >
重起httpd继续使用上例中生成的认证口令文件
在/var/www/html 下生成.htaccess文件
#vi .htaccess
AuthType Basic
AuthName “jamond”
AuthUserFile
/var/www/passwd/jamond
//授权给用户xiaogang和ddd
require user xiaogang ddd
同上例题进行客户端测试
chown [-R] <用户组> <文件或目录>
例:
#chown root user1更改user1的属主为root
#chown osmond.osmond user2
#chown �CR osmond.osmond user3
Umask 021 144
#umask [u1 u2 u3]
#############################################
配置LAMP环境:
1、LAMP是指:在linux平台上的Apache网站服务器、MySQL数据库以及PHP、Perl和Python编程语言的结合
几个官方网站:
www.mysql.com
www.php.org
www.perl.org
www.python.org
2、安装MySQL和PHP3、设置MySQL 的root用户口令并启动
修改Mysql管理员口令第一次访问数据服务器的用户只能是Mysql管理员,即root用户,因为默认情况下root用户密码为空则直接可以进入
#mysql
…………………………………….
Mysql>
很明显这种状态是很不安全的哦!因此我们要尽快修改mysql管理员的密码
#mysqladmin �Cu root password
例如:将root用户的密码设置为:123456
# mysqladmin �Cu root password 123456
而要退出和进入数据库的指令分别是:
>quit
#mysql [-h 主机名或IP地址] [-u 用户名] [-p]例如:要以管理员的身份连接到本机上的mysql。
#mysql �Cu root �Cp
Enter password:
…………………………………………
Mysql>
那么我们要 修改原有的root用户密码时该怎么做呢?
#mysqladmin �Cu root �Cp password
例如:将root用户密码再修改为“1234567”
# mysqladmin �Cu root �Cp password 1234567
回车后
Enter password :此处输入旧密码
OK !
启动数据库:service mysqld restart
----------------------------------------------------------------------------------------------------
在apache下为执行PHP所做的配置:
1、配置mod_php模块运行PHP操作步骤:
#cd /etc/httpd/conf.d
#grep -v “#” php.conf
LoadModule php4_module
modules/libphp4.so
<Files *.php>
SetOutputFilter PHP
SetInputFilter PHP
LimitRequestBody 524288
</Files>
DirectoryIndex index.php
1,接下来重新启动httpd
#service httpd restart
2,
在/var/www/html 目录下编写一个测试脚本
#cd /var/www/html
#echo “<? Phpinfo()?>”> info.pnp
使用浏览器进行测试
在地址栏中输入
http://192.168.5.19/info.php
########################################
phpMyAdmin的安装配置过程:
#cd /var/www/html/
#tar �Cjxvf phpMyAdmin-2.6.4-php.tar.bz2
#rm �Cf phpMyAdmin-2.6.4-php.tar.bz2
#mv phpMyAdmin-2.6.4 phpMyAdmin
编辑phpMyAdmin的配置文件
#cd phpMyAdmin
#vi config.inc.php
修改下面两行
$cfp[‘servers’] [$i] [‘auth_type’] = ‘ http‘;
$cfp[‘servers’] [$i] [‘password’] = ‘1234567‘;
#service httpd restart
#service mysqld restart
http://192.168.5.87/phpMyAdmin
##########################################
LAMP的应用举例:
在安装一个LAMP的应用软件之前首先要安装好Apache,PHP和MySQL
下面我们以Moodle为例讲述LAMP应用软件的安装过程
过程如操作所示:
Section3:virtual Hosts
虚拟主机
虚拟主机是在一台Web服务器上,可以为多个单独域名提供Web服务,并且每个域名都完全独立,包括具有完全独立的文档目录结构及设置,这样域名之间完全独立 .
基于端口的虚拟主机配置:
#cd /etc/httpd
#echo “include vhost-conf.d/*.conf”>> conf/httpd.conf
#mkdir vhost-conf.d
#编辑子配置文件
# vi vhost-conf.d/ip-vhost12.conf
Listen 6666
Listen 8888
<VirtualHost 192.168.6.252:6666>
DocumentRoot /www/ip-vhost1
</VirtualHost>
<VirtualHost 192.168.6.252:8888>
DocumentRoot /www/ip-vhost2
</VirtualHost>
#mkdir �Cp /www/ip-vhost1
#mkdir �Cp /www/ip-vhost2
# cd /www/ip-vhost1
#vi index.html
Ip-vhost1
#cd /www/ip-vhost2
#vi index.html
Ip-vhost2
#apachectl configtest
Syntax OK
#service httpd restart
测试:
http://192.168.6.252:6666
http://192.168.6.252:8888
########################################
基于ip的虚拟主机:
在一个网卡上配置多个ip.
#ifconfig eth0:0 192.168.6.77 up
#ifconfig eth0:1 192.168.6.88 up
#cd /etc/httpd
#vi vhost-conf.d/ip-vhost34.conf
//添加如下配置行:
<VirtualHost 192.168.6.77:80>
DocumentRoot /www/ip-vhost3
</VirtualHost>
<VirtualHost 192.168.6.88:80>
DocumentRoot /www/ip-vhost4
</VirtualHost>
//创建根文档目录各自的主页
#mkdir -p /www/ip-vhost3
#mkdir -p /www/ip-vhost4
#cd /www/ip-vhost3
#vi index.htmlip-vhost3
#cd /www/ip-vhost4
#vi index.html
ip-vhost4
#apachectl configtest
Syntax Ok
#service httpd restart
测试:
http://192.168.6.77
http://192.168.6.88
举例1
使用192.168.0.17和192.168.0.18两个ip地址创建基于ip地址的虚拟主机,其中ip地址为
192.168.0.17对应的主目录为/usr/www/web1
192.168.0.18对应的主目录为
/usr/www/web2
步骤:
#vi /etc/httpd/conf/httpd.conf
在文本的最后一行加入如下配置行
<VirtualHost 192.168.1.17>
ServerName 192.168.1.17:80
DocumentRoot "/usr/www/web1"
DirectoryIndex index.html
ErrorLog logs/web1/error_log
CustomLog logs/web1/access_log
combined
</VirtualHost>
<VirtualHost 192.168.1.18>
ServerName 192.168.1.18:80
DocumentRoot "/usr/www/web2"
DirectoryIndex default.html
ErrorLog logs/web2/error_log
CustomLog logs/web2/access_log
combined</VirtualHost>