免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 712 | 回复: 0
打印 上一主题 下一主题

架設 WWW [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-09 11:50 |只看该作者 |倒序浏览

如果您夠幸運﹐有註冊了自己的 domain ﹐還有固定的 IP 地址和 internet 連線﹐架設一個 WWW 伺服器恐怕是必不可少的事情了吧﹖就算您還沒打算正式連上 internet ﹐在自己的 intranet 上面能有一個 WWW 伺服器也是非常便利的。如果您當初安裝 Redhat 6.0 的時候選擇‘Everything’的話﹐您已經有一個叫 apache 的 WWW 伺服器了。而事實上﹐現在 internet 上面的網站﹐大部份都是用 apache 來做伺服器的啦。
設定WWW
要設定 apache ﹐關鍵的檔案都在 /etc/httpd/conf/ 這個目錄之內﹐而我們只需修改三個檔案就可以了﹕
access.conf
httpd.conf
srm.conf
然而﹐如果您在 access.conf 和 srm.conf 中看到下面字眼﹕
#
# To avoid confusion, it is recommended that you put all of your
# Apache server directives into the httpd.conf file and leave this
# one essentially empty.
#  
那麼﹐所有的設定都將改在 httpd.conf 進行﹐這是可能是版本的不同所至。(tips:如果您在參考本例子的時候是用 vi 進行編輯的話﹐可以用 “ / ”鍵尋找關鍵字眼再做修改。)
-- access.conf --
第一個 access.conf檔案﹐用來設定一些目錄權限的﹕
Options None
AllowOverride None
Options Indexes Includes FollowSymLinks
AllowOverride All
order allow,deny
allow from all
在這裡﹐我定義了兩個目錄(它們必須是已經存在的)﹐當使用者透過 HTTP 連接進來的時候所擁有權限。因為‘/’(根目錄)至關緊要﹐所以我不開放任何 Option﹐也不容許 Override (在設定後面的 srm.conf 檔案時﹐可以使用‘.htacess’來改變原有目錄的權限)。
不過﹐我卻允許在 /home/httpd/virtual/virtual1/ 目錄下面使用 index ﹐也就是在沒有預設 index.html (在 srm.conf 中設定) 的時候﹐會將目錄內容顯示在流覽器上﹔而‘FollowSymLinks’呢﹐則允許透過 Symbolic Link 方式連接到此目錄外的位置。 同時﹐在這個目錄下﹐我也允許 AllowOverride All 的設定﹐這個我將在 srm.conf 裡面再解釋。
另外﹐我們還可以特別設定這個目錄的連接限制﹐‘order allow,deny’是先列出允許連接的範圍﹐然後到禁止連接的範圍。不過我這裡完全開放連接了(allow from all)。但您如果有必要的話﹐可以在此增加一些 deny 的句子在後面﹐例如﹕
allow from all
deny from 203.168.168
至於其他設定﹐您慢慢看檔案上面的說明吧﹐通常接受預設值就可以了。
-- httpd.conf --
然後﹐我們看看 httpd.conf 這個檔案。前面那些一大堆的‘LoadModule’和‘AddModule’可以不理﹐除非您真的知道如何修改﹐您唯一要做的是確定它們的路徑正確就可以了。
然後到﹕
ServerType standalone
這個設定是讓 httpd 在開機的時候就啟動起來。通常使用這個設定就可以了﹐除非您想 httpd 以 inetd 的方式啟動。
port 80
這個有點好玩﹐正如我們知道 port 的功能就好像一個 IP 地址的門口﹐port 80 是 HTTP 這個協定的預設值(在 /etc/services 可以修改)﹐如果您想建立一個秘密網站﹐只想那些知門而入的朋友流覽的話﹐那麼﹐將 80 改成其他號碼吧﹐否則﹐使用預設值好了。
HostnameLookups off
如果您想知道連進您的網站的機器是什麼名字的話﹐將之設定為‘on’﹐否則您只會看到 IP 地址而已。
User nobody
Group nobody
這個還是別改啦﹐您只需確定這個‘nobody’存在於 /etc/passwd 和 /etc/group 裡面就可以了。
ServerAdmin root@redhat52.siyongc.domain
您可以將之改成負責管理這個網站的管理者信箱。雖然我這裡使用 root ﹐但我建議您將之改成 webmaster ﹐然後為 webmaster 建立 aliase (我會在“
架設MAIL
”裡面說的了)。
BindAddress *
如果您要架設虛擬主機(後面我就會教您如何做了)﹐可以將前面的“#”拿掉。同時在後面的‘#Listen 12.34.56.78:80’句子(大約在第323行附近)後面把您設定好的虛擬 IP 地址增加上去(包括機器本身的 IP 地址)﹕
Listen 127.0.0.1:80
Listen 192.168.0.17:80
Listen 203.30.35.134:80
Listen 10.11.127.100:8080
Listen 192.168.1.17:80
.....
(雖然﹐您不設定 BindAddress 和 Listen 也照樣可以讓虛擬主機工作﹐但如果您的伺服器還提供 http-proxy 服務﹐或使用其它的 port 提供其它 httpd 服務﹐則要進行設定了。)
接下有一大堆東東﹐有興趣自己看吧﹐我見了早就逃之夭夭了呢~~~
ServerName www.siyongc.domain
哈哈~~﹐這樣看上去比 redhat52.siyongc.domain 更具 WWW 味道哦~~~﹐不過﹐您的 DNS 也要設定好啦(應沒問題了吧﹖)。
......
又一堆東西被我忽略了 :(
#ProxyRequests On
咦﹖apache 也可以當 Proxy 使用﹖哈哈﹐自己試試不就知道了麼﹖
(tips: ProxyRemote * http://remote.proxy.host:8080)
架設虛擬主機
有好多朋友﹐或許會在同一台機器上﹐架設多台 WEB 伺服器﹐這就是所謂的“虛擬主機”啦。在 APACHE 上面架設虛擬主機﹐我們有兩種方法﹕IP-Based 和 Name-Based 。這兩個方法有什麼不同呢﹖
IP-Based 是在早期的網頁伺服器上面設定虛擬主機﹐要求每一個虛擬主機都分別有各自不同的 IP﹐這或許是有多張網路卡﹐或是用 IP Aliase 的方式捆綁多個 IP 。但這畢竟是有限的﹐尤其是現在 IP 位址嚴重不足的情況之下。為了解決這個問題﹐後來就發展出 Name-Based 的虛擬主機架設方法﹐也就是將所有的虛擬主機都架在單一的 IP 之上﹐這提供的便利當然是非常明顯的﹐特別是對那些提供 hosting 服務的 ISP/ICP 業者來說﹐更是救藥良方。
下面﹐讓我們先看看 IP-Based 的虛擬主機架設方法﹕
在 httpd.conf 檔案最後部份﹐我增加了這些句子﹕
ServerAdmin webmaster@siyongc.domain
DocumentRoot /home/httpd/virtual/virtual1
ServerName www.virtual.test
ErrorLog logs/www.virtual.test-error_log
TransferLog logs/www.virtual.test-access_log
無論如何﹐我們首先要確定 /home/httpd/virtual/virtual1/ 這個目錄存在(回顧一下 access.conf 檔案﹕我已經為這個目錄設定好權限了)。同時 www.virtual.test 的
DNS
也設定好(包括正反解)﹔而且使用
IP Alias
為虛擬主機建立新的 IP 地址(可以有別於目前的子網範圍)。
如果您還有更多的虛擬主機要設定﹐將上面的句子 copy 幾份﹐修改好各自的內容就可以了。有時候﹐您或許要修改前面提到的 Listen 選項﹐例如﹕
Listen www.virtual.test:80
那麼﹐我們使用 Name-Based 又是怎麼設的呢﹖
和 IP-Based 一樣﹐首先我們要確定 DNS 的名稱﹐以及 access.conf 的目錄已經設定好。然後我們在  前面加上一行NameVirtualHost﹐同時將 裡面的地址改成 IP﹕
NameVirtualHost 192.168.0.17
ServerAdmin webmaster@siyongc.domain
DocumentRoot /home/httpd/html
ServerName www.siyongc.domain
ErrorLog logs/www.siyongc.domain-error_log
TransferLog logs/www.siyongc.doman-access_log
ServerAdmin webmaster@siyongc.domain
DocumentRoot /home/httpd/virtual/virtual1
ServerName www.virtual.test
ErrorLog logs/www.virtual.test-error_log
TransferLog logs/www.virtual.test-access_log
不過使用 NameVirtualHost 模式後﹐原本建立在此 IP 的“真實”主機卻會消失掉﹐您必須將之當成 VirtualHost 一樣﹐也為之建立好  設定哦~~。再有一點個人經驗要注意﹕如果在上面句子中用 IP (此列有三處)來設不工作的時候﹐將之改成 * 試試。
或許﹐有時候﹐您還想一個主頁有多個虛擬主機名稱﹐這一點也不難﹐您只要在  範圍內加上一行﹕
ServerAlias second.virtual.host.name
或許您還會問﹕有沒有更刁鑽的啊﹖我可不可以將 IP-Based 和 Name-Based 混合起來設定啊﹖
哈哈﹐當然可以啦﹐不過我不詳細說明啦﹐請您自己參考
http://www.apache.org/docs/vhosts/

-- srm.conf --
最後﹐我們看一下 srm.conf 這個檔案的內容﹕
DocumentRoot /home/httpd/html
這是您的 Linux 主機預設的網站存放目錄﹐那個“It Worked!”網頁(如果您的機器設定好了﹐就可以看到了)就是放在這裡的 index.html 了。
UserDir html
嗯﹐這個設定嘛﹐原本是 public_html 來的﹐但我覺得太長﹐就將之裁短了。它用來指定存放使用者私人網站的目錄名稱﹐使用者家目錄下面一定要有這樣一個目錄﹐如﹕/home/netman/html ﹐要確定其名稱要和這裡的設定相同。然後您打﹕http://www.siyongc.domain/~netman/ ﹐就可以看到 netman 這個使用者的私人網站了(有時候﹐少了最後的“ / ”會看不到哦~~~)。您要注意的是﹐在預設情況下﹐使用者家目錄的權限為‘700’您得用 chmod 將之改成 755 才行(用 711 也可以﹐視乎您開放的權限而定)﹐如﹕ chmod 755 /home/netman 。不過﹐如果您不想要“/~netman”的那個“~”﹐我這裡教您一個法門﹕
在 srm.conf 裡面為 netman 建立一個別名﹕
Alias /netman /home/netman/html/
又或者用 link 的方式﹕
ln -s /home/netman/html /home/httpd/html/netman
這樣﹐您輸入 http://www.siyongc.domain/netman 就可以辦到了。不過﹐您得要確定 /home/httpd 這個目錄在 access.conf 裡面有‘Options FollowSymLinks’的設定。
AccessFileName .htaccess
在前面的 access.conf 檔案我已經提到過這個 .htaccess 檔案(別少了前面那個小點“ . ”)。您在 access.conf 的使用‘AllowOverride All’設定的話﹐Apache 就會讀取 .htaccess 的設定了﹐您只要在目錄下面建立起這個 .htaccess 就可以了。透過它﹐我們可以為目錄進行一些特別限制﹐比如﹕要進入該目錄需要提供密碼﹐也可以指定有哪些使用者可以進入。範例如下﹕
AuthUserFile /home/httpd/virtual/virtual1/dir1/.htpwd
AuthName dir1pwd    #可以用任意名稱
AuthType Basic
require valid-user
您可以用其它檔案名稱代替上面那個 .htpwd檔案﹐它是用以下命令建立的﹕
htpasswd -c /home/httpd/virtual/virtual1/dir1/.htpwd user1 (注意﹕如果以後再增加使用者的話﹐請將“ -c ”參數拿掉。)
接下來﹕
DirectoryIndex index.html index.shtml index.cgi index.htm default.htm
如果您慣用了 NT IIS 上面的 default.htm 或 index.htm 來做首頁的話﹐將這兩個名字加上去。同時也修改一下在後面這句﹕
AddType text/html .shtml .htm
至於其他設定﹐有興趣自己看啦﹐我又偷懶去了 ^_^
最後﹐執行 ﹕
/etc/rc.d/init.d/httpd reload
來讓設定生效﹐一定要留意“[ OK ]”是否出現哦。
測試
然後﹐您就可以在流覽器的 URL 輸入 apache 主機名稱﹐當你看到“It worked!”畫面﹐應該就好了。如果您沒看到﹐確定 httpd 是否真被啟動了﹐留意一下 DNS 是否設定對﹐還有連線﹑IP﹑Port 等地方。
如果是虛擬主機﹐更要確定 IP aliase 是否被正式啟動了﹐同時 routing 也要確定正確。當然﹐在 /etc/httd/conf 下面的檔案也要仔細看看有沒疏忽之處啦﹐例如﹕的有否設定好﹖是否使用了.htaccess﹖BindsAddress * 有沒有開啟﹖Listen 有沒有虛擬 IP 地址﹖等等﹐不一而足。
如果您流覽使用者個人網頁的時候碰到“Aceess Prohibited”的問題﹐多是存放網頁的目錄和其上級目錄的權限問題了﹐用‘chmod 755’就應該可以解決(或許還要包括上級目錄)。
如果您在開機的時候﹐停在 httpd 上面了﹐這可能是 httpd.conf 檔案中的 ServerName 找不到。確定您的 /etc/hosts 檔案有它的記錄﹐或者能夠透過 DNS 查詢得到就可以了。使用 ip-base 的 virtual host 也要注意這點﹐但使用 name-base 則可以忽略。
還有一點您可能要倍加小心﹕用來做測試的 browser 有時候顯示出來的畫面是從 cache 那裡來的﹐而未必是來自 server 那端﹐尤其是您未留意自己在 offline 的情況下。這樣很容易把您欺騙了﹐為了確定您的測試是真實的﹐我建議您最後的一次測試應該重新開機後再進行。
還不得不再提醒一次﹕前面提到的三設定檔為計較舊的 Apache 設定檔﹐新版的都已經全部整合在 httpd.conf 裡面了。如果您看得糊塗﹐那就請花點時間找找相應字眼吧。
有關更詳細的 Apache 安裝﹐推薦您參閱
阿帕契 HTTP 伺服器參考手冊



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/23724/showart_167533.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP