Ubuntu下Apache的配置

Ubuntu下Apache的配置

分享
标签: ubuntu  apache  分类: Operation System 2009-05-19 22:04
在网上找到的Ubuntu下Apache的配置,因为忘记记下原来网址,所以不能引用原来的地址了,还请原文的作者原谅。

在终端下使用:
$sudo /etc/init.d/apache2 force-reload

$sudo /etc/init.d/apache2 restart

就可以重启apache




1) 配置文件的位置:
位于 /etc/apache2/apache2.conf

在其他版本可能位置和名称有所不同,与apache1的位置也不同。

在/etc/apache2/下面,还有两个目录,分别是mods-available和mods-enabled,显然前者是提供的模块,后者是启动了的能正常起作用的模块。如果需要把提供的模块使起作用,需要在后者的目录下做一个前者的符号连接。

2) 缺省的主目录:
/var/www/

3) log文件的位置
log 文件的作用是很大的,Apache有二个log文件,一个是所有登陆本apache服务器的记录,/var/log/httpd- access.log,文件记录了登陆的ip,时间,浏览器类型等;另一个是联机错误记录文件, /var/log/httpd-error.log,这个文件对于调试apache参数是很有作用的。两个文件都是文本文件,可以由nano等文本编辑器 来浏览、编辑,记录文件的位置及文件名是由 httpd.conf中的相应配置来改变。

4) 启动、停止和重新启动httpd服务器的运行:
apapche2ctl start(stop restart)

这个命令比较有用,尤其是在修改配置文件之后。

5) 个人用户目录的问题:
不同于apache1,重要修改配置文件中的UserDir,apache2把个人用户作为一个模块,则需要先:

cd /etc/apache2/mods_enabled

ln -s /etc/apache2/mods_available/userdir.conf userdir.conf

ln -s /etc/apache2/mods_available/userdir.load userdir.load

apache2ctl restart

同时修改主配置文件,注释掉#UserDir public_html这句,再在用户test的主目录/home/test下面创建一个index.html文件,就可以浏览:

http://yourip/~test了。

6) 自动支持中文的问题
网页的缺省字符集有参数 AddDefaultCharset ISO-8859-1

这时候在浏览器浏览中文网页的时候,会乱码,需要手动设置编码方式为GBK或GB2312才能显示中文

去掉注释,修改为 AddDefaultCharset GB2312就可以了。

7) Apache 状态信息
在 安装完 Apache 后,我们需要不断了解服务器的系统各方面的情况。Apache2内建了server-status及server-info二种查看服务器信息的方法。 server-status是指服务器状态信息,我们可以了解Apache目前运行的情形,包括占用的系统资源、目前联机数量等。server-info 主要是显示Apache的版本、加载的模块信息等。

为使用这两项功能,我们必须先修改 /etc/apache2/apache2.conf。

首先要自己手动添加一行ExtendedStatus On,否则得到的信息会不够详细。

然后分别找到和这两段,把两段内前面的注释都去掉,并设置好访问权限。不重视安全的话,可以设置allow from all.

再:

cd /etc/apache2/mods_enabled

ln -s /etc/apache2/mods_available/info.load info.load

然后就可以在浏览器以http://hostname/server-info访问了。

8) 其他一些我认为比较重要的配置参数:
ServerRoot:指出服务器保存其配置、出错和日志文件等的根目录。

Listen:允许你绑定Apache服务到指定的IP地址和端口上,以取代默认值

DocumentRoot:你的文档的根目录。默认情况下,所有的请求从这个目录进行应答。

HostnameLookups:指定记录用户端的名字还是IP地址


假设你有一些敏感的信息要放在Intranet/Internet上,你首先可能会想到自己开发一个用户身份认证的系统来保护你的Web页面。其实Apache本身就自带了限制用户访问Web页面的机制,实现起来也不复杂。 

本文介绍在Linux+Apache上的实现方法: 

1、修改http.conf 
   假设你想控制/usr/local/apache/htdocs下各目录的不同访问权限,你可以在与之间加入一行: 
AllowOverride All 
   意思是在/usr/local/apache/htdocs下不同目录的访问权限由该目录下的.htaccess文件来控制,而且不同目录的权限策略可互相覆盖。 

2、编辑你想要控制的目录下的.htaccess文件 
   假设你的phpmyadmin目录在/usr/local/apache/htdocs下,你可以这样在phpmyadmin目录下创建一个.htaccess文件,内容如下: 

AuthUserFile /usr/local/apache/pass/pwdPhp 
AuthType Basic 
AuthName "Database Security Zone" 
ErrorDocument 401 /catchErrors/err_401.html 

require valid-user 

该文件说明了几个问题: 
(1) 用户信息存放在/usr/local/apache/pass/pwdPhp中. 
(2) 认证类型为基本型(此外还有一些其他的加密类型). 
(3) ErrorDocument 所指向的html文件. 
(4) 认证方式:用户认证(valid-user)或组认证(valid-group). 

3. 生成用户密码文件 
有一个用户密码生成程序:htpasswd(在/usr/local/apache/bin下), 它可以加入用户密码信息到指定的文件中,如/usr/local/apache/pass/pwdPhp. 我的用户密码文件内容如下: 

admin:a0Hplbj33QjV2 
guest:R0BYSO383QjVT 

