Sun WebServer 安裝手冊 Solaris Easy Access Server 版

第 4章 從 Sun WebServer 1.0 轉移到 Sun WebServer 2.0

新術語/結構

Sun WebServer 2.0 與 Sun WebServer 1.0 的差異頗大,因此 Sun WebServer 1.0 的配置檔案必須轉換成與 Sun WebServer 2.0 相容的檔案才行。本文件將說明如何進行檔案轉換。至於 Sun WebServer 2.0 新功能的詳細說明,請參閱 Sun WebServer 2.0 的文件。

雖然 Sun WebServer 1.0 與 Sun WebServer 2.0 可安裝在同一台機器上,但卻不可放在同一個目錄下。安裝 Sun WebServer 2.0 之前,必須將 Sun WebServer 1.0 完全移除。只有當 Sun WebServer 1.0 不是安裝在內定目錄(也就是 "/" 以外的目錄)時,才能與 Sun WebServer 2.0 並存。至於如何將 Sun WebServer 1.0 安裝在非內定目錄內,請參閱「Sun WebServer 1.0 的安裝手冊」。本文件提到 Sun WebServer 1.0 的配置檔案 httpd.confaccess.acl),均假設為內定的安裝位置 /etc/http/。移除 Sun WebServer 1.0 之後( 必須在安裝 Sun WebServer 2.0 之前完成),這些配置檔案便會被移到備份目錄 /etc/http.bak[.n]/ (例如 /etc/http.bak//etc/http.bak.1//etc/http.bak.2/,...)內。此目錄內檔案名稱結尾數字最高的檔案,即為最近一次解除安裝的配置檔案。

實例與網站

雖然 Sun WebServer 1.0 也能同時執行好幾個 HTTP 伺服器,但啟動、停止以及重新啟動伺服器等動作的效率,都是在只有一個 HTTP 常駐程式實例時為最佳。Sun WebServer 2.0 則在這方面有所改善,讓系統中的每個 httpd 常駐程式均有各自的名稱,以便許多 httpd 行程能同時執行,並且讓使用者能用各 httpd 行程的的名稱啟動、停止與重新啟動。詳細資訊請參閱 htserver(1m) 線上援助頁。

Sun WebServer 2.0 同時也增加了支援虛擬主機的功能。每個虛擬主機各自負責一個網站,且在檔案系統中擁有自己的子層樹狀結構,其中含有該主機的配置檔案以及文件根。以前 Sun WebServer 1.0 將虛擬主機的所有配置資訊全部放在整體配置檔案 httpd.conf 內,但 Sun WebServer 2.0 卻將各虛擬主機的大部份配置資訊存放在該虛擬主機負責網站之目錄底下的配置檔案內。將各站台的配置資訊從同一個檔案中抽出,分散到各自的配置檔案內,讓 Sun WebServer 2.0 具有比 Sun WebServer 1.0 更良好的延展性,且簡化個別網站的管理工作。

配置檔案位置

Sun WebServer 1.0 在內定路徑 /etc/http/ 中共有兩個主要的配置檔案:

Sun WebServer 2.0 將這些檔案中的指引分割成伺服器實例的伺服器層級配置檔案以及個別網站的站台層級配置檔案。

伺服器層級配置檔案

伺服器層級配置檔案內定安裝在 /etc/http/ 內。 <instance_name> 以下是使用此檔案的 httpd 實例的唯一名稱。每個 httpd 實例名稱當初用「Sun WebServer 管理主控台」或 htserver add 指令建立時,便已經與某個伺服器實例產生關聯。

站台層級配置檔案

站台層級配置檔案內定安裝在各站台的目錄結構下。<site_name> 以下為使用此檔案的網站名稱。

以上所列檔案名稱均是建議使用的名稱。唯一不可更改的配置檔案名稱為 /etc/http/httpd-instances.conf。每個伺服器實例與基本配置檔案都列在 httpd-instances.conf 內,而每個伺服器的配置檔案內則設定了其他配置檔案的名稱。

指令行公用程式

Sun WebServer 2.0 增加了許多修改配置檔案的指令行公用程式。本文件許多地方說明如何轉移到 Sun WebServer 2.0 時,都會用到這些公用程式。關於指令行可用之所有 Sun WebServer 公用程式的詳細說明,請參閱 Sun WebServer 2.0 線上援助頁。本文件中提到的指令,則請參閱 htserver(1m)hthost(1m)htrealm(1m) 線上援助頁。至於配置檔案,請參閱 httpd.conf(4)httpd.site.conf(4)access.conf(4)realms.conf(4)。Sun WebServer 2.0 也提供了「管理主制台」,附在 SUNWhtadm 套裝軟體內,可用於管理整個 HTTP 伺服器。要使用「管理主控台」,必須安裝 SUNWixklgSUNWixavm

建立 Sun WebServer 2.0 伺服器

將 Sun WebServer 1.0 配置檔案轉換成 Sun WebServer 2.0 格式之前,請先將一個基本的 Sun WebServer 2.0 伺服器實例加入系統內。此伺服器軟體含有 Sun WebServer 2.0 使用的檔案結構,可當作內定配置檔案,然後根據 Sun WebServer 1.0 伺服器的設定值加以修改之。

建立一個新的 Sun WebServer 2.0 實例,並將之命名為「server1」:
  1. 在指令行鍵入以下指令(以 root 身份執行):


    # htserver add "server1"
    

    此指令會建立一個新的 Sun WebServer 2.0 伺服器層級配置檔案,以及一個內定的網站。新檔案的安裝目錄如下:

    • /etc/http/server1.httpd.conf:伺服器配置檔案

    • /var/http/server1/:新伺服器的根目錄

    • /ver/http/server1/websites/default_site/:內定網站的路徑

    • /var/http/server1/websites/default_site/conf/:網站配置檔案的位置

轉移 Sun WebServer 1.0 httpd.conf 檔案

Sun WebServer 1.0 的配置檔案 /etc/http/httpd.conf 內含有設定伺服器、各虛擬主機以及通訊埠的所有基本指引設定,其中三個主要的區塊類型分別為 server{} 區塊、url{} 區塊以及 port{} 區塊,將於本小節中詳加探討。

server{} 區塊

將 Sun WebServer 1.0 的 server{} 區塊轉換成 Sun WebServer 2.0 的格式相當簡單,因為 1.0 區塊內的大部份指引與 2.0 的完全相同,除了以下幾個之外:

acl_delegate_depth

Sun WebServer 已經不再支援 acl_delegate_depth 指引以及存取權控制代理的觀念,詳細說明請參閱本文件中「轉移 Sun WebServer 1.0 access.acl 檔案」之說明。

acl_enable

acl_enable 指引已經改成 access_enable

轉換 acl_enable 指引
  1. /etc/http/httpd.conf 內搜尋下列 Sun WebServer 1.0 指引:


    acl_enable				yes
  2. /etc/http/server1.httpd.conf 中的這個指令換成以下指引:


    access_enable 		yes

acl_file

server{} 區塊內已經不再支援 acl_file 指引了,因為伺服器層級的存取權控制檔案已經換成: /etc/http/access.conf。此檔案的名稱不可更改。

對應

server{} 區塊內已經不再支援 map 指引。所有 URL 對應都必須在網站的 map.conf 檔案中加以設定。

mime_add

Sun WebServer 2.0 已經不再支援 mime_add 指引。所有 mime 類型都必須在伺服器或網站的 mime.types 檔案中加以指定。

轉換 mime_add 指令
  1. 假設要轉換以下的 Sun WebServer 1.0 指令:


    server {
    	mime_add			"image/.jpeg"			"JPG"
    }
  2. 請確定 /etc/http/server1.httpd.conf 內已設定了 mime.types 檔案:


    註解 -

    若此檔案是讓所有伺服器共同使用,則修改此檔案會影響所有執行中的 httpd 程式



    server {
    	mime_file 			"/etc/http/mime.types
    }
  3. /etc/http/mime.types 檔案內加入新的 MIME 對應:


    image/jpeg 			JPG

server{} 區塊轉換
  1. 假設要轉換以下的 Sun WebServer 1.0 在 /etc/http/httpd.conf 內的 server{} 區塊:


    server {
    	server_root							"/var/http/demo/"
    	server_user							"root"
    	mime_add										"image/jpeg"	"JPG"
    	mime_default_type	 text/html
    	acl_enable								"yes"
    	acl_file										"/etc/http/access.acl"
    	acl_delegate_depth			3
    
    	map			/cgi-bin/				/var/http/cgi-bin/			cgi	
    }
  2. 修改 /etc/http/server1.httpd.conf 內的 server{} 區塊:


    server {
    	server_root							"/var/http/demo/"
    	server_user							"http"
    	mime_file									"/etc/http/mime.types"
    	mime_default_type	 text/html
    	access_enable					"yes"
    }
  3. 將 MIME 對應加入已設定於 (2) 的 /etc/http/mime.types 檔案內:


    image/jpeg				JPG

url{} 區塊

在 Sun WebServer 1.0 中,虛擬主機的所有配置參數都集中放在 /etc/http/httpd.conf 檔案內的同一個地方,但在 Sun WebServer 2.0 中,只有虛擬主機的整體資訊才放在伺服器層級的配置檔案中,而各虛擬主機自己的特殊資訊則放在站台層級的配置檔案內。

將 Sun WebServer 1.0 的 url{} 區塊轉換成 2.0
  1. 利用 hthost 指令行公用程式在 2.0 伺服器內增加一個新的站台。

  2. 修改以 Sun WebServer 1.0 設定值或 Sun WebServer 2.0 同類設定值而建立的新配置檔案。

建立 2.0 網站
  1. 在目前的伺服器 (server1) 上增加一個站台 (widgets):


    # hthost add -i server1 -h widgets \
    	-s /var/http/server1/websites/widgets
    

    以上指令會在伺服器層級配置檔案 /etc/http/server1.httpd.conf 內加入以下設定:


    url //widgets {
    	site_enable 				"yes"
    	site_path							"/var/http/server1/websites/widgets"
    	site_config					"conf/widgets.site.conf"
    }

    此外還會在 /var/http/server1/websites/widgets/ 內建立一個新的站台,而 /var/http/server1/websites/widgets/conf/ 目錄內則會出現以下配置檔案:

    • widgets.site.conf

    • access.conf

    • realms.conf

    • map.conf

    • content.conf

    • servlets.properties

