Mediawiki 简明架设指南

在 Debian/Linux 下

1. 安装程序

sh#apt-get install apache2
sh#apt-get install php5
sh#apt-get install php5-pgsql 或者 apt-get install php5-mysql
sh#apt-get install postgresql 或者 apt-get install mysql-server-5.0
sh#apt-get install mediawiki


2. sh#ln -s /var/lib/mediawiki /var/www/mediawiki


3. 浏览器打开 http://127.0.0.1/mediawiki 。 运行初始化安装。


4. sh#ln -s /var/www/mediawiki/config/LocalSettings.php /etc/mediawiki/LocalSettings.php


5. 允许上传图片
sh#nano /etc/mediawiki/LocalSettings.php
修改为:$wgEnableUploads = true;

sh#chmod o+w /var/www/mediawiki/images


6. 允许上传其它文件
sh#nano /var/www/mediawiki/includes/DefaultSettings.php
修改为:$wgFileExtensions = array('png', 'gif', 'jpg', 'jpeg', 'doc', 'xls', 'vsd');


7. 加 FCKeditor 编辑器

http://mediawiki.fckeditor.net 下载 http://www.fckeditor.net/nightly/FCKeditor_N.zip

解压到 /var/www/mediawiki/extensions

sh#nano /etc/mediawiki/LocalSettings.php

文件未增加内容:

require_once("$IP/extensions/FCKeditor/FCKeditor.php");
$wgUseAjax = true;

sh#nano /var/www/mediawiki/extensions/FCKeditor/fckeditor_config.js

文件未增加内容:

FCKConfig.AutoDetectPasteFromWord = true;
FCKConfig.CleanWordKeepsStructure = false;
FCKConfig.ForcePasteAsPlainText = false;


8.修改系统的邮件发送配置 sh#dpkg-reconfigure exim4-config

修改配置mediawiki的文件:

$wgErrorString = '';
 $html_errors = ini_get( 'html_errors' );
 ini_set( 'html_errors', '0' );
 set_error_handler( array( 'UserMailer', 'errorHandler' ) );
 wfDebug( "Sending mail via internal mail() function\n" );
 
 if (function_exists('mail')) {
 if (is_array($to)) {
 foreach ($to as $recip) {
 $sent = mail( $recip->toString(), wfQuotedPrintable( $subject ), $body, $headers );
 }
 } else {
 $sent = mail( $to->toString(), wfQuotedPrintable( $subject ), $body, $headers, );
 }
 } else {
 $wgErrorString = 'PHP is not configured to send mail';
 }

改为:

$params = "-oi -f [email protected]"; 
 
 $wgErrorString = '';
 $html_errors = ini_get( 'html_errors' );
 ini_set( 'html_errors', '0' );
 set_error_handler( array( 'UserMailer', 'errorHandler' ) );
 wfDebug( "Sending mail via internal mail() function\n" );
 
 if (function_exists('mail')) {
 if (is_array($to)) {
 foreach ($to as $recip) {
 $sent = mail( $recip->toString(), wfQuotedPrintable( $subject ), $body, $headers, $params );
 }
 } else {
 $sent = mail( $to->toString(), wfQuotedPrintable( $subject ), $body, $headers, $params );
 }
 } else {
 $wgErrorString = 'PHP is not configured to send mail';
 }

http://blog.csdn.net/wangxg_7520/archive/2009/06/16/4274180.aspx

<!-- NewPP limit report Preprocessor node count: 7/1000000 Post-expand include size: 0/2097152 bytes Template argument size: 0/2097152 bytes Expensive parser function count: 0/100 --><!-- Saved in parser cache with key wikidb:pcache:idhash:21-0!1!0!!zh-hans!2 and timestamp 20110210015552 -->

 
 

Mediawiki 简明架设指南(二)

<!-- start content -->

1、简单的权限设置

编辑/etc/mediawiki/LocalSettins.php,在require_once( “includes/DefaultSettings.php” )语句之后添加:

#Prevent new user registrations 
$wgWhitelistAccount = array ( “user” => 0, “sysop” => 1, “developer” => 1 ); 
#$wgGroupPermissions = array(); 
$wgGroupPermissions['*']['createaccount'] = false; 
$wgGroupPermissions['*']['read'] = true; 
$wgGroupPermissions['*']['edit'] = false; 

作用:

禁止新用户注册。管理员可以到登录页面(Special:UserLogin)里,输入一个用户名和email,然后点击“by email”,系统创建帐号并将随机密码发送到指定email里。

所有用户可读。

禁止匿名用户编辑。“编辑”标签仍会显示,但匿名用户点击时会被提示要求进行登录。

