在Lighttpd Web服务器上安装Drupal 6.4(Debian Etch)

在Lighttpd Web服务器上安装Drupal 6.4(Debian Etch) 本指南解释了如何安装Drupal 6.4 在Debian上的lighttpd网络服务器上...

在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.namesurl.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。