修改伺服器層級配置檔案

Sun WebServer 1.0 url{} 區塊內的大部份配置參數都可以放在站台層級配置檔案 widgets.site.conf 中,其中一個例外則是設定虛擬主機接聽用的通訊埠。每個虛擬主機均需設定其接收連線的 IP 位址與通訊埠。(此處與 1.0 不同,1.0 版的作法是將這些資訊放在 port{} 區塊內,並使用 hosts_supported 指令。)IP 位址與通訊埠合起來在 Sun WebServer 2.0 內稱為「連線端點」,所有網站都必須設定其連線端點(內定站台例外,因為內定站台會在所有的介面上接聽,因此不可 設定連線端點)。有關連線端點的詳細資訊,請參閱 httpd.conf (4)

設定網站連線端點
  1. 若要讓虛擬主機 widgets 在 IP 位址 129.128.127.126 的通訊埠 80 以及所有 IP 位址的通訊埠 1880 上接收連線,請在 /etc/http/server1.httpd.conf 內加上以下設定:


    url //widgets {
    	site_enable					 "yes"
    	site_path							 "/var/http/server1/websites/widgets"
    	site_config						"conf/widgets.site.conf"
    	conn_end_points		129.128.127.126:80:1880
    }

註解 -

IP 位址不設定在冒號 (:) 左邊,係內定於 HTTP 1.1 虛擬主機中的「所有 IP 位址」。請注意此處設定的所有連線端點都必須用 port{} 區塊加以對應。