等式右侧的值决定各组成员的权限。左侧第一方括号内的’*'代表包括匿名用户在内的所有成员。登录用户控制存放在’user’组,这些将综合决定user_groups数据表中的成员权限。

2、修改logo

把图片放到/var/www/mediawiki下,然后编辑/etc/mediawiki/LocalSettins.php,添加:

$wgLogo="{$wgScriptPath}/×××××.jpg";

或者是直接采用网络地址:

$wgLogo="http://www.jobcn.com/****.jpg";

3、浏览器图标

把图片放到/var/www/mediawiki下,然后编辑/etc/mediawiki/LocalSettins.php,添加:

$wgFavicon="{$wgScriptPath}/×××××.ico";

或者是直接采用网络地址:

$wgFavicon="http://www.jobcn.com/favicon.ico";

4、邮件

邮件发送不成功的日志文件位置为/var/spool/exim4/msglog(一般情况下)

5、修改附件大小

Mediawiki中限制上传附件大小的位置有几处:

/etc/php5/apache2/php.ini 中有2个参数:post_max_size,upload_max_filesize(单位为兆)

页面警告/var/www/mediawiki/includes/DefaultSettings.php 中:$wgUploadSizeWarning (单位为字节)

因为我们是局域网所以apache或者nginx就不用设置了,如果在互联网中我们可能还是需要设置一下。

具体参见mediawiki官方技术文档中的Set maximum size for file uploads

设置完毕需要重启apache:

/etc/init.d/apache2 restart 

 

 

[编辑] 修改預設時區(法1)

