ubuntu搭建lighttpd以及cgi配置
Ubuntu搭建Lighttpd服務器以及CGI配置
這里我的源碼都放在/usr/local/src/下
一、安裝pcre(正則表達式庫,解決C語言中使用正則表達式的問題)
1、下載地址:
? ? http://www.pcre.org/????(里面選pcre、pcre2都可)
2、解壓
????tar -zxvf pcre2-10.30.tar.gz??
3、配置安裝
1)進入Pcre目錄
cd ?pcre2-10.32
2)配置
?? ./configure
3)編譯
? make
4)安裝
make install
?
二、安裝bzip2
1、下載地址
http://www.bzip.org/
2、解壓
? ?tar -zxvf bzip2-1.0.6.tar.gz
3、配置安裝
1)進入bzip2目錄
cd bzip2-1.0.6
2)設(shè)置配置選項
make -f Makefile-libbz2_so
-f 標志使bzip根據(jù)另一個Makefile來編譯(Makefile-libbz2_so),生成 libbz.so,然后把bzip2工具連接到這個庫上
3)編譯安裝
make && make install
?
三、安裝Lighttpd
1、下載地址
http://www.lighttpd.net/download/????(lighttpd-1.4.53 )
?
2、解壓
tar -zxvf lighttpd-1.4.53.tar.gz
3、安裝
1)創(chuàng)建目錄
創(chuàng)建lighttpd(/usr/local/src/lighttpd)
mkdir /usr/local/src/lighttpd
2)進入源碼目錄
cd /usr/local/src/lighttpd-1.4.53
3)配置安裝目錄
./configure --prefix=/usr/local/src/lighttpd
4)編譯安裝
make && make install
4、配置服務器
1)創(chuàng)建相關(guān)文件
在/usr/local/src/lighttpd下創(chuàng)建相關(guān)文件
mkdir {cache,config,log,sockets,run,www,vhosts}
?
?
2)拷貝源文件doc/config目錄下的lighttpd.conf、modules.conf、conf.d文件夾到安裝目錄的config下
?cp?/usr/local/src/lighttpd-1.4.53/doc/config/lighttpd.conf /usr/local/src/lighttpd/config
cp /usr/local/src/lighttpd-1.4.53/doc/config/modules.conf /usr/local/src/lighttpd/config
cp -r /usr/local/src/lighttpd-1.4.53/doc/config/conf.d /usr/local/src/lighttpd/config
?
3)修改lighttpd.conf
//var.xxx是建立一些變量,用來給server.xxx賦值
?
var.log_root ???= "/usr/local/src/lighttpd/log"
?//日志的目錄,運行起來后會在該目錄下生產(chǎn)access.log ?error.log文件
?
var.server_root = "/usr/local/src/lighttpd/www"
var.state_dir ??= "/usr/local/src/lighttpd/run"
//運行起來會在該目錄下創(chuàng)建lighttpd.pid
?
var.home_dir ???= "/usr/local/src/lighttpd"
var.conf_dir ???= "/usr/local/src/lighttpd/config"
?
var.vhosts_dir ?= home_dir + "/vhosts"
?
var.cache_dir ??= home_dir+"/cache"
?
var.socket_dir ?= home_dir + "/sockets"
?
server.port = 80
?//服務器端口號,80是默認的,瀏覽器訪問不用加端口號 如果已經(jīng)被占用,可改 ??為8080,瀏覽器訪問要加 :8080
?
server.use-ipv6 = "disable" //禁止使用IPV6
?
server.bind = "192.168.112.128" ?
//綁定ip地址,虛擬機的IP,主機如果要訪問虛擬機要保證能ping通,不行的話 ??//在主機中打開VMnet8虛擬網(wǎng)卡
?
server.username ?= "nobody"
//設(shè)置用戶名和組名,nobody為任何人都可以等于系統(tǒng)
#server.groupname = "nobody"// 用戶組這邊沒有nobody,直接注釋掉這行
?
server.document-root = server_root + "/webpages"
//設(shè)置網(wǎng)站文件根目錄,瀏覽器訪問就是訪問到這個目錄下的文件
?
server.pid-file = state_dir + "/lighttpd.pid"
//指定pid文件運行起來自動創(chuàng)建
?
server.errorlog = log_root + "/error.log" //log_root下創(chuàng)建error.log
?
server.upload-dirs = (home_dir + "/upload")
?
注意如果服務器運行起來要創(chuàng)建文件的目錄下不能創(chuàng)建文件,把那個文件夾權(quán)限改為777
?
4)測試服務器
- cd /usr/local/src/lighttpd/sbin
- 測試Lighttpd.conf文件語法是否正確
./lighttpd -t -f ../config/lighttpd.conf
? ? ? ? ? ?返回 Syntax OK 表示正確
- 啟動lighttpd ?./lighttpd -f ../config/lighttpd.conf
? ? ? ?停止服務器pkill lighttpd
- 啟動服務器后在document-root目錄下創(chuàng)建index.html
? ? ? ?內(nèi)容寫hello world!
- 在瀏覽器輸入http://192.168.112.128(填lighttpd中bind的ip)
? ? ? ? 如果出來網(wǎng)頁并顯示hello world!說明服務器搭建成功
?
5、配置CGI
1)修改modules.conf
?
server.modules = (
??"mod_access", //基礎(chǔ)模塊
# ?"mod_cgi",
??"mod_alias", //路徑綁定 用來指定CGI路徑
# ?"mod_auth",
# ?"mod_authn_file",
# ?"mod_evasive",
# ?"mod_redirect",
# ?"mod_rewrite",
# ?"mod_setenv",
# ?"mod_usertrack",
)
?
?
##
## plain old CGI (mod_cgi)
##
include "conf.d/cgi.conf" //引入cgi.conf
?
注意上面server.modules 不用添加CGI模塊,因為在conf.d/cgi.conf里面有server.modules += ( "mod_cgi" ),如果這里添加了,會報錯:
?Cannot load plugin mod_cgi more than once, please fix your config lighttpd may not accept such con
?
2)修改cgi.conf
CGI程序可以用C/C++語言等需要編譯的語言寫,也可以用python、perl、ruby等直接解釋執(zhí)行的語言寫,這兩種他們的執(zhí)行方式是不同的:一個是程序直接可以被執(zhí)行;一個是需要特定的語言解釋器來執(zhí)行。這樣的話,web server配置時也會不同。
?
這里有兩種方式
方式一:不重定向路徑,cgi文件要放在document-root下,訪問時加document-root下路徑。
?
?
cgi.assign??= ( ".pl" ?=> "/usr/bin/perl",
?????????????????# ".cgi" => "/usr/bin/perl",
?????????????????".cgi" => "", ?//設(shè)置.cgi文件不需要解釋器(本來就是編譯好的可執(zhí)行文件)
?????????????????".rb" ?=> "/usr/bin/ruby",
????????????????".erb" => "/usr/bin/eruby",
????????????????".py" ?=> "/usr/bin/python" )
?
訪問:http://192.168.112.128/cgi-bin/h.cgi
? ? ? ? ?(h.cgi放在/usr/local/src/lighttpd/www/webpages/cgi-bin/h.cig)
? ? ? ? ??http://192.168.112.128/h.cgi
? ? ? ? ?(h.cgi放在/usr/local/src/lighttpd/www/webpages/h.cig)
?
?
方式二:重定向路徑,cgi文件要放在重定向的目錄下,訪問時加重定向的路徑
?
cgi.assign ?= ( ".pl" ?=> "/usr/bin/perl",
???????????????# ".cgi" => "/usr/bin/perl",
???????????????# ".cgi" => "", //設(shè)置.cgi文件不需要解釋器(本來就是編譯好的可執(zhí)行文件)
???????????????".rb" ?=> "/usr/bin/ruby",
???????????????".erb" => "/usr/bin/eruby",
???????????????".py" ?=> "/usr/bin/python" )
?
?
alias.url += ( "/cgibin" => home_dir + "/cgibin" )
//使用alias之前server.modules要添加mod_alias做重定向
//重定向路徑cgibin到/usr/local/src/Lighttpd/cgibin,重定向的路徑可以不放在//document-root下
?
$HTTP["url"] =~ "^/cgibin" {
???cgi.assign = ( "" => "" )
//所有cgibin目錄下的程序,不需要語言解釋器(cgi.assign = ( "" => "" )),直接被執(zhí)行
}
訪問 http://192.168.112.128/cgibin/h.cgi ?
?//cgibin在/usr/local/src/Lighttpd/cgibin
?
方式二另一個重定向位置舉例
alias.url += ( "/cgi-bin" => server_root + "/webpages/cgi-bin" )
//cgi-bin重定向到/usr/local/src/Lighttpd/www/webpages/cgi-bin
?
$HTTP["url"] =~ "^/cgi-bin" {
???cgi.assign = ( "" => "" )
}
訪問http://192.168.112.128/cgi-bin/h.cgi
?//cgi-bin在/usr/local/src/Lighttpd/www/webpages/cgi-bin
?
?
除去以上兩種方式外,其他的程序(既不以特性的后綴結(jié)尾,也不放到指定目錄下),會被當成文件被下載。
?
?
?
3)測試cgi
在cgi-bin中創(chuàng)建hello_cgi.c
內(nèi)容
#include "stdio.h"
int main()
{
????????printf("Content-type:text/plain\r\n\r\n");
????????printf("hello_cgi\n");
????????return 0;
}
編譯 :gcc hello_cgi.c -o h.cgi
瀏覽器輸入 http://192.168.112.128/cgi-bin/h.cgi
如果出現(xiàn)hello_cgi 表示成功
總結(jié)
以上是生活随笔為你收集整理的ubuntu搭建lighttpd以及cgi配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 中的自举类,到底是什么?
- 下一篇: 东芝开发出业界首款2200V双碳化硅(S