4. 重起apache deamon 
/usr/local/apche/bin/apachectl restart 

5. 测试 
用IE浏览受保护的页面,如http://ip/phpmyadmin/ (可能需要refresh几次才能凑效),这时应该出现一个身份认证窗口,你需要输入用户名(admin / guest) 和密码(******)才能访问这个页面。 

Options FollowSymLinks

AllowOverride None

  Apache服务器可以针对目录进行文档的访问控制,然而访问控制可以通过两

种方式来实现,一个是在设置文件 httpd.conf(或access.conf)中针对每个目

录进行设置,另一个方法是在每个目录下设置访问控制文件,通常访问控制文件

名字为.htaccess。虽然使用这两个方式都能用于控制浏览器的访问,然而使用配置文件的方法要求每次改动后重新启动httpd守护进程,比较 不灵活,因此主要用于配置服务器系统的整体安全控制策略,而使用每个目录下的.htaccess文件设置具体目录的访问控制更为灵活方便。

  Directory语句就是用来定义目录的访问限制的,这里可以看出它的标准语法,为一个目录定义访问限制。上例的这个设置是针对系统的根目录 进行的,设置了允许符号连接的选项FollowSymLinks ,以及使用AllowOverride None表示不允许这个目录下的访问控制文件来改变这里进行的配置,这也意味着不用查看这个目录下的相应访问控制文件。

  由于Apache对一个目录的访问控制设置是能够被下一级目录继承的,因此对

根目录的设置将影响到它的下级目录。注意由于AllowOverride None的设置,使

得Apache服务器不需要查看根目录下的访问控制文件,也不需要查看以下各级目

录下的访问控制文件,直至httpd.conf(或access.conf )中为某个目录指定了

允许Alloworride,即允许查看访问控制文件。由于Apache对目录访问控制是采用的继承方式,如果从根目录就允许查看访问控制文件,那 么Apache就必须一级一级的查看访问控制文件,对系统性能会造成影响。而缺省关闭了根目录的这个特性,就使得Apache从httpd.conf中具 体指定的目录向下搜寻,减少了搜寻的级数,增加了系统性能。因此对于系统根目录设置AllowOverride None不但对于系统安全有帮助,也有益于系统性能。


Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

  这里定义的是系统对外发布文档的目录的访问设置,设置不同的 AllowOverride选项,以定义配置文件中的目录设置和用户目录下的安全控制文件的关系,而Options选项用于定义该目录的特性。

  配置文件和每个目录下的访问控制文件都可以设置访问限制,设置文件是由

管理员设置的,而每个目录下的访问控制文件是由目录的属主设置的,因此管理

员可以规定目录的属主是否能覆盖系统在设置文件中的设置,这就需要使用 啊AllowOverride参数进行设置,通常可以设置的值为:

AllowOverride的设置 对每个目录访问控制文件作用的影响

All 缺省值,使访问控制文件可以覆盖系统配置

None 服务器忽略访问控制文件的设置

Options 允许访问控制文件中可以使用Options参数定义目录的选项

FileInfo 允许访问控制文件中可以使用AddType等参数设置

AuthConfig 允许访问控制文件使用AuthName,AuthType等针对每个用户的认证机制,这使目录属主能用口令和用户名来保护目录 Limit 允许对访问目录的客户机的IP地址和名字进行限制

  每个目录具备一定属性,可以使用Options来控制这个目录下的一些访问特性设置,以下为常用的特性选项:


Options设置 服务器特性设置

All 所有的目录特性都有效,这是缺省状态

None 所有的目录特性都无效

FollowSymLinks 允许使用符号连接,这将使浏览器有可能访问文档根目录 (DocumentRoot)之外的文档 SymLinksIfOwnerMatch 只有符号连接的目的与符号连接本身为同一用户所拥有时,才允许访问,这个设置将增加一些安全性

ExecCGI 允许这个目录下可以执行CGI程序 Indexes 允许浏览器可以生成这个目录下所有文件的索引,使得在这个目录下没有index.html(或其他索引文件)时,能向浏览器发送这个目录下的文件列表

 此外,上例中还使用了Order、Allow、Deny等参数,这是Limit语句中用来根据浏览器的域名和 IP地址来控制访问的一种方式。其中Order定义处理Allow和Deny的顺序,而Allow、Deny则针对名字或IP进行访问控制设置,上例使用 allowfrom all,表示允许所有的客户机访问这个目录,而不进行任何限制。


  UserDir public_html

  当在一台Linux上运行Apache服务器时,这台计算机上的所有用户都可以有自己的网页路径,形如 http://example.org.cn/~user,使用波浪符号加上用户名就可以映射到用户自己的网页目录上。映射目录为用户个人主目录下的一个 子目录,其名字就用UseDir这个参数进行定义,缺省为public_html。如果不想为正式的用户提供网页服务,使用DISABLED作 UserDir的参数即可。


#

# AllowOverride FileInfo AuthConfig Limit

# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

#

# Order allow,deny

# Allow from all

#

#

# Order deny,allow

# Deny from all

#

#


  这里可以看到Directory的另一个用法,即可以通过简单的模式匹配方法,针对分布在不同目录下的子目录定义访问控制权限。这样设置就需要Apache服务器对每个路径进行额外的处理,因此就会降低服务器的性能,所以缺省情况并没有打开这种访问限制。  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值