修改LocalSettings.php,在頁尾加入 (#代表註解符號,可自行移除包含#符號到行尾的註解文字)

#Set Default Timezone
#修正「使用者簽名」的時區
$wgLocaltimezone = "Asia/Taipei";
#修正「最近更改」頁面的時區

$wgLocalTZoffset = +480; #時區偏移的分鐘數(MediaWiki v1.7.0): 台灣時區UTC +8,所以 8小時 * 60(分/小時) = 480分

  1. $wgLocalTZoffset = 8; #時區偏移的小時數 (MediaWiki v1.7.0 以前的版本)

[编辑] [編輯] 修改預設時區(法2)

修改LocalSettings.php,在頁尾加入

#Set Default Timezone
$wgLocaltimezone = "Asia/Taipei";
#Calculate the timezone offset with UTC
$oldtz = getenv("TZ");
putenv("TZ=$wgLocaltimezone");
# $wgLocalTZoffset = date("Z") / 3600;	# Versions before 1.7.0 used $wgLocalTZoffset as hours.
$wgLocalTZoffset = date("Z") / 60;	# After 1.7.0 offset as minutes
putenv("TZ=$oldtz");

<!-- end content -->

 

 

 

Wiki的增强搜索

出自Jobcnwiki

<!-- start content -->

由于MediaWiki本身的搜索功能对于中文搜索存在若干问题,因此采用Lucene替换原本的搜索功能。

1、下载

MWSearch
Lucene-search

2、安装

1、将“MWSearch”解压并放进mediawiki的extensions目录。

2、 将以下代码加入 LocalSettings.php

$wgSearchType = 'LuceneSearch';
$wgLuceneHost = '127.0.0.1'
$wgLucenePort = 8123;
require_once("extensions/MWSearch/MWSearch.php");
 
# uncomment this if you use lucene-search 2.1 
# (MUST be AFTER the require_once!)
#$wgLuceneSearchVersion = 2.1;

如果采用多搜索$wgLuceneHost = array( "192.168.0.1", "192.168.0.2" );

3、将以下代码加入AdminSettings.php,如果该文件不存在,则创建:

$wgDBadminuser = "database_admin_username";
$wgDBadminpassword  = "database_admin_password";

其中database_admin_username和database_admin_password更改为数据库的账号密码。

3、安装Lucene-search

Lucene-search 运行环境要求: Linux, Java 6+ (OpenJDK or Sun)。

 

Begin by downloading the binary release and unpack. Or, get the latest version from svn and then run "ant" to build the jar.

  • Generate configuration files by running:
 ./configure <path to mediawiki root directory>
  • 由于Lucene-Search默认语言为英文,因此需要更改为中文。编辑Lucene-search目录下的lsearch-global.conf,将[Database]下 (language,en)部分该为 (language,zh)。
  • If everything went without exception, build indexes
 ./build
This will build search, highlight and spellcheck indexes from xml database dump. For small wikis, just put this script into daily cron and installation is done, move onto Running.
For larger wikis, install Extension:OAIRepository MediaWiki extension and after building the initial index use incremental updater:
 ./update

4、配置自动启动

  • 在/etc/rc.local中加入:/usr/local/lucene-search-2.1.3/lsearchd &

5、配置自动更新索引

  1. crontab -e
  2. 加入:30 3,12 * * * /usr/local/lucene-search-2.1.3/build>>/var/log/lucene-search.build.log
  3. 保存退出即可。
<!-- end content -->

WikiSynatxHighlight

出自Jobcnwiki

<!-- start content -->

这里大概介绍一下语法高亮的用法,详细用法请看这里

1、简单编辑模式

大部分情况下可以直接使用"source"标签,后面跟语言类型,例如:

<source lang="php">
<?php
    $v = "string";    // sample initialization
?>
html text
<?
    echo $v;         // end of php code
?>
</source>
显示效果为:
<?php
    $v = "string";    // sample initialization
?>
html text
<?
    echo $v;         // end of php code
?>

ps:当我们高亮显示一些代码的时候,例如XML,中间很有可能出现 <source> 标签,这就与前面的标签冲突了,这时我们可以使用<syntaxhighlight>标签,以避免冲突的发生。

source的参数及功能如下:

   * lang: 定义语言
   * line: 是否启用行号
   * start: 开始的行号
   * highlight: 高亮的代码行
   * enclose: 包围代码的HTML标签
   * strict: 是否使用严格模式(是否严格按照某种语言的语法来分析代码using-strict-mode

举例如下:

<source lang="html4strict" line start="100" highlight="5">
HTML module goes here...
</source>

显示的结果:

  1. <table align=center style="background: ivory;color:maroon;font-style:italic;font-family:arial;font-weight:bold;font-size:10pt;"> 
  2. <tr><th> Heading 1 </th><th> Heading 2 </th></tr>
  3. <tr>
  4. <td style="padding:10px;"> This is cell 1 text </td>
  5. <td style="padding:10px;"> This is cell 2 text </td>
  6. </tr>
  7. </table>

2、富客户端编辑模式(FCK)

在这种模式下可以直接点击编辑器右上角的图标,然后在弹出的窗口中贴入代码、写上语言种类即可,如下图示例:

点击确定并预览下:

注意在这种模式下有些代码在我们预览的时候就会被消去,比如
<source lang="html4strict" line start="100" highlight="5">
中的 line start="100" highlight="5" 就消失不见了。 这个是编辑器的问题,出现这种情况后换用原来的简单模式进行最后添加修改。

WikiAccess

出自Jobcnwiki

跳转到: 导航, 搜索
<!-- start content -->

1、(权限极大型)用admin登陆,使用wiki的特殊页面,点击最下面的用户权限设置,输入一个用户名,点击编辑用户群组,就出现了wiki默认的分组,可以把这个用户加入 "操作员""行政员"中。那这个用户就和admin的权限是一样的大了。具有这个权限的用户可以查看、编辑所有页面!
2、(一般灵活型)这种方法能具体控制到一个页面(比如test):

2.1 建立用户组:
   使用admin登陆,建立一个页面,页面的名称叫 Usergroup:testgroup (Usergroup前缀必不可少,testgroup表示组名),然后编辑这个页面(用我的和小黎的用户名做示例),输入下列内容:

 
       *all()
       *zhuyx808
       *Freeze(ro)

  保存这个页面。
  (说明:第一句的意思就是所有人不可读(当然更不能编辑了);第二句的意思就是用户zhuyx808具有读写权限;第三句的意思就是用户freeze具有只读权限。)
2.2 建立页面test:
   新建一个页面test,编辑这个页面,在这个页面的最前面输入下列代码:

       <accesscontrol>testgroup</accesscontrol>
        …test页面的具体内容…

   保存后,这个页面就具有了下列的权限:
   a、admin和zhuyx808具有读写权限(阅读和编辑);
   b、admin、zhuyx808、freeze具有阅读权限;
   c、其余人无权查看

对最前面的一句代码的说明:accesscontrol中间写上有权限的组名testgroup,如果另外还有一个组testgroup2,那么代码将变为:
<accesscontrol>testgroup,,testgroup2</accesscontrol>
, 组1和组2中间是双逗号(,,);如果我想让testgroup可以编辑,而testgroup2只读(能读不能编辑),那么代码就可以写为:
<accesscontrol>testgroup,,testgroup2(ro)</accesscontrol>


2.3 综述:

 从上面的实现看,要实现我们的功能有很多种方式,比较灵活多样,代表性的二种方式就是:一、建立用户组的时候就直接把权限划定好;二、在我们要控制的页面中对一个大的组进行设定。

你可能感兴趣的:(mysql,PHP,linux,fckeditor,Lucene)