WWW

本章主要是以apache來做為我們的server端軟體。

安裝apache

可以以rpm的方式安裝,我們也可下載最新的版本 http://www.apache.org/

設定apache

設定檔: httpd.conf

可以#locate httpd.conf 找出這個檔案

如同其它軟體,在設定檔修改後,需重新啟動該軟體。

/etc/rc.d/init.d/httpd
用法: httpd {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}

簡易版

AddDefaultCharset Big5
LanguagePriority tw en da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv 記得tw要在最前面
中文顯示

DocumentRoot "/var/www/html"
設定apache的根目錄,也就是主機的主網頁的所在。


進階版

基本的環境設定方法為:
 
<設定項目> ,設定項目可以為Directory(針對目錄)、Location(針對URL)、Files(針對檔案)
  ......
  ......
</設定項目>

在設定項目中,有5個項目

項目 用途、說明
Options 參數,後詳
AllowOverride 若是為 None則表示,不受.htaccess檔的影響
Order Deny或Allow的優先順序
Deny 不允許的來源
Allow 允許的來源

All
All options except for MultiViews. This is the default setting.所有權限,除了MultiViews。
ExecCGI
Execution of CGI scripts is permitted.允許執行CGI。
FollowSymLinks
The server will follow symbolic links in this directory.允許以symbolic links連結不在此目錄中的檔案或目錄。
Note: even though the server follows the symlink it does not change the pathname used to match against <Directory> sections.
Note: this option gets ignored if set inside a <Location> section.
Includes
Server-side includes(SSI) are permitted.是HTML頁面中的指令,在頁面被提供伺服器連行運算,以對現有HTML頁面增加動態的內容,而無需通過CGI程序提供其整個頁面,或者使用其他伺服技術。
IncludesNOEXEC
Server-side includes are permitted, but the #exec command and #exec CGI are disabled. It is still possible to #include virtual CGI scripts from ScriptAliase'd directories.
Indexes
If a URL which maps to a directory is requested, and the there is no DirectoryIndex (e.g., index.html) in that directory, then the server will return a formatted listing of the directory.允許產生目錄下的檔案列表。
MultiViews
Content negotiated MultiViews are allowed.
SymLinksIfOwnerMatch
The server will only follow symbolic links for which the target file or directory is owned by the same user id as the link.
Note: this option gets ignored if set inside a <Location> section.


Order allow,deny 先判斷allow,再判斷deny
Allow from all 允許所有的來源
允許所有的來源皆可瀏覽

Order deny,allow 先判斷deny,再判斷allow
Deny from all 不允許所有的來源
allow from 203.72.64 只允許IP從203.72.64.*來的可瀏覽

Order deny,allow 先判斷deny,再判斷allow
Deny from all 不允許所有的來源
allow from edu.tw 只允許域名字尾為edu.tw來的可瀏覽(但必須是IP可被反查得到)

<Directory /var/www/html/probe>
AllowOverride none
Options MultiViews SymLinksIfOwnerMatch IncludesNoExec
Order deny,allow
Deny from all
allow from 203.72.64.0/24
allow from 192.168.0.1/16
allow from 10.0.0.0/8
allow from 2001:288:121f::1/48 #IPV6寫法

</Directory>

[心得]:IP最好改以數字遮罩才不會出錯,如allow from 192.168.0.0/16


<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
設定根目錄

<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
也是設定根目錄,因之前已將 DocumentRoot "/var/www/html",故此處還要再設定

<IfModule mod_userdir.c>
# UserDir disable
此行加#表示要讓各個使用者的家目錄中某個目錄可以被瀏覽,也就是說可讓各使用者上傳自己的網頁檔案,還需配合以下的設定。
UserDir public_html
只有各使用者的家目錄中的 public_html目錄可以被瀏覽。
</IfModule>

<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews 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>
讓各帳號在其家目錄中之public_html資料夾內之檔案,可以透過http被瀏覽。瀏覽方式為http://yourIP/~帳號

另外需在各家目錄中做以下設定

$ mkdir public_html
$ chmod 755 public_html
$ chmod 755 /home/使用者帳號

你也許發現要一個個去設定實在很麻煩,所以我們可以用大量建帳號scripts幫助我們。

DirectoryIndex index.htm index.html index.php index.php3 index.php4 index.html.var
當你在瀏覽http://yourIP 時,Apache的瀏覽順序,如上行,Apache會先找出是否有index.htm?如沒有,則會找index.html…直至index.html.var為止,若都找不到,又在該<Directory></Directory>內設定無Indexes的話,就會回應找不到網頁(這也是一個安全的做法)。另外,如果你是瀏覽http://yourIP/檔名,而該檔的確存在的話,則不受影響。

現在,你可以透過ftp軟體,將做好的網頁上傳至主機上試試看了!

高階版