本页面记述在 Linux 上使用 Apache 服务器安装 MoinMoin 维基例程的步骤。 在此之前,你应该完成../基本安装。在其他类Unix操作系统上,比如FreeBSD,安装步骤是类似的。
有两种可能情况。你可能是服务器的管理员(root),可以安装和修改计算机上的每一个文件,特别是可以修改 Apache 的配置文件。你也可能只是普通用户,只能对自己 home 目录下的文件进行写操作,不能修改Apache的配置文件。下面讨论这两种情况。
目录
目录
管理员 (root)
大多数 GNU/Linux 发行版事先安装好了 Apache。但是,Apache文件的具体位置可能有所不同。你应该查阅发行版手册,或者在适当的讨论区上寻求答案。在接下来的章节中,我们假设一个文件系统的(几乎标准的)布局如下:
/etc/httpd/httpd.conf - Apache 主配置文件
/var/log/httpd/error_log - 包含 Apache 错误信息的日志文件
有些发行版使用 apache 代替 httpd 作为目录名,其他的发行版也可能使用奇怪的设置。
创建维基例程
创建维基例程的操作包括拷贝文件和设置适当权限。在继续操作之前,你应该明确Apache服务器以什么用户和组运行。最简单的方法是运行下面的命令:
> egrep "^User|^Group" /etc/httpd/httpd.conf User wwwrun Group nogroup
上面显示了一个典型的结果: "wwwrun.nogroup"。其他常见结果包括 "nobody.nogroup", "apache.apache" 和 "www-data.www-data"。你当然可以使用自己的方式来设置。重要的你应该知道到底是哪一个结果,因为你还需要利用它们来设置文件权限。
这个信息清楚之后,请阅读../创建维基例程,然后按照下面的步骤来做。
安装 moin.cgi
需要拷贝 moin.cgi。它用于连接 MoinMoin 和 Apache。你可以把这个脚本放在任何位置 (MoinMoin文件的路径可以任意配置,以适合文件系统的布局)。但是为了简单和安全起见,我们建议你按照下面的例子进行操作,除非你认为自己可以做的更好。
我们将在例程目录下创建一个 cgi-bin 子目录。使用../创建维基例程中定义的环境变量,运行下面的命令:
> cd $WIKILOCATION/$INSTANCE > mkdir cgi-bin > cp $SHARE/server/moin.cgi cgi-bin > chown -R $USER.$GROUP cgi-bin > chmod -R ug+rx cgi-bin > chmod -R o-rwx cgi-bin
配置 moin.cgi
当 moin.cgi 运行时,它导入 MoinMoin 模块,而 MoinMoin 模块接着导入其他模块和配置文件. 虽然 MoinMoin 模块在正确配置 (如../基本安装所述) 的系统中总可以被找到,但是配置文件不一定会存在。编辑 moin.cgi 脚本来纠正它。 在文件顶端添加这些文字:
import sys sys.path.insert(0, '..')
你也可以使用包含wikiconfig.py文件的目录的绝对路径来代替 '..'.
配置 Apache
现在所有文件都到位了,并且正确的设定了权限,我们需要配置 Apache。但是,由于不同的发行版中其默认的 Apache 配置各不相同,而且管理员经常会对配置文件作出不同的添加和更改,我们无法给出涵盖所有情况的精确建议。相反,我们首先大致的描述有哪些要做的操作,然后给出一些特定的配置,你可以把它们添加到Apache配置文件的适当位置。
你的Apache安装后应该是这样的:
- 访问例程目录是被拒绝的 (安全的 Apache 配置应该拒绝对对整个服务器的的访问,而仅仅开放一些特定的目录)。
设置了一个 alias,将把对 /wiki/的访问 (in the URL) 重定向到 htdocs 目录(如../基本安装所述,在 share 目录下)。
设置了一个 script alias,将把任何你希望的访问 (我们建议你使用例程的名字,比如/mywiki) 重定向到你刚刚拷贝的CGI脚本。
下面的命令会在你的 Apache 配置文件底部增加两行。它们只涵盖上述的最后两条。你应该自己检查第一条 (Linux发行版中的变化实在是多种多样)。注意你可能需要将这两行拷贝到配置文件中适当的位置 -- 也许在其他类似的某些行配置的附近。
> echo "" >>/etc/httpd/httpd.conf > echo "Alias /wiki/ \"$SHARE/htdocs/\"" >>/etc/httpd/httpd.conf > echo "ScriptAlias /mywiki \"$WIKILOCATION/$INSTANCE/cgi-bin/moin.cgi\"" >>/etc/httpd/httpd.conf
你只需要定义 htdocs 的 alias 一次。你需要对不同维基例程定义不同的 script alias。
配置 MoinMoin
最后,检查例程目录下的wikiconfig.py文件是否包含 htdocs url_prefix,例程的 data 目录,underlay 目录的正确路径。 你可以使用相对路径,但是注意它们应该是相对于GCI脚本而不是相对于配置文件的!你也可以使用绝对路径,这样不会出错。
如果你一直听从我们之前的建议,那么这个配置文件中的设置应该如下所示:
data_dir = '../data/' data_underlay_dir = '../underlay/' url_prefix = '/wiki'
还有一些其他设置可以更改,详细内容请看../创建维基例程。
测试维基
现在一切都应该工作正常了。现在应该 重新启动 Apache 服务器 (通常使用 "/etc/init.d/apache restart", 有时候是 "apachectl restart") ,然后操作如下:
运行 MoinMoin CGI Diagnosis: 连接 "http://127.0.0.1/mywiki?action=test" (或者是你在 Apache 配置文件中设置的名字和端口)。确认显示了正确的信息。检查 Checking directories... 下面列出的目录状态都是 OK.
使用 "http://127.0.0.1/mywiki/" 访问你的新维基(或者是你在 Apache 配置文件中设置的名字和端口)。应该可以看到 FrontPage.
- 如果上面操作正常,试着编辑并保存。
如果上面操作正常,查看你的更改是否在最新改动页面上体现出来了。
- 如果上面操作正常,祝贺你,你的维基可以正常运行了!
如果有错误发生,请看页面底部的问题解答。
Apache 技巧
高级配置和其他技巧,请看 帮助-其他。
普通用户 (安装在 home 目录)
在多人共享的计算机上,普通用户没有管理员权限,不能修改 httpd.conf 文件,不能将文件拷贝到系统所属的 cgi-bin 和 htdocs 目录。在这种情况下,无法在 Apache 中设置 UserDir 使得每个用户都可以在 home 目录下建立网站。如果管理员却是如此设置服务器,那么所有以 "/~username" 开始的 URLs 都会被重定向到用户的 home 目录下的子目录,用户对这些目录有写权限,可以安装MoinMoin.
下面,我们以用户 "mm" 为例。当然,下面所有的 "mm" 都可以替换成你自己的用户名。
确认 /~username 工作正常
只有管理员 (root) 允许的情况下,home 目录安装方式才可以正常工作。所以,第一步是检查其是否可以正常工作。一般来说,Apache 会被配置成使用 home 目录中的 public_html 子目录作为网站的根目录。所以,第一步是检查这个目录是否存在。
> ls -ld ~/public_html drwxr-xr-x 2 mm users 4096 Nov 30 00:29 public_html
如果目录不存在,就新建一个,确保它可以被网络服务器读取和访问。
> mkdir public_html > chmod a+rx public_html > ls -ld ~/public_html drwxr-xr-x 2 mm users 4096 Nov 30 00:35 public_html
现在检查 "/~mm" URL 是否工作正常:
> lynx -error_file=/dev/stderr -dump http://localhost/~mm/ >/dev/null URL=http://localhost/~mm/ (GET) STATUS=HTTP/1.1 200 OK
如果是 "200 OK" 的结果,那表明它工作正常,你可以进行下一步检查了。如果是 "403 Forbidden" 或者是 "404 Not Found",那么可能是目录有些问题,或者可能是管理员禁止了这些功能。
检查home (~) 和 public_html目录的权限,它们的权限应该分别是 "--x" 和 "r-x"。
也有可能是管理员设置了其他的个人网站的目录名字。默认值是 "public_html",但也可能使用其它值。你必须向管理员(root)询问详细信息。
- 如果个人网站功能被禁用了,也许你可以让管理员打开这个功能?
如果可以读取该目录下的文件,你还需要检查在这个目录下是否能够执行CGI脚本。使用下面的命令在适当的位置新建一个简单的CGI脚本:
> mkdir -p ~/public_html/cgi-bin > cat > ~/public_html/cgi-bin/test.cgi #!/bin/sh echo Content-Type: text/plain echo echo "CGI scripts work" <CTRL-D> > chmod a+rx ~/public_html/cgi-bin/test.cgi > lynx -dump http://localhost/~jh/cgi-bin/test.cgi CGI scripts work
如果结果不是"CGI scripts work", 那说明又有问题了。检查目录的权限,试试其他的名字。最糟糕的情况是你没有权限运行CGI脚本。你必须让管理员(root)给你设置权限。
如果有了权限,你就可以在 public_html 目录下创建维基例程了。
创建维基例程
创建维基例程的操作包括拷贝文件和设置适当权限。请阅读 ../创建维基例程,按照其所描述的步骤进行操作。
安装 htdocs 文件
网络服务器需要访问这些文件,所以我们要把它们拷贝到"public_html"目录。
> cd ~/public_html > cp -R ~/share/moin/htdocs wiki > chmod -R a+rX wiki
安装 moin.cgi
需要拷贝 moin.cgi。它用于连接 MoinMoin 和 Apache。你要把它放在可以运行CGI脚本的目录。下面是默认的情况:
> cd ~/public_html > mkdir cgi-bin > cp $SHARE/server/moin.cgi cgi-bin > chmod -R a+rx cgi-bin
配置 moin.cgi
当 moin.cgi 运行时,它导入 MoinMoin 模块,而 MoinMoin 模块接着导入其他模块和配置文件. 由于所有文件都安装到了home目录,所以它们可能都无法找到。编辑 moin.cgi 脚本来纠正它。 在文件顶端添加这些文字:
When moin.cgi is launched, it imports a MoinMoin module (that in turn imports other modules and the configuration file). Since everything has been installed in your home directory, it is likely none of these will be found. Edit the moin.cgi script to correct that. Add these lines near the top of the file:
import sys sys.path.insert(0, '/home/mm/lib/python2.3') sys.path.insert(0, '/home/mm/lib/python2.3/site-packages') sys.path.insert(0, '/home/mm/share/moin/mywiki')
当然,你应该根据实际情况修改这些路径。前两行用于定位 MoinMoin 模块,最后一行用于定位 wikiconfig.py 文件。
注意: 可能需要编辑这个文件的第一行,将它指向 Python 的正确版本,默认值应该可以运行,如果不行的话可以使用 "#! /usr/bin/python2.3"。
注意 2: 在这个文件中有一行 request = RequestCGI(). 如果你使用复杂的 mod_rewrite,可以在括号中添加 properties = {'script_name': '/mywiki'} 。这样 MoinMoin 可以生成以 /mywiki 开头的URLs:
def handle_request(req, env, form): request = RequestCGI(req, env, form, properties = {'script_name': '/mywiki'}) request.run()
配置 MoinMoin
最后,检查例程目录下的 wikiconfig.py 文件中是否包含正确的htdocs目录,例程data目录,underlay目录的路径。可以使用相对路径,但注意它们是相对于CGI脚本的,而不是相对于配置文件的!你也可以使用绝对路径,这样不会出错
data_dir = '/home/mm/share/moin/mywiki/data/' data_underlay_dir = '/home/mm/share/moin/mywiki/underlay/' url_prefix = '/~mm/wiki'
测试维基
现在一切都应该工作正常了。现在按照下面的步骤来操作:
运行 MoinMoin CGI Diagnosis: > lynx -dump http://localhost/~mm/cgi-bin/moin.cgi?action=test
使用 "http://127.0.0.1/~mm/cgi-bin/moin.cgi" 访问你的新维基(或者是你在 Apache 配置文件中设置的名字和端口)。应该可以看到 FrontPage。
- 如果上面操作正常,试着编辑并保存。
如果上面操作正常,查看你的更改是否在最新改动页面上体现出来了。
- 如果上面操作正常,祝贺你,你的维基可以正常运行了!
如果有错误发生,请看下面的问题解答。
问题解答
你可以在 ../问题解答中看到更多信息。
当维基工作不正常的时候,首先应该使用命令 "tail /var/log/httpd/error_log" 来显示最近的错误。通常,你可以看到发生了什么错误,比如说缺少权限之类的。
Adding permission to serve the htdocs directory
In some (sane) Linux distributions (like SuSE 9.0) serving directories other than the document-root "/srv/www/htdocs" with Apache is switched off by default for security reasons in "/etc/httpd/httpd.conf" (or for Apache2 "/etc/apache2/httpd.conf"):
# forbid access to the entire filesystem by default <Directory /> Options None AllowOverride None Order deny,allow Deny from all </Directory>
To allow Apache to serve directories outside of the document root you have to add these lines to "/etc/httpd/httpd.conf" (in SuSE it is recommended to create a new "http.conf.local" and include this file in "/etc/sysconfig/apache2"):
Alias /wiki/ "/usr/share/moin/htdocs/" <Directory "/usr/share/moin/htdocs/"> Order deny,allow Allow from all </Directory> ScriptAlias /mywiki "/usr/share/moin/mywiki/cgi-bin/moin.cgi" <Directory "/usr/share/moin/mywiki/cgi-bin"> Order deny,allow Allow from all </Directory>
Of course, you need to adapt the paths to your particular situation.
此页的英文版本: HelpOnInstalling/ApacheOnLinux