HTTP 服务器:
需求支持:
l TR143 Upload Diagnostic (使用put) ,Download Diagnostic (get)
l TR69 RPC Upload ,Download.
安装配置:
1 Fedora 10 都自带了Apache,如果要自行安装可以使用:
------添加删除软件----选择相应的服务包
2 配置:
l 测试www服务器是否安装:http:127.0.0.1
l Upload Diagnostic 使用put 方法进行测试,所以利用webdav配置httpd服务,使其满足需要:
第一步:在/var/www/html 下面再建立一个speed_test目录:
mkdir -p /var/www/html/speed_test
chmod 777 /var/www/html/speed_test
第二步 在WebDAV 模块添加以下代码:
# WebDAV module configuration section.
<IfModule mod_dav_fs.c>
# Location of the WebDAV lock database.
DAVLockDB /var/lib/dav/lockdb
<Location "/speed_test">
DAV On
<LimitExcept GET HEAD OPTIONS PUT>
Allow from all
</LimitExcept>
</Location>
</IfModule>
第三步:http:127.0.0.1/speed_test/ 即可用于upload diagnostic
启动apache: /etc/init.d/httpd start /restart /stop.
开头的时候不是讲过 CentOS 的 Apache 预设首页放置在 /var/www/html 这个目录吗? 为什么呢?因为 DocumentRoot 这个设定值的关系啦!此外,由于 Apache 允许 Internet 对我们的资料进行浏览, 所以你当然必须要针对可被浏览的目录进行权限的相关设定,那就是 <Directory> 这个设定值的重要特色!先让我们来看看预设的主网页设定吧! DocumentRoot "/var/www/html" <==可以改成你放置首页的目录! # 这个设定值重要到不行,因为他规范了 WWW 服务器主网页所放置的『目录』所在。 # 这个设定值是可以被随意更动的,不过更动之后你必须要针对该目录进行权限设定, # 也就是底下要讲到的 Directory 这个设定值来规范目录的权限才行喔!
# 这个设定值是针对 WWW 服务器的『预设环境』而来的,因为针对『/』的设定嘛! # 建议可以设定的严格一点,就是保留上述的预设设定即可 (已经很严格了!)
|
§ 这个地方则是针对 /var/www/html 这个目录来设定权限啦!就是咱们首页所在目录的权限。 主要的几个设定项目的意义是这样的:
Options:
表示这个目录内能够进行的动作,亦即是权限设定啦!主要的设定值:
Indexes:
如果在此目录下找不到『首页档案』时, 就显示整个目录下的文件名称,『首页档案』与 DirectoryIndex 设定值有关。
§ FollowSymLinks:
让在此目录下的连结档可以连结出此目录外。 一般来说被 chroot 的程序将无法离开其目录,也就是说预设的情况下,你在 /var/www/html 底下的连结档只要连结到非此目录的其他地方,则该连结档预设是失效的。 但使用此设定即可让连结档有效的离开本目录。
§ ExecCGI:
让此目录具有执行 CGI 程序的权限,非常重要!举例来说,目前常见的 OpenWebMail 使用了很多的 perl 的程序, 你要让 openwebmail 可以执行,就得要在 openwebmail 程序所在目录 拥有 ExecCGI 的权限。注意,不要让所有目录均可使用 ExecCGI !
§ Includes:
让一些 Server-Side Include 程序可以运作。建议可以加上去!
§ MultiViews:
这玩意儿有点象是多国语言的支持,与语系资料 (LanguagePriority) 有关。最常见在错误讯息的回报内容,在同一部主机当中, 可以依据用户端的语系而给予不同的语言显示呢!预设在错误回报讯息当中存在, 你可以检查一下 /var/www/error/ 目录下的资料喔!
1
§ AllowOverride:
表示是否允许额外设定档 .htaccess 的权限复写?我们可以在 httpd.conf 内设定好所有的权限,不过如此一来若使用者自己的个人网页想要修改权限时将会对管理员造成困扰。因此 Apache 预设可以让使用者以目录底下的 .htaccess 档案内复写 <Directory> 内的权限设定。 这个项目则是在规定 .htaccess 可以复写的权限类型有哪些。常见的有:
ALL:全部的权限均可被复写;
§ AuthConfig:仅有网页认证 (账号密码) 可复写;
§ Indexes:仅允许 Indexes 方面的复写;
§ Limits:允许使用者利用 Allow, Deny 与 Order 管理可浏览的权限;
§ None:不可复写,亦即 .htaccess 档案失效去!
1 这部份我们在进阶设定时会再讲到的!
§ Order:
决定是否可被浏览的权限设定啦!主要有两种方式:
deny,allow:以 deny 优先处理,但没有写入规则的则预设为 allow 喔。
§ allow,deny:以 allow 为优先处理,但没有写入规则的则预设为 deny 喔。
1 所以在预设的环境中,因为是 allow,deny 所以预设为 deny (不可浏览), 不过在下一行有个 Allow from all ,allow 优先处理,因此全部(all) 用户端皆可浏览啦!这部份我们会在进阶安全设定当中再提及低。
除了这些资料之外,你还得要知道的是底下这个玩意儿:
|
浏览权限的设定动作 (order, limit)
咱们的 Apache 设定档内就可以指定限制浏览来源的动作了!我们可以针对来源 IP 或网域来限制呢! 就以 Order 这个限制配合 Allow 及 Deny 来处理即可。再次的强调一下:
· Order deny,allow:以 deny 优先处理,但没有写入规则的则预设为 allow 。常用于:拒绝所有,开放特定的条件;
· Order allow,deny:以 allow 为优先处理,但没有写入规则的则预设为 deny。 常用于:开放所有,拒绝特定的条件。
· 如果 allow 与 deny 的规则当中有重复的,则以预设的情况 (Order 的规范) 为主。
举例来说,如果我们的首页想要让 192.168.1.11 及政府部门无法连线,其他的则可以连线, 由上面的说明你可以知道是开放所有拒绝特定的条件,所以你可以这样做设定:
|
注意一下,因为 Order 是『 allow,deny 』,所以所有规则当中属于 allow 的都会被优先提到最上方, 为了避免这个设计上的困扰,所以建议你直接将 allow 的规则写在最上方。 而由于规则当中 192.168.1.11 隶属于 all 当中 (all 代表所有的嘛!),因此这个设定项目则为预设值, 亦即为 deny 啦!那个 .gov.tw 的设定项目也一样。如果是底下的模样:
|
虽然 deny 会先挪到上方来处理,不过因为 192.168.1.11 是在 all 的范围内,所以发生重复, 因此这个设定值将会以预设的 allow 为主,因此就无法限制住这个 192.168.1.11 的存取啦! 这边很容易搞错的吶!鸟哥也是常常搞到头昏脑胀的~
例题: 这个案例当中有点象是『拒绝所有连线,仅接受特定连线』的样子,因此可以使用 deny,allow 那个情况, 所以你可以这样做:
|
事实上,如果想要让某个网域或者是 IP 无法浏览的话,最好还是利用 iptables 来处理比较妥当。 不过如果仅是某些重要目录不想让人家来查阅的话,那么这个 allow, deny 与 order 的设定资料可就很值得参考了。
而除了这个 order 设定值之外,我们还有个限制用户端能进行的动作的设定喔! 那就是 Limit 这个设定啦!举例来说,如果我们想要让使用者在 /var/www/html/lan 这个目录下仅能进行最阳春的 GET, POST, OPTIONS 的功能,除了这几个之外的其他功能通通不允许, 那么你可以这样做:
|
透过 Limit 与 LimitExcept 就能够处理用户端能够进行的动作啦!也就有办法针对你的资料进行细部保护囉。 不过这些保护真的很细部,一般小网站大致上用不到 Limit 这个玩意儿说。
安装VSFTP:
l 安装:在线安装 yum install vsftp
l 系统--管理--服务器设置--服务 可以设置服务器在计算机开启时自动运行。
· 建立上传/下载目录
在上列的数据当中,实际上匿名使用者仅可进行下载的动作而已。如果你还想让匿名者可以上传档案或者是建立目录的话, 那你还需要额外增加一些设定才行:
|
如果仍然不能访问FTP:
查看防火墙设置:系统--管理--防火墙
配置Download Upload
1 可以利用 Apache 中的Alias 把FTP 的Upload 目录设置为http Download的目录:
Alias /jack/ /var/ftp/upload/
<Directory /var/ftp/upload>
Options All Indexes FollowSymLinks
AllowOverride all
Order allow,deny
Allow from all
</Directory>
用于Download firware
Alias /icons/ "/var/www/icons/"
<Directory "/var/www/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
# 这个 Alias 很有趣的!是制作出类似连结档的东西啦!
# 当你输入 http://localhost/icons 时,其实你的 /var/www/html 并没有 icons
# 那个目录,不过由于 Alias 的关系,会让该网址直接连结到 /var/www/icons/ 下。
# 这里面预设有很多 Apache 提供的小图示喔!而因为设定了一个新的可浏览目录,
# 所以你瞧,多了个 <Directory> 来规定权限了吧! ^_^
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
# 与上面的 icons 类似,不过这边却是以 ScriptAlias 为设定值!
# 这个设定值可以指定该目录底下为『具有 ExecCGI 』能力的目录所在喔!
# 所以你可以将类似 Open webmail 的程序给他放置到 /var/www/cgi-bin 内,
# 就不必额外设定其他的目录来放置你的 CGI 程序喔!
配置PHP
l 用于upload configuration 文件
l 安装: yum install php
l 测试安装是否成功:
那个『 <?php ... ?> 』是 PHP 模块的网页嵌入式程序语法,在这中间的就是 PHP 的程序码啦。 那个『 phpinfo() 』是特殊的 PHP 函数,可以显示出目前你 WWW 服务器内 PHP 模块的相关核心资料。 写完之后立刻以浏览器再查阅这个档案看看.
在/var/www/html 目录下面建立一个php 文件,用于测试Upload,上传的内容存于myputfile.xml文件中。
<?php
/* PUT data comes in on the stdin stream */
$putdata = fopen("php://input", "r");
/* Open a file for writing */
$fp = fopen("myputfile.xml", "w");
/* Read the data 1 KB at a time
and write to the file */
while ($data = fread($putdata, 1024))
fwrite($fp, $data);
/* Close the streams */
fclose($fp);
fclose($putdata);
?>
约略谈了谈 httpd.conf 之后,你应该会发现一件事情,那就是『我们怎么没有讲到 PHP 这个模块的设定啊?』 不是不讲啦!而是因为目前 Apache 很聪明的将一些重要模块给他拆出来放置到 /etc/httpd/conf.d/ 这个目录下了, 所以我们必须要到该目录下才能了解到某些模块是否有被加入啊!底下先来瞧瞧吧!
|
我们主要来看看关于 PHP 的设定档吧:
|
这三行分别代表载入 PHP 模块、增加附档名为 .php 的档案处理方式,以及将 index.php 增加成为首页档名。所以如果你在 /var/www/html 这个首页目录内新增一个档名为 index.php 时,他可以被使用为首页显示啦!基本上你不需要进行任何修改,这个档案就能够让你的 Apache 支援 PHP 模块与语法了!
另外你也必须要知道 PHP 的设定档是在 /etc/php.ini ,这个档案内容有某些地方可以进行一些小修改, 也有某些地方你必须要特别留意,免得被用户端误用你的 PHP 资源:
|
|
如果你想要提供 Apache 的说明文件给自己的 WWW 服务器的话, 可以安装一下 httpd-manual 这个套件,你就会发现在这个目录当中又会新增档案 (manual.conf) ,而且从此你可以使用 http://localhost/manual 来登入 Apache 的使用手册呢!真方便! 有兴趣的话可以参考与安装底下这些套件喔: