在Lighttpd Web服务器上安装Drupal 6.4(Debian Etch)
版本1.0
作者:Falko Timme
本指南介绍如何在Debian Etch上的lighttpd Web服务器上安装Drupal 6.4 。 Drupal附带一个.htaccess文件,其中的mod_rewrite规则(对于Apache)不适用于lighttpd。 没有这个.htaccess文件,您的Drupal安装中不可能有干净的URL。 幸运的是有一种方法使lighttpd的行为好像可以读取.htaccess文件一样。
我不会保证这将为您工作!
1初步说明
我已经在Debian Etch服务器上测试过这个,其中lighttpd和PHP5已经安装并工作(例如,在本教程中 )。 在本教程中,我将使用主机名www.example.com
和lighttpd的默认文档root / var / www
(我将在其中安装Drupal)进行演示。 当然,您也可以使用任何其他vhost,但您可能需要调整lighttpd.conf
。
2安装mod_magnet
我将使用一个名为drupal.lua
的文件,其中包含Drupal所需的重写规则(例如,用于干净的URL)。 Lighttpd需要模块mod_magnet ,以便可以了解drupal.lua
文件。 所以我们安装mod_magnet ...
apt-get install lighttpd-mod-magnet
...并启用它:
lighty-enable-mod magnet
接下来我们下载drupal.lua
文件:
cd /etc/lighttpd
wget http://nordisch.org/drupal.lua
(如果下载链接由于某种原因不起作用,这里是drupal.lua
文件的内容:
-- little helper function function file_exists(path) local attr = lighty.stat(path) if (attr) then return true else return false end end function removePrefix(str, prefix) return str:sub(1,#prefix+1) == prefix.."/" and str:sub(#prefix+2) end -- prefix without the trailing slash local prefix = '/drupal' -- the magic ;) if (not file_exists(lighty.env["physical.path"])) then -- file still missing. pass it to the fastcgi backend request_uri = removePrefix(lighty.env["uri.path"], prefix) if request_uri then lighty.env["uri.path"] = prefix .. "/index.php" local uriquery = lighty.env["uri.query"] or "" lighty.env["uri.query"] = uriquery .. (uriquery ~= "" and "&" or "") .. "q=" .. request_uri lighty.env["physical.rel-path"] = lighty.env["uri.path"] lighty.env["request.orig-uri"] = lighty.env["request.uri"] lighty.env["physical.path"] = lighty.env["physical.doc-root"] .. lighty.env["physical.rel-path"] end end -- fallthrough will put it back into the lighty request loop -- that means we get the 304 handling for free. ;) |
)
因为我想直接在文档根目录( / var / www
)中安装Drupal,而是在子目录中打开/etc/lighttpd/drupal.lua
,并将local prefix ='/ drupal'
更改为local prefix =''
:
vi /etc/lighttpd/drupal.lua
[...] -- prefix without the trailing slash local prefix = '' [...] |
接下来,我打开/etc/lighttpd/lighttpd.conf
,并更改index-file.names
和url.access-deny
的值,并将一个用于magnet.attract-physical-path
的行添加到
:
vi /etc/lighttpd/lighttpd.conf
[...] ## files to check for if .../ is requested #index-file.names = ( "index.php", "index.html", # "index.htm", "default.htm" ) index-file.names = ( "index.php" ) ## Use the "Content-Type" extended attribute to obtain mime type if possible # mimetype.use-xattr = "enable" #### accesslog module accesslog.filename = "/var/log/lighttpd/access.log" ## deny access the file-extensions # # ~ is for backupfiles from vi, emacs, joe, ... # .inc is often used for code includes which should in general not be part # of the document-root #url.access-deny = ( "~", ".inc" ) url.access-deny = ( "~", ".inc", ".engine", ".install", ".module", ".sh", "sql", ".theme", ".tpl.php", ".xtmpl", "Entries", "Repository", "Root" ) magnet.attract-physical-path-to = ( "/etc/lighttpd/drupal.lua" ) [...] |
最后我重新启动lighttpd:
/etc/init.d/lighttpd restart
Lighttpd现在已经准备好了Drupal 6.4。