Unix/BSD/OpenBSD 作為 Web 伺服器的指南
OpenBSD 自帶了 Web 伺服器 httpd(8)。(儘管名稱相似,但這不是 Apache。)
要設定 Web 伺服器,首先需要配置它。建議從提供的示例配置開始。
cp /usr/src/etc/examples/httpd.conf /etc/httpd.conf vi /etc/httpd.conf
你可能希望首先從最小的配置開始,然後根據需要新增功能。下面是一個基本配置示例
ext_addr="egress"
server "default" {
listen on $ext_addr port 80
}
如果你想檢視可用的功能,請檢視 man(1) 頁面
man httpd.conf
檢查你的配置是否正確
httpd -n
最後,要使你的計算機提供頁面,你需要啟動守護程序
httpd
現在,將你的 html 檔案放在 /var/www/htdocs 中,你就可以使用瀏覽器訪問它們了。
如果你想在網頁上使用影像等檔案,你需要在 httpd.conf 中透過副檔名定義每個檔案的w:MIME 型別。例如,如果你想提供 Javascript、文字、HTML 和 SVG 檔案,你可以在 httpd.conf 中新增類似這樣的部分
types {
image/svg+xml svg;
application/javascript js;
text/txt txt;
text/html htm html;
}
使用者手冊中提到了其他有用的副檔名。(RUN: man httpd.conf [92%])
types {
image/gif gif;
image/jpeg jpeg jpg;
image/png png;
text/css css;
application/xml xml;
}
維基百科關於 MIME 型別的文章 列出了很多 MIME 型別。如果上面沒有列出,請在維基百科中搜索你想要提供的檔案型別。
對於伺服器端指令碼(使用諸如 Perl 或 PHP 等語言),你需要在 httpd.conf 中新增一些行。下面是一個配置示例
ext_addr="egress"
server "default" {
listen on $ext_addr port 80
location "/cgi-bin/*" {
fastcgi
root "/"
}
}
然而,這還不夠。OpenBSD 將其 Web 伺服器放在 chroot(8) 中 - 也就是說,在 Web 伺服器看來,根目錄是 /var/www。Web 伺服器無法看到你計算機上的任何其他檔案。這是出於安全原因 - 如果駭客獲得了你的系統訪問許可權,他們將擁有更少的資源。另一方面,這意味著你用於伺服器端指令碼的語言不存在。為了保持這種安全級別,你應該只複製你需要的檔案。
此外,請注意,fastcgi 可能無法滿足你的需求。如果事情無法正常工作,你需要執行 slowcgi(8)
slowcgi
要執行(使用上面的配置),你需要將你的 cgi 指令碼放在 /var/www/cgi-bin 中。
複製主 perl 二進位制檔案和所需的庫
mkdir -p /var/www/usr/bin mkdir -p /var/www/usr/lib mkdir -p /var/www/usr/libexec cp /usr/bin/perl /var/www/usr/bin/perl cp /usr/lib/libc.so.77.0 /var/www/usr/lib/libc.so.77.0 cp /usr/lib/libm.so.9.0 /var/www/usr/lib/libm.so.9.0 cp /usr/lib/libperl.so.15.0 /var/www/usr/lib/libperl.so.15.0 cp /usr/lib/libpthread.so.18.0 /var/www/usr/lib/libpthread.so.18.0 cp /usr/lib/libutil.so.12.1 /var/www/usr/lib/libutil.so.12.1 cp /usr/libexec/ld.so /var/www/usr/libexec/ld.so
在 chroot /var/www 中以 www 使用者身份測試你的指令碼,以檢查是否有任何缺少的模組或其他錯誤。
chroot -u www /var/www <command>
如果你對這篇文章做出了貢獻,請隨時新增你的使用者名稱。
- Orthogonal1- 開始頁面。