修改站台層級配置檔案

Sun WebServer 1.0 url{} 區塊的大部份配置指令都可以直接複製到 Sun WebServer 2.0 站台層級配置 /var/http/server1/websites/widgets/conf/widgets.site.conf 內繼續使用,但以下情形例外:

對應

Sun WebServer 2.0 的所有 URL 對應設定都存放在另外一個檔案 map.conf 內。

轉換對應設定指令
  1. 假設 Sun WebServer 1.0 的 /etc/http/httpd.conf 檔案內有以下設定:


    url //widgets {
    	map 		/cgi-bin/			/var/http/shared/cgi-bin/			cgi
    }
  2. 請在 widgets 站台的 /var/http/server1/websites/widgets/conf/map.conf 檔案內加入以下這一行:


    map 		/cgi-bin/			/var/http/shared/cgi-bin/			cgi

mime_add

轉換 mime_add 指令
  1. 假設 Sun WebServer 1.0 的 /etc/http/httpd.conf 內含有以下設定:


    url //widgets {
    	mime_add 				"image/jpeg"					"JPG"
    }
  2. /var/http/server1/websites/widgets/conf/widgets.site.conf 內的 mime_file 指令註解去掉:


    url //widgets {
    	mime_file				"conf/mime.types"
    }
  3. 將以下新的 mime 對應設定加入 /var/http/server1/websites/widgets/conf/mime.types 檔案內:


    image/jpeg					JPG

port{}區塊

Sun WebServer 2.0 內的 port{} 區塊有兩個主要的改變: 由於主機接聽用的通訊埠已經改成用 url{} 區塊內的 conn_end_points 指令加以設定,因此 hosts_supported 指令已經不能使用了,而且所有通訊埠都必須設定 ip_address。0.0.0.0 這個特殊的 IP 位址表示「此電腦上所有正確的 IP 位址。

轉換特定 IP 位址的 port{} 區塊
  1. 假設以下 Sun WebServer 1.0 port{} 區塊:


    port 80 {
    	ip_address									129.128.127.126
    	keepalive_enable			"yes"
    	request_timeout				180
    	hosts_supported					widgets
    }
  2. 修改 /etc/http/server1.httpd.conf內的 widgets url{} 區塊,將 conn_end_points 設定改正:


    url //widgets {
    	site_enable 					"yes"
    	site_path								"/var/http/server1/websites/widgets"
    	site_config						"conf/widgets.site.conf"
    	conn_end_points			129.128.127.126:80
    }
  3. port{} 區塊加入 /etc/http/server1.httpd.conf 內(不要有 hosts_supported 指令):


    port 80 {
    	ip_address									129.128.127.126
    	keepalive_enable			"yes"
    	request_timeout				180
    }
轉換所有 IP 位址的 port{} 區塊
  1. 假設以下的 Sun WebServer 1.0 port{} 區塊範例:


    port 1880 {
    	keepalive_enable				"yes"
    	request_timeout					180
    	hosts_supported					widgets
    }
  2. 修改 /etc/http/server1.httpd.conf 內的 widgets url{} 區塊,將 conn_end_points 改正:


    url //widgets {
    	site_enable							"yes"
    	site_path 								"/var/http/server1/websites/widgets"
    	site_config							"conf/widgets.site.conf"
    	conn_end_points			:1880
    }
  3. /etc/http/server1.httpd.confport{} 區段內加上含 0.0.0.0 值的 ip_address 指令:


    port 1880 {
    	ip_address									0.0.0.0
    	keepalive_enable			"yes"
    	request_timeout				180
    }

轉移 Sun WebServer 1.0 的 access.acl 檔案

Sun WebServer 1.0 的存取權控制到 Sun WebServer 2.0 已經有很大的改變。要將舊的 Sun WebServer 存取權控制結構轉移到新版之前,請先閱讀 Wun WebServer 2.0 的存取權控制文件。以下列出最明顯的改變之處:

要將 Sun WebServer 1.0 access.acl 檔案轉移成 2.0,必須建立或選擇一個辨證領域,將對應的 URL 存取權控制語法改成符合新的 2.0 語法,並將 access.acl 檔案和委託檔案內的存取權控制收集在每個網站的 access.conf 檔案內。

領域

在 Sun WebServer 1.0 中,realm 設定指引除了當作瀏覽程式的識別碼之外(顯示在辨證對話框內),並無其他多大用處。但在 Sun WebServer 2.0 內,領域設定了早先存在的一組使用者與群組,以辯證是否有權存取某個 URL。領域資料存放在 realms.conf 檔案內。 HTPASSWD 領域有各自的目錄(定義於 realm.conf 中),其中含有進行辨證時會用到的 users 與 groups 檔案。因此 Sun WebServer 1.0 ACL 中的 password_file 以及 group_file 設定指引便沒有作用了。所有 1.0 的領域在 2.0 中都是 HTPASSWD 領域,因為這些使用者建立的資料庫是 1.0 中唯一的資料來源。

轉移到 Sun WebServer 2.0 領域
  1. 假設主機 widgets 的 Sun WebServer 1.0 /etc/http/access.acl 存取權控制設定如下:


    url /reports {
    	realm															Managers
    	authentication_type		basic
    
    	password_file							/usr/auth/Managers/Maners_users
    	group_file										/usr/auth/Managers/Managers_groups
    
    	+ group														report_managers
    	- user															Joe
    }
  2. 建立一個領域以存放密碼和群組檔案,方法如下:


    # htrealm add -i server1 -h widgets -r Managers -s HTPASSWD
    

    以上指令會在站台的 realms.conf 中加入以下設定:


    realm Managers {
    	realm_source HTPASSWD
    }

    以上指令也會在站台建立以下目錄:


    /var/http/server1/websites/widgets/conf/realms/Managers/
  3. 將 users 與 groups 檔案複製到 Managers 目錄內:


    # cp /usr/auth/Managers/Managers_users \
    	/var/http/server1/websites/widgets/conf/realms/Managers/users
    # cp /usr/auth/Managers/Managers_groups \
    	/var/http/server1/websites/widgets/conf/realms/Managers/groups
    
  4. 刪除 Sun WebServer 1.0 ACL 中的檔案設定指引,然後將新的 ACL 放入 Sun WebServer 2.0 ACL 檔案內: /var/http/server1/websites/widgets/conf/access.conf:


    url /reports {
    	realm 															Managers
    	authentication_type			basic
    
    	+ group 													 report_managers
    	- user															Joe
    }

委託

Sun WebServer 2.0 已經不再採用委託的觀念。以前放在委託檔案內的所有存取權控制,都必須移到各站台的 access.conf 檔案內集中放置。

轉換委託 ACL
  1. 假設以下的 Sun WebServer 1.0 ACL 與委託檔案:

    • /etc/http/access.acl 中的 ACL:


      url /statistics {
      	delegate 		/var/http/acls/.admin_acl
      }
    • /var/http/acls/.admin_acl 檔案:


      realm 									admin
      password_file		/usr/auth/admin_user
      group_file					/usr/auth/admin_group
      
      + group								stat_admins
    • 這些都必須收合到同一個 ACL 內:


      註解 -

      請先建立領域 admin ,方法請參閱前一個範例。



      url /statistics {
      	realm 		 admin
      	+ group		stat_admins
      }
轉換委託 ACL(進階方法)
  1. 假設以下的 Sun WebServer 1.0 ACL 與委託檔案:

    • access.acl 內的 ACL:


      url /statistics {
      	delegate 		/var/http/acls/.admin_acl
      }
    • /var/http/acls/.admin_acl 檔案 (此檔案擁有權屬於 joe:adm


      realm 									 admins
      password_file			/usr/auth/admin_user
      group_file						/usr/auth/admin_group
      
      + group									stat_admins
  2. 這些設定必須收合到一個 ACL::


    url /statistics {
    	realm					 admins
    
    	administrators {
    		user					 joe
    		group				 adm
    	}
    
    	+ group				stat_admins
    }

Sun WebServer 轉換

以下範例示範 Sun WebServer 1.0 httpd.confaccess.acl 轉換成 Sun WebServer 2.0 的完整過程。除非轉換需要用到新的 2.0 設定指引,否則新的 2.0 設定指令在以下範例中一律不予處理。

Sun WebServer 1.0 httpd.conf 轉換成 2.0
  1. 假設以下 Sun WebServer 1.0 /etc/http/httpd.conf 檔案:


    server {
    	server_root								"/var/http/demo"
    	server_user								"root"
    	mime_file										"/etc/http/mime.types"
    	mime_default_type			text/html
    
    	acl_enable									"yes"
    	acl_file											"/etc/http/access.acl"
    	acl_delegate_depth		3
    	cache_enable							"yes"
    	cache_small_file_cache_size	8
    	cache_large_file_cache_size	256
    	cache_max_file_size									1
    	cache_verification_time					10
    
    	map			 /cgi-bin/					/var/http/demo/cgi-bin/			cgi
    	map				/sws-icons/			/var/http/demo/sws-icons/
    
    	mime_add		"appication/java"				class
    	mime_add		"audio/basic"								au
    	mime_add		"audio/basic"								snd
    }
    
    url {
    	doc_root									 "/var/http/demo/public"
    	user_doc_enable			"no"
    	user_doc_root					"public_html"
    	cgi_enable							 "no"
    	cgi_dns_enable		"no"
    	cgi_suffix_enable	    "no"
    	cgi_user										"nobody"
    	log_type										"elf"
    	log_prefix								"/var/http/logs/http"
    	log_max_files						7
    	log_cycle_time					1440
    	log_max_file_size		1048576
    	ssi_enable									"no"
    	ssi_exec											"no"
    	ssi_xbithack							"off"
    
    	mime_add								"application/x-csh"		csh
    	mime_add								"application/xsh"				sh
    }
    
    url //widgets {
    	doc_root								 "/var/http/widgets/public"
    	user_doc_enable		"yes"
    	user_doc_root				"public_html"
    	cgi_enable						 "yes"
    	cgi_dns_enable			"yes"
    	cgi_suffix_enable	 "yes"
    	cgi_user									"nobody"
    
    	log_type								"clf"
    	log_prefix						"/var/http/logs/widgets"
    	log_max_files				7
    	log_cycle_time			1440
    	log_max_file_size		1048576
    	ssi_enable							"yes"
    	ssi_exec									"yes"
    	ssi_xbithack					"full"
    
    	map 		/cgi-bin/				/var/http/widgets/cgi-bin/		cgi
    	map 		/sws-icons/		/var/http/widgets/sws-icons/
    }
    
    port 80 {
    	keepalive_enable			"yes"
    	request_timeout				180
    }
    
    port 1880 {
    	ip_address										129.128.127.126
    	keepalive_enable			"yes"
    	request_timeout				180
    	hosts_supported				widgets
    }
  2. 建立一個新的伺服器以便轉換(以 1.0 的設定值為新伺服器而建立的配置檔案,我們將予以修改):


    #htserver add "server1"
    
  3. 加入一個站台:


    # hthost add -i server1 -h widgets \
    	-s /var/http/server1/websites/widgets
    
  4. 修改伺服器層級檔案 /etc/http/server1.httpd.conf


    server {
    	server_root						"/var/http/server1/"
    	server_user						"root"
    	mime_file								"/etc/http/mime.types"
    	mime_default_type	 	text/html
    	access_enable					"yes"
    	cache_enable						"yes"
    	cache_small_file_cache_size		8
    	cache_large_file_cache_size		256
    	cache_max_file_size									 1
    	cache_verification_time					 10
    }
    
    url {
    	site_path					/var/http/server1/websites/default_site
    	site_config			"conf/default_site.site.conf"
    	site_enable			"yes"
    }
    
    url //widgets {
    	site_enable				"yes"
    	site_path						"/var/http/server1/websites/widgets"
    	site_config				"conf/widgets.site.conf"
    	conn_end_points	129.128.127.126:1880 :80
    }
    
    port 80 {
    	ip_address							0.0.0.0
    	keepalive_enable	"yes"
    	request_timeout		180
    }
    
    port 1880 {
    	ip_address						129.128.127.126
    	keepalive_enable	"yes"
    	request_timeout			180
    }
  5. 修改 /etc/http/mime.types


    application/java				class
    audio/basic									au snd
  6. 修改 /var/http/server1/websites/default_site/conf/default_site.site.conf


    url {
    	doc_root						/var/http/demo/public
    
    	map_file						conf/map.conf
    	realm_file				conf/realms.conf
    	access_file			conf/access.conf
    	content_file		conf/content.conf
    	mime_file					conf/mime.types
    
    	user_doc_enable		"no"
    	user_doc_root				"public_html"
    	cgi_enable							"no"
    	cgi_dns_enable			"no"
    	cgi_suffix_enable	"no"
    	cgi_user									"nobody"
    	log_type									"elf"
    	log_prefix							"/var/http/server1/logs/default"
    	log_max_files					7
    	log_cycle_time				1440
    	log_max_file_size	 1048576
    	ssi_enable							"no"
    	ssi_exec									"no"
    	ssi_xbithack					"off"
    }
  7. 建立 /var/http/server1/websites/default_site/conf/mime.types


    application/x-csh			csh
    application/x-sh				sh
  8. 修改 /var/http/server1/websites/default_site/conf/map.conf


    map 		/cgi-bin/				 /var/http/demo/cgi-bin/		cgi
    map			/sws-icons/			/var/http/demo/sws-icons/
  9. 修改 /var/http/server1/websites/widgets/conf/widgets.site.conf


    url {
    	doc_root						/var/http/widgets/public
    
    	map_file						conf/map.conf
    	realm_file				conf/realms.conf
    	access_file			conf/access.conf
    	content_file		conf/content.conf
    	mime_file					conf/mime.types
    
    	user_doc_enable			"yes"
    	cgi_enable							 "yes"
    	cgi_dns_enable				"yes"
    	cgi_suffix_enable	 "yes"
    	cgi_user									 "nobody"
    	log_type									 "clf"
    	log_prefix							 "/var/http/server1/logs/widgets"
    	log_max_files					7
    	log_cycle_time				1440
    	log_max_file_size		1048576
    	ssi_enable								"yes"
    	ssi_exec										"yes"
    	ssi_xbithack					  "full"
    }
  10. 修改 /var/http/server1/websites/widgets/conf/map.conf


    map 	/cgi-bin/				 /var/http/widgets/cgi-bin/ 	cgi
    map 	/sws-icons/			/var/http/widgets/sws-icons/
