Professional Documents
Culture Documents
当我们上网浏览时,只要在网址列输入
『 http://www.sina.com.cn 』就可以浏览到新浪网的网页信息,
这个『 http://www.sina.com.cn 』就是所谓的 URL ( Uniform
Resource Locator ) 统一资源定位器,一个URL就是指向WEB上的
某些数据的一个指针,它可以是一个WEB文件,或是一个EMAIL地
址。
其中 www.sina.com.cn 就是所谓的主机名称,即是主机名称加上
领域名称所得的一个独一无二的 Internet 上面的名字。由于计算
机在网络里面仅认识 IP 而已,所以,真实 IP 就是透过 DNS 解
析而找到这部计算机,然后经过 WWW 的协议功能将数据传到客户
端。
<协定>://<主机地址>[:port]/<目录资源>
http://www.mysite.com/home/www/files/index.html
http:协议部分(超文本传输协议)
www.mysite.com:主机名称部分
home/www/files/index.html:目录或文件名部分。
协定:包括 http, ftp, news, gopher, telnet 这几种常见的
方法,其中 http 是利用『主机的 http port ,通常为
80 』,至于 ftp 则是利用『主机的 ftp port ,通常为 21 这
个端口』,请注意,使用的 80 与 21 都是主机所提供的服务,
而不是 client 端的 port,所以,使用 http 与 ftp 连上同一
部计算机,所取得的信息并不见得会一样,因为服务本身就不
同,一个是 WWW 一个是 ftp 端口不同提供的服务也是不同的。
此外,如果没有指定协议的话,那么预设的协议就需要看客户端
( Client ) 使用的那个联机程序的预设协议了。举例来说,如
果是使用 Netscape 的话,那么预设的协议就是 http,因此在
网址列输入 www.sina.com.cn 时, Netscape 立刻就会以 http
来连接出去。
另外,有些單位的 FTP 网站都是以 Web 接口进入的,因为可以
直接以浏览与搜寻的功能去捉取数据,因此,这个时候可以在网
址列输入:『 http://ftp.webs.com.cn/ 』以进入 WWW 界面的
FTP 网站,如果想要直接以 FTP 的模式来进行数据的浏览与传
输則直接在网址列输入以 ftp 为方法的网址:
『 ftp://ftp.webs.com.cn/ 』即可。因为所连接的主机的协议
不一样的缘故,所以主机响应的数据当然就不同了,请特别留意
这种网址列的格式。
主机名称/地址:由于计算机仅认识 IP ,所以如果输入 IP,
同样可以联机,但是如果是输入主机名称 ( domain name ),則
必需要让该主机名称可以经由转译器得到对应的 IP ,转译器就
是 /etc/hosts 或者是 /etc/resolv.conf 里面的设定,当然,
若要对外提供正常的 WWW 服务时, host name 就必需要让大家
可以转译到 IP ,也就是需要去申请一个合法的领域名称。
目录资源: Uniform Resource Indicator, URI ,如果要去的
网站网页在主网页的目录底下,那么可以直接输入目录与网页的
名称,就可以直接取得那个页面的数据,此外,如果只输入网址
并没有输入网页名称則 Server 端将会自动的判断 ( 看 Server
的设定而定 ) 该目录下是否有设定引用的网页名称。
:port:一般而言,各个协议都有其独特使用的 port ,例如
http 使用的是 80 , ftp 使用的是 21 这些个 port,所以当
要连接到某个网站时,输入 http://that.host.name 就会主动
的利用 80 那个 port 来尝试连接到对方主机。
如果使用非默認的 port,例如:使用的是 8080 这个 port 来
进行 WWW 的服务,那么除非有进行防火墙内的 port 对应,否
则直接在网址列输入 http://your.host.name 结果将无法连接
到 WWW 服务器,因为他会主动的连接到 80 port。所以,就要
告诉浏览器,要向 Server 要求服务的是哪一个 port ,因此,
就要写成: http://your.host.name:8080 才可以连接到对方的
8080 那个 port 。
Client 向 Server 要求数据
基本的类型可以分为两种:
仅提供使用者浏览的网站:这种类型的网站大多是提供『静态』
的网页,或许有提供一些动画图示,但基本上就仅止于此。因为
Server 不需要与 Client 端互动,所以用戶可以到该网站上去
浏览,但是无法进行数据的上传,目前主要的免费虚拟主机大多
是这种类型,所以,只要依照 HTML 的语法写好网页,并且上传
到该网站空间上,那麼数据就可以让大家浏览了。
提供与使用者互动接口的数据库网站:这类型的网站提供了与使
用者互动的数据库软件,因此,使用者可以依据主机提供的服
务,来进行留言、数据上传、存取的服务。由于 Server 与
Client 是互动的,因此一个接口良好的『数据库软件』就相当
的重要,因为他可以在线即时来更新使用者所传递的数据讯息,
这方面的网站例如最简单的留言版、讨论区、phpBB 架站论坛、
phpnuke 架站论坛、金流与物流的商业型网站等等,都是属于这种
互动类型的主机。
動態網頁的組成
WWW 运作的主要软件:(目前有 Apache 与 IIS 两大系统)
数据库软件:(例如 MySQL, MS 的 SQL, 及其它相关的数据库)
编写网页的网页语言:(例如 shell scripts, perl scripts,
Java, PHP CGI 等等)
如果是一个交易网站,例如网络书店的信用卡交易,或一些金
融公司提供的网络交易行为,这些讯息当中,很多都是含有相
当重要的私人讯息,例如信用卡、身份证等代表个人的证号。
所以就需要有『数据加密』的动作,目前用在 WWW 上面的主要
加密功能,有 Secure Socket Layer ( SSL ) 及 Certificate
Authorities ( CA )两个主要的模式。
數據加密簡介
參考網站:
SSL : http://www.modssl.org/
CA 组织之一:
https://digitalid.verisign.com/server/apacheNotice.htm
Apache:目前 Apache 已经出到了 2.0.X 版,但是最广泛使用的
还是属于 1.3.X 版本。可以上 Apache 主网页去看看相关的信
息:
Apache 主页 ( 英文 ):http://httpd.apache.org/
Apache 套件 ( 由主页下载 ):
http://httpd.apache.org/dist/httpd/
主要设定档 httpd.conf :Apache 的主要设定档之档名为
httpd.conf ,因为不同的安装方式与不同的 Linux
distribution 下,这个档案放置的地方会不相同,举例来
说, Red Hat 9 的预设路径在
/etc/httpd/conf/httpd.conf ,若以 Tarball 另行安装之
后,该档案则是在
/usr/local/apache2/conf/httpd.conf ,请依照不同的安
装情况来判断这个档案的所在
基本的环境设定方法为:
<设定项目>
......
......
</设定项目>
例如:
<Directory>
Options Indexs
</Directory>
基础环境设定:
ServerRoot "/etc/httpd"
# 最上层的 Apache 设置目录,
# 如果底下以『相对路径』的方式写的,那么就是相对于这个路径
# 写绝对路径就没有任何影响
PidFile logs/httpd.pid
# 设定 Apache 的 PID 记录文件,可以用在重新读取设定文件等等的功能
# 因为是相对路径,所以实际目录为 /etc/httpd/logs/httpd.pid
Timeout 300
# 这是用来设定连接到你这部主机的客户端,当超过 300 秒客户端还没有
# 办法连上你的主机时,就予以断线处理
KeepAlive On
# 是否允许持续性联机,亦即一个联机有多个要求,这里通常设定为 On 比
较好
MaxKeepAliveRequests 100
# 在持续性的联机当中,最多允许的联机数目,如果不要限制,可以设为 0
#官方网站上面说,要有较佳的效能,最好设定大一点
KeepAliveTimeout 15
# 同一个联机的 Client 下次的需求没有在 15 秒内送出,那么该联机会被
视同断线
<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
# 这两段主要是与系统的效能较有关系!如果不需要效能设定的话,那么使
# 用默认值
# 1. MinSpareServers 与 MaxSpareServers 是开启 httpd 服务数目的地
# 方,当你执行
# /usr/local/apache/bin/apachectl start 之后, 在 shell 下执行
# ps -aux|grep http 就可以看到 http 的数量, 通常这与你的 RAM 有
# 关。
# 如果是小站的话,可以设小一点, 例如最小设 3 最大设 5 即可
# 2. 而 StartServers 则设与 Min 相同即可
# 3. 至于 MaxClients 则可以设小一点,因为设定太大很耗系统资源,
# 而太小则无法让很多人连上来, 所以可以设成例如 100
Listen 80
# 设定监听的 port ,如果你要更改 WWW 的 port number ,可以在这里修
改,例如 8080
User nobody
Group nogroup
# 这个是设定 apache 所产生的,就是刚刚我们上头所设定的
MinSpareServers ,之后会产生
# 一些 process ,那么这些 processes 的拥有者与拥有群组 ( owerner &
group ) 是谁
# 这个与未来的『 PID 权限及 Linux 权限设定』有关, 通常如果是 RPM 安
装的话,
# 大致上都会是 apache ,而如果是 Tarball 安装,通常是 nobody 与
nogroup
# 是否有该 user 还要查看 /etc/passwd 及 /etc/group , 不能设错!否则
无法启动 apache
ServerAdmin root@localhost
# 这个是设定你的机器的 httpd 管理员账号
#ServerName new.host.name:80
# 设定主机名称的地方,若有需要的话才设定,否则可以将他 mark 掉也没
关系
# 但如果你需要让 Apache 自动帮你将其它名称连过来的主机名称修改时(下
一个设定),
# 那么这里就需要填写啰!此外的此外,需要了解的是,有时,例如
Openlinux server 3.1.1
# 如果没有设定这个的话,那么你的 WWW 将无法启动!另外,如果设定错
误,同样无法启用!
# 因此,没有特别要求的话,那么这个就暂时不要设定吧!免得自找麻烦~
UseCanonicalName Off
# 主机的别名, 例如你的主机有三个名称时,那么这个 Off 的设定,会让
Client 端
# 可以分别使用三个名称显示在他们的浏览器上面,如果是 On 的话,那么
将以上面的
# ServerName 内容来显示在他们的浏览器上面,而不是原来他们写的主机名
称
AddDefaultCharset ISO-8859-1
LanguagePriority en da nl et fr de el it ja ko no pl pt pt-br ltz
ca es sv tw
AddDefaultCharset Big5
LanguagePriority tw en da nl et fr de el it ja ko no pl pt pt-br
ltz ca es sv
HostnameLookups Off
# 在记录登录档内容時,来捉取数据的主机是以 IP 还是主机名称来显示
# 当然是 IP 来显示比较快,所以,这里通常设定为 Off ,不需要转译 IP
成为主机名
目录路径设定:
DocumentRoot "/usr/local/apache2/htdocs"
# 将 /usr/local/apache2/htdocs 设定为 Apache 的根目录
# 这个就是主机的主网页,你可以将他移到任何你高兴的地方
# 不过,比较重要的限制是,最好这个目录底下不要包含重要的信息,例如你不要将根目录 /
# 设定为这个 DocumentRoot ,否则你的主机下的任何数据,任何人都可以使用
# 浏览器来查看
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
# 这个是设定根目录,亦即是 /usr/local/apache2/htdocs 的属性
# 使用 Options 来设定相关属性
ExecCGI :使该目录底下的 CGI 具有可以执行的能力,如果您要您的
某目录可以执行 CGI 的程序时,请将该目录多加 ExecCGI 这个属性
FollowSymLinks :让 link 的目录或档案,虽在其它的目录下,仍可以连出去
举个例子来说,目前我的主页是 /usr/local/apache2/htdocs ,但我想
连接到 /home/vbird/testing 底下,然而我又不想多加一个 directory
的设定值在 httpd.conf 内,那么我可以在 /usr/local/apache2/htdocs
使用 ln 连结一个名为 vbird 使他指向 /home/vbird/testing ,那么
当我网址输入 http://localhost/vbird 时,就可以到
/home/vbird/testing 了!
如果没有设定这个属性,那么就无法连接出去
Includes :在 Server 端的工作可进行
Indexes :如果在该目录底下找不到 index.html 时,就显示整个目录下的文件名称
MultiViews :有点类似多国语言支持,你可在同一目录下的同一个档案,
编写多个不同语言的档案,并且以一个 *.var 的档案来规范不同编码
有兴趣的话,请自行参考自己的 /usr/local/apache2/htdpc/index.html.var
All :全部的属性都启动啦!但是不包含 MultiViews
<Directory "/usr/local/apache2/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
# 1. 这段主要在设定 / 的属性,可以看到预设的情况中有 indexes
# 2. 至于 AllowOverride 主要与认证网页的设定有关,亦即 .htaccess 档案,意思是说,
# httpd.conf 在与 .htaccess 相同目录下的设定中,哪些设定会用来取代 .htaccess 的
# 设定内容, .htaccess 这个档案设定较为灵活,所以当然设定为 None
UserDir public_html
#在设定个人家目录下的首页在何处,这里预设是 public_html ,举例来说,
# 我的家目录是 /home/test ,那么这个使用者的首页目录在 /home/test/public_html !
# 当然,这个目录是可变的!就看你要怎么设定
# 例如很多人都喜欢将这个目录设定为 www
ErrorLog logs/error_log
LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog logs/access_log combined
# 上面全部都跟 log 有关
ErrorLog /var/log/httpd/error_log
CustomLog /var/log/httpd/access_log combined
# 只改这两行,其它的保留默认值
启动 httpd
并且需要在登录档当中发现底下这一行才算成功
以浏览器直接输入你的 IP 来试看看即可知道。如果测试没
有成功的话,最大的可能为:
网络问题:虽然在本机上没有问题,但不代表网络一定是
通的,请确认一下网络状态
网页问题:请特别留意浏览器上面的显示讯息,里面包含
了无法连进来主机的问题
权限问题:例如在上面的 user 设定为 nobody,但偏偏要
被浏览的目录权限为 750 ,自然就无法让人家联机进去
问题的解决之道:如果还是没有办法连接上来你的 Linux
Apache 主机,那么请:
1. 察看 /var/log/httpd/error_log 这个档案,他应该可
以告诉你很多的信息
2. 另外,也要仔细的察看一下你的浏览器上面显示的信
息,这样才能够知道问题出在哪里
3. 另一个可能则是防火墙,察看一下
用户的个人网页启动
个人用户要自己的首页时,他的默认值都是『 public_html 』
这个设定
不过,如果您觉得这样实在很讨厌,怎么需要多加一个毛毛虫
的符号『 ~ 』,可不可以只使用:
http://你的网站名称/test
就好!?当然没问题!但是就需要动一点手脚,最常见的有两
种方式:
建立连结档:
这是最简单的方法,还记得我们的主页有 Options
FollowSymLinks ,利用 ln 就可以达到我们的需求,首
先,需要找到首页,然后在首页底下输入连结的方法:
这样立刻生效,不需要重新啟動
建立 Alias:
另一种方是就是使用刚刚提到的那个 Alias 功能: