author: 顏文澤(robin)
Revision: 0.9
1. cd mc_httpd-x.x
2. ./configure --mandir=/usr/share/man
3. make
4. su root
5. make install
6. take look at the configuration file in doc/mc_httpd.conf and modify it for your needs.
7. cp doc/mc_http.conf /etc/mc_httpd.conf
8. exit
支持GET, HEAD, POST, DELETE 和 PUT。
支持 Accept, Accept-Charset, Accept-Encoding, Accept-Language, Host, If-Match, If-Modified-Since, If-None-Match, If-Range, Range, If-Unmodified-Since 和 User-Agent request頭部域。
支持Connection 和Date general 頭部域。
支持Etag, Location 和Server response頭部域。
支持Expires, Content-Encoding, Content-Length, Content-Location, Content-MD5, Content-Range, Last-Modified 和 Content-Type entity頭部域。
支持cookie和status頭部域。
支持cgi/1.1。
支持虛擬主機。
支持斷點下載。
支持斷點上傳。(注:content-length的值必須遵照HTTP/1.1中的示例)
支持Multi-line header field。
服務器不能用作代理服務器。
服務器不支持視頻和音頻。
注:命令行參數的優先級高於配置文件。並且命令行參數重啟時無法重新指定,所以除了-4,-6,-f選項外,其他的參數不建議使用。
-4:服務器進程以ipv4運行。
-6:服務器進程以ipv6運行。
注:如果-4和-6都不指定,具體的協議由服務器進程自己選定。例:ubuntu12.04會默認選擇ipv4, freebsd9.1會默認選擇ipv6。
-c:服務器進程將會測試用戶的環境和配置文件,然後輸出測試結果。服務器不會實際工作。
-x:調試選項。該版本不會工作。
-v:輸出服務器的版本信息。服務器不會實際工作。
-d:指定服務器的根目錄。例: -d /home/nns 服務器進程將會以/home/nns為根目錄運行(就是執行chroot(/home/nns/)操作)。
-f: 指定配置文件的路徑(必須為絕對路徑)。默認的配置文件路徑為/etc/mc_httpd.conf。
-u:指定服務器進程的uid。用戶名和用戶id都是可以接受的參數,服務器會自行轉換。
-g:指定服務器進程的gid,組名和組id都是可以接受的參數,服務器會自行轉換。
-p:指定端口號。
注:配置文件的參數的修改可以在重啟後生效。源碼doc目錄下有mc_httpd.conf的范本,用戶可以修改該文件,然後復制到/etc目錄下。
rootpath:指定服務器的根目錄。例:rootpath "/home/nns" 服務器進程將會以/home/nns為根目錄運行(就是執行chroot(/home/nns/)操作)。
cgitimelimit: cgi程序的運行時間限制。該版本不起作用。
timelimit:該版本不起作用。
maxrequests:該版本不起作用。
maxinterval:同一個鏈接兩個請求間的最大時間限制。
port: 指定端口號。
backlog:指定listen函數中的backlog值。
dirset: 0表示不顯示目錄。非0表示顯示目錄。
putset:0表示服務器禁止put辦法,非0表示服務器允許put辦法。
deleteset: 0表示服務器禁止delete辦法,非0表示服務器允許delete辦法。
mdaset:0表示服務器禁止發送Content-MD5頭部域,非0表示服務器默認發送Content-MD5頭部域。
etagset:0表示服務器禁止發送ETAG頭部域,非0表示服務器允許發送ETAG頭部域。
defaulttype: 當服務器無法鑒別文件的類型時,將使用該值。
defaultcharset: 服務器使用的字符集。
user:指定服務器進程的uid。用戶名和用戶id都是可以接受的參數,服務器會自行轉換。
group: 指定服務器進程的gid,組名和組id都是可以接受的參數,服務器會自行轉換。
tmppath: 服務器存放臨時文件的路徑。 例tmpath "/tmp/","/tmp/"前後的/可以添加也可以不添加,程序會自己處理。在本例子中的臨時目錄實際上是/home/nns/tmp(如果rootpath是/home/nns的話)。
logfile:服務器日志文件的路徑(絕對路徑)。用戶應該定期查看和清理該文件的內容。
pidfile:服務器存放服務器進程id的文件。
hosts:服務器虛擬主機設置。具體格式如下:
}
indexnames:服務器會處理的默認頁面。比如一個服務器的hosts 是
}
indexnames是
| }
那麼當服務器接受到nnsmgsone.com的請求時,它會查看/home/nns/www目錄下是否存在index.html和index.xhtm然後將頁面發送給浏覽器。(假定rootpath是/home/nns)
cgipaths: cgipaths目錄下的文件全部被當成cgi程序。如:
| }
那麼程序將會把/home/nns/cgi-bin和/home/nns/cgi目錄下的一切文件當成cgi程序處理。(假定rootpath是/home/nns)
errpage:指定程序的出錯頁面。如:
}
當服務器找不到一個頁面是就會將/home/nns/www/404.html回復給浏覽器。
假設rootpath是/home/nns/,hosts是
}
mimeencoding:指定mime encoding。
mimetype:指定mime type。
SIGTGERM: 溫柔的殺死進程。
SIGHUP: 重啟服務器進程。
如果要運行一個cgi程序,rootpath目錄下必須要有運行該程序的一切環境。例(假定rootpath是/home/nns):如果要運行一個shell文件,那麼/home/nns/bin/sh是必須的(可能還需要其他的文件),如果要運行一個perl程序,那麼 /home/nns/bin/perl和/home/nns/lib/libperl.so是必須的。