Sun WebServer 1.0 access.acl 轉換成 2.0
  1. 假設以下 Sun WebServer 1.0 /etc/http/access.acl 檔案以及 /var/http/widgets/widgets.acl委託檔案:

    • /etc/http/access.acl:


      url "/sws-administration" {
      	authentication_type			md5
      	realm																serverAdmin
      	password_file								 /etc/http/swsadmin.pw
      	+ user															 *
      }
      
      url "/statistics" {
      	authentication_type			basic
      	realm																statsRealm
      	password_file								/var/http/demo/stats/usrs
      	group_file											/var/http/demo/stats/grps
      	+ user															*
      }
      
      url "//widgets" {
      	delegate										/var/http/widgets/widgets.acl
      }
    • /var/http/widgets/widgets.acl:


      url "/" {
      	authentication_type			basic
      	realm																widgetsRealm
      	password_file								/var/http/widgets/users
      	group_file											/var/http/widgets/groups
      
      	+ user						 *
      	- user						 Joe
      	- group						thoseDenied
      }
  2. 建立一個整體serverAdmin領域(在 /etc/http/realms/ 中),並將其使用者檔案換成 /etc/http/swsadmin.pw


    註解 -

    若已經有這個領域,只要執行複製指令即可。



    # htrealm add -r serverAdmin -s HTPASSWD
    # cp /etc/http/swsadmin.pw /etc/http/realms/serverAdmin/users
    
  3. 建立一個整體 statsRealm,並以設定於上述 "/statistics" URL 中的檔案取代其 users 與 groups 檔案。將此新的領域加入內定站台以及 widget 的 realms.conf 檔案內:


    註解 -

    底下的<hostname> 是指工作站的 主機名稱,用以設定內定站台。



    # htrealm add -r statsRealm -s HTPASSWD
    # cp /var/http/demo/stats/usrs /etc/http/realms/statsRealm/users
    # cp /var/http/demo/stats/grps /etc/http/realms/statsRealm/groups
    # htrealm add -i server1 -h widgets -r statsRealm \
    	-s HTPASSWD -d /etc/http/realms/statsRealm
    # htrealm add -i server1 -h <主機名稱> -r statsRealm \
    	-s HTPASSWD -d /etc/http/realms/statsRealm
    
  4. 在此 widgets 站台建立一個區域 widgets 領域 ,並以上述檔案取代其 users 與 groups 檔案:


    # htrealm add -i server1 -h widgets -r widgets領域 -s HTPASSWD
    # cp /var/http/widgets/users \
    	var/http/server1/websites/widgets/conf/realms/widgetsRealm/
    # cp /var/http/widgets/groups \
    	/var/http/server1/websites/widgets/conf/realms/widgetsRealm/
    
  5. 修改 /etc/http/access.conf


    url /sws-administration {
    	authentication_type				md5
    	realm																	serverAdmin
    
    	+ user																*
    }
  6. 修改 /var/http/server1/websites/default_site/conf/access.conf


    # Specify /sws-administration ACL here for site administration,
    # 	create a siteAdmin realm and add administrators to that realm
    # url "/sws-administration" {
    # 	authentication_type			md5
    # 	realm																siteAdmin
    # 	+ user															*
    # }
    
    url "/statistics" {
    	authentication_type				basic
    	realm 																statsRealm
    
    	+ user																*
    }
  7. 修改 /var/http/server1/websites/widgets/conf/access.conf


    # Specify /sws-administration ACL here for site administration
    url "/statistics" {
    	authentication_type				basic
    	realm																	statsRealm
    
    	+ user															*
    }
    
    url "/" {
    	authentication_type				basic
    	realm															 		widgetsRealm
    
    	+ user																*
    	- user																Joe
    	- group															thoseDenied
    }