求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
     
   
分享到
Linux环境下快速搭建维基网站
 

发布于2013-5-10

 

Web 2.0这一概念,由O'Reilly媒体公司总裁兼CEO提姆·奥莱理提出。他是美国IT业界公认的传奇式人物,是“开放源码”概念的缔造者,一直倡导开放标准,并活跃在开放源码运动的最前沿。 在Web2.0革命中,维基(Wiki)的起源比博客还要早。博客是自己一个人编写维护,每天更新博客会让你思维枯竭,维基技术和支持它的网页就能够让大家群策群力一起交流共同爱好。维基对所有人包括浏览Wiki页面的人都是全开放的。也就是说,每个人都可以任意创建、修改和删除网站上的页面内容。维基和博客相比更加具有团队精神。

通常我们将Wiki翻译为“维基”,到底何为Wiki?Wiki一词来源于夏威夷语的“wee kee wee kee”,原本是“快点快点”(quick quick)的意思。Wiki是一种在线多人协作的超文本系统写作工具。Wiki站点支持面向社群的协作式写作,每个人都可以发表自己的见解,或者对共同维护的主题进行扩展。Wiki同时也包括一组支持这种写作的辅助工具,可以在Web的基础上对Wiki页面的文本进行创建,更改和发布,比做网页和更新网页简单方便得多。第一个 Wiki 网站诞生于 1995 年,创始人Ward Cunningham 为方便其创建的社群的交流建立了一个工具-波特兰模式知识库(Portland Pattern Repository)。在建立这个系统的过程中,Ward Cunningham创立了Wiki这一概念和名称,并且实现了支持这一概念的服务系统。这个系统就是最早的Wiki系统。从1996年至2000年间,波特兰模式知识库围绕着面向社群的协作式写作不断发展,使Wiki的概念不断得到丰富延伸。同时Wiki的概念也得到了广泛传播,出现了许多基于此技术的网站和软件系统。

实际上 wiki 也真的是既简单又快速,你可以看到 wiki 每天都在成长。新概念的定义总是让人有点摸不着头脑,wiki 也不例外。先看看简单解释:Wiki——一种多人协作的写作工具。Wiki站点可以有多人(甚至任何访问者)维护,每个人都可以发表自己的意见,或者对共同的主题进行扩展或者探讨。Wiki指一种超文本系统。这种超文本系统支持面向社群的协作式写作,同时也包括一组支持这种写作的辅助工具。我们可以在Web的基础上对Wiki文本进行浏览、创建、更改,而且创建、更改、发布的代价远比HTML文本为小;同时Wiki系统还支持面向社群的协作式写作,为协作式写作提供必要帮助;最后,Wiki的写作者自然构成了一个社群,Wiki系统为这个社群提供简单的交流工具。与其它超文本系统相比,Wiki有使用方便及开放的特点,所以Wiki系统可以帮助我们在一个社群内共享某领域的知识。

Wiki 可以做什么:

1. Wiki 使用了简化的语法,替代复杂的 HTML,加上 WEB 界面的编辑工具,降低内容维护的门槛;

2. Wiki 通过文本数据库或者关系型数据库实现了版本控制,可以随时找回以前的版本,也可以和以前的版本进行对比,版本控制使多人协作成为可能,又保护了内容不会丢失;

3.任何信息都可以被任何人修改和删除,页面内容保持了一致性,因为清除垃圾文字、广告是那么的容易,最终剩下的是最有意义的内容;任何人都可以参与,但是最后剩下的是最好的参与者;

4.Wiki 通过协作精神,实现了快速的信息整合;"Wiki" 这个单词本身来自于夏威夷语,就是快速的意思,"WikiWiki"自然就是极快的意思了。

想要开始wiki的方式分为两种,一种是到wiki空间提供网站注册,注册完后就可以开始了。另外一种就是在自己的计算机上架设一个wiki,好处是没有储存空间限制,缺点是整个过程稍微麻烦一点,还有必须要有不错的上传频宽,当造访人数不多时,家用的ADSL就够用了,但如果有一天你的wiki红透半边天,那么上传速度缓慢的ADSL恐怕会让你的读者感到痛苦。虽然在自己的计算机上架设wiki好象有缺点,但是自由度相对的也比较大,这里,我们就教你如何十分钟在你的计算机上架设好wiki。

一、准备工作

首先配置一个基于Apache的LAMP服务器和ImageMagicK软件,后者主要用于对图像进行转换、编辑、组合、特殊处理等,是一款非常好用的图像处理工具。它支持对多种格式的图像进行处理,最多支持的图像格式有157种格式,包括目前流行的TIFF、JPEG、PNG、PDF、PhotoCD及GIF等。Image MagicK还支持动态图像创建,这一点非常适合在Web页面上使用。使用MM Cache加速PHP:

由于 PHP 的程序代码去调用了太多的函式库,而这些函式库每次调用都需要由硬盘读出来,有没有办法提升 PHP 的执行速度。如果我们可以将这些在硬盘里面的函式库先读到高速缓存中( Cache ),由于内存的速度可比硬盘快多了。如此一来的话,当然可以提升不少速度。这里我们介绍一款授权在 GPL 上面的可以对 PHP 程序代码进行快取并且予以优化的软件,那就是 MM Cache官方网站在:http://www.turcksoft.com/ 。目前 MM Cache 最新版本:2.4.6 。

1、软件下载和安装

wegt http://jaist.dl.sourceforge.net/ ... mcache-2.4.6.tar.gz

cd /usr/local

tar -xvf turck-mmcache-2.4.6.tar

cd turck-mmcache-2.4.6

export PHP_PREFIX=”/usr”

$PHP_PREFIX/bin/phpize

./configure--enable-mmcache=shared --with-php-config=$PHP_PREFIX/bin/php-config

make;make install

修改/usr/local/lib/php.ini 文件,加入以下内容:

extension=”mmcache.so”

mmcache.shm_size=”16”

mmcache.cache_dir=”/tmp/mmcache”

mmcache.enable=”1”

mmcache.optimizer=”1”

mmcache.check_mtime=”1”

mmcache.debug=”0”

mmcache.filter=””

mmcache.shm_max=”0”

mmcache.shm_ttl=”0”

mmcache.shm_prune_period=”0”

mmcache.shm_only=”0”

mmcache.compress=”1”

然后建立临时取数据目录:

#mkdir /tmp/mmcache

#chmod 0777 /tmp/mmcache

从新启动Apache服务器:

#/usr/local/httpd/bin/apachectl start

安装MM Cache后网页速度明显加快了,具体数据可以查看:http://sourceforge.net/projects/turck-mmcache/ 对比报告。

二、搭建维基网站

1. 维基引擎的选择

MediaWiki全球最著名的开源wiki引擎,运行于PHP+MySQL环境。从2002年2月25日被作为维基百科全书的系统软件,并有大量其他应用实例。目前MediaWiki的开发得到维基媒体基金会的支持。MeidaWiki一直保值着持续更新,当前最新版本为1.4.13(2006-1-5)和1.5.6(2006-1-19)稳定版本。MediaWiki的原作者为德国的Magnus Manske。为什么要选择mediawiki来做wiki网站?

1.经受过重量级应用的考验,功能丰富却架设简单。

2.全世界最大的wiki项目维基百科是使用mediawiki的成功范例,数据量、访问量都超级庞大 mediawiki的功能非常丰富,支持多语言版本,充分满足知识站点的需要。

3.运行环境要求很低,架设过程简洁,即使新手也可以迅速建立自己的站点。

4.最大的wiki程序社区:mediawiki是目前应用最广的wiki程序,数以万计的网站在使用它,很容易找到范例站点有大量的热心参与人员参与研究,资料多,容易找到互相交流的朋友。例如QQ群3680101(技术群)。持续开发,程序特性功能不断完善,保证未来的支持 mediawiki是受到维基媒体基金会支持的开源项目,在功能、性能、安全方面将不断优化。

版本选择:

1.5.X:具备目前最多特性的新版本。与1.4.X相比,一些管理问题尚不够稳定;从1.4.X升级过来也有诸多不便的细节,例如丢失大量的mediawiki变量的本地化信息(变量改了)

1.4.X:目前最为稳定完善的系列。

所以最后选择:1.4.6版本。

2.wiki软件下载:

#cd var/www/html

#wegt http://keihanna.dl.sourceforge.n ... iawiki-1.4.6.tar.gz

#tar vxf mediawiki-1.4.6.tar.gz

#mv mediawiki-1.4.6 wiki“建立一个目录”

3.建立数据库:

# mysql –u root –p

Enter password: xxxxxxxxx  

Your Mysql connection id is 3 to server version: 4.11

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

Mysql> create mediawiki database ;   “为建立数据库”

Query OK, 1 row affected (0.01 sec)

Mysql>grant all mediawiki privileges on mediawiki.* to mediawiki@localhost identified by ‘76543981’ ; “将建立的mediawiki 权限给mediawiki 帐号,并且设定密码”

mysql>exit

Bye

4.开始安装:

(1)

#cd /var/www/html/wiki #进入到Apache 服务器的确省目录中#

#chmod a+w(777)config  #赋予文件和目录的可以执行权限#

进行网络安装安裝非常简单通常需要以下几个步骤:打开Linux的Firefox火狐浏览器在地址栏直接输入:http://主机名/wiki/index.php 后,出现安装前准备工作界面,见图1。

图1 安装向导设定

以上内容主要以下部分:为了读者填写方便笔者把它作一个列表:

填写系统信息 填写内容 说明

Site config 站点设置

Site name: Cjh 站点别名

Admin mail address goodcjh@xxx.net 系统管理员电子邮件

Language zh-cn 简体中文 语言设定

Copyright/license metadata GNU Free Documentation License 1.2 (Wikipedia-compatible) 遵守的版权协议

Sysop account name: 管理员用户名称 名称建议英文

password XXXXXXXX 管理员的密码

again: XXXXXXXX 再次输入管理员的密码

Shared memory caching Memcached Php加速服务器类型

Memcached servers localhost 主机别名

Database config MYSQL数据库设定

MySQL server localhost 数据库主机名称

Database name Wiki 数据库名称

DB username Wiki 数据库管理员帐号

DB password xxxxxxxx 数据库管理员密码

again xxxxxxxx 再次输入数据库管理员密码

Database table prefix Wiki_ 数据库表格字首

DB root password xxxxxxx 数据库root账号密码

填写结束后按“install ”按钮进行安装,系统如果出现图2表示安装成功,如果有错误(错误处会用红色标出)会自动退回到图1的对话框让你从新设定。

图2 系统安装成功

执行了浏览器安装过程後,在config目录下会自动生成一个LocalSettings.php的本地配置文件。把它LocalSettings.php移动到上级目录中。然后点击图4页面右下角处:“this Link”链接就可以看到完成安装的wiki首页了。见图3。

图 3 维基首页

到此为止,我们初步建立wiki网站。下面要高效、安全运行它还需要一些管理方法。

三、管理Wiki网站

Wiki后台管理功能很完善,通过简单的特殊页面完成这些功能。首先登录,点击“特殊页面”选择“用户登录”即可。见图4。

图4 维基的用户登录界面

图5 维基参数设置界面

Wiki管理特点:自动产生链接,编辑文本中中括号中的内容(如“[[X条目]]”)将自动产生链接 允许使用模板,方便对相同内容的重复使用、更新 支持分类,并根据分类在不同的文章之间自动产生关联 ,允许每个用户自行选择系统外观。

Wiki 的管理员特殊页面的参数设置,一共九个大版面:“用户数据”、“快速导航条设置”、“皮肤”、“数学显示”、“文字框尺寸”、“时区”、“最近更新”、“搜索结果设定”、“杂项”。另外在帮助的首页中的常见问题回答。这样你也可以自己轻松wiki网站了。

5.开始工作

参数设置完成后,就可以开始工作。界面见图6。

图6 维基编辑的界面

维基页面的内容编辑过程类似于文本编辑器的使用。点击页面上方的“编辑本页”标签,即可打开一个编辑页面;在其中修改或输入新的内容后,点击下方的“保存本页”按钮后,修改内容将被记录下来。对于分成多个段落的文章,每段标题的右侧会有[编辑]字样,可点击进入单独段落的编辑过程。编辑页面下方的“简述”栏用来输入本次编辑的摘要,这将会显示在最近更改及页面历史中,用于提醒当时编辑的原因和主要改动内容。如果进行了复杂版式修改而不能确定效果时,可以先点击“显示预览”按钮,确认修改正确后再保存。为防止意外丢失编辑成果,建议使用外部文本编辑器进行长时间编辑,完成后再复制到编辑页面保存。(常见意外包括:服务器故障、网络不稳定、浏览器异常、编辑冲突等)。

四、提高维基网站的安全性

1. 维基管理口令安全

Wiki以平和信任的观点来对待所有愿意接触它,了解它和壮大它的人,其根本理念就认为上认为不会有人故意破坏Wiki网站。Wiki是全开放的,万一有陌生人来网站上乱搞怎么办?别担心,所有的Wiki 页面都可以进行版本控制,你随时都可以找回之前的正确版本,有效地保护内容不会丢失。Wiki最高管理权限是Sysop用户,所以要合理设置其登录口令。口令系统安全的第一道防线,但常常因为系统管理员对于“小概率事件”的错误印象变得很脆弱。用单词作密码是根本架不住暴力攻击的。黑客们经常用一些常用字来破解密码。曾经有一位美国黑客表示,只要用“password”这个字,就可以打开全美多数的计算机。其它常用的单词还有:account、ald、alpha、beta、computer、dead、demo、dollar、games、bod、hello、help、intro、kill、love、no、ok、okay、please、sex、secret、superuser、system、test、work、yes等。好的口令根本不是指口令本身,而是指这种方法:设置的密码容易记住,但很难被破解。我们所说的密码是指多个密码,这样即使有人猜出了其中一个口令,也不知道你的所有口令。以下是口令设置方面的准则,可以帮你创建无法被猜中但又容易记住的密码。选择核心短语。开始要选一个至少5个单字长的短语。这可以是某首歌的头一行、一句引语或者是书名——只要你记在脑海中的都行。然后利用该短语创建核心口令,通常的办法是取每个单词的头一个字母。比如tcith,这是书名《The Cat in the Hat》的头一个字母组成的口令。这个简单的步骤可以保护你,以免有人运行所谓的字典式攻击:字典里面的每个单字(还有许多专有名称)都被试过,直到正确的单字被找到为止,电脑可以在很短时间内完成字典式攻击。密码设置和原则:

1).足够长,指头只要多动一下为密码加一位,就可以让攻击者的辛苦增加十倍;

2). 不要用完整的单词,尽可能包括数字、标点符号和特殊字符等;

3).混用大小写字符;

4).经常修改。

2.使用.htaccess来保护Apache服务

.htaccess文件是Apache服务器上的一个设置文件。它是一个文本文件,可以使用任何文本编辑器进行编写。首先在要设置存取控制的目录(如htdocs)下建立一个文件,文件名可以自行设定,一般服务器都会设置为.htpasswd,该文件是不能由HTTP读取的。.htpasswd文件中的每一行代表一个使用者,使用者的名字及经过加密的密码以冒号:分隔。  

3. 以安全模式运行PHP

以安全模式运行PHP是使PHP脚本安全使用的好方法,特别是在允许用户使用自己开发的PHP脚本时。使用安全模式会使PHP在运行函数时检查是否存在安全问题。include、readfile、fopen、file、unlink、rmdir等等:被包含的文件或者该文件所在目录的所有者必须是正在运行的脚本的所有者;

Mysql_Connect:这个函数用可选的用户名连接MySQL数据库。在安全模式下,用户名必须是当前被执行的脚本的所有者,或运行httpd的用户名(通常是nobody)。

HTTP Authentication:包含HTTP验证代码脚本所有者的用户ID(数字型)会自动加到验证域。这样可以防止有人通过抓取密码的程序来欺骗同一个服务器上的HTTP验证脚本。

4.根据需要对系统服务进行控制

服务是一种在系统后台运行的应用程序类型,它与Linux守护进程类似。如果可能的话,尽量使用本地账号而不是域账号作为服务账号,因为如果某人物理上获得了服务器的访问权限,他可能会转储服务器的LSA机密,并泄露密码。如果你使用域密码,森林中的任何计算机都可以通过此密码获得域访问权限。而如果使用本地账户,密码只能在本地计算机上使用,不会给域带来任何威胁。一个基本原则告诉我们,在系统上运行的代码越多,包含漏洞的可能性就越大。你需要关注的一个重要安全策略是减少运行在你服务器上的代码。这么做能在减少安全隐患的同时增强服务器的性能。在Linux中缺省运行的服务有很多,但是有很大一部分服务在大多数环境中并派不上用场。 关闭MySQL的网络功能,mysqld进程启动时,会自动寻找/etc/my.conf这个配置文件。绑定网络地址需要通过命令行参数进行控制。比如,在/etc/init.d/mysql脚本中找到以下代码:

$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file&

并将其修改为:

$bindir/safe_mysqld --datadir=$datadir ... --skip-networking&

这样就可以完全关闭MySQL的网络功能。

5.限制管理员权限

系统管理员具有最大的权限,而该权限可能会与其它的板主权限相冲突而造成不可预期的错误,所以最好不要让系统管理员当版主。另外用root权限运行MYSQL也不太安全,这里推荐使用其他用户运行MYSQL。方法是:

# mysql -u root -p

Enter password:xxxxxxxxx

………

mysql>update user set user="cao" where user="root";

mysql> flush privileges;

mysql>quit

Bye

以后就得通过cao帐号访问mysql数据库了。

6. 关闭Mysql远程连接

首先,应该关闭3306端口,这是MySQL的默认监听端口。由于此处MySQL只服务于本地脚本,所以不需要远程连接。尽管MySQL内建的安全机制很严格,但监听一个TCP端口仍然是危险的行为,因为如果MySQL程序本身有问题,那么未授权的访问完全可以绕过MySQL的内建安全机制。关闭网络监听的方法很简单,mysqld进程启动时,会自动寻找/etc/my.conf这个配置文件。在/etc/my.cnf文件中的[mysqld]部分,去掉#skip-networking前面的“#”即可。另外要尽量养成在mysql下输入密码的习惯,因为Shell下面输入的时候可能会被其它人看见。

总结:

LAMP和mediawiki可以组成一个优秀的维基网站,可以在互联网上运行,也可以在Linux局域网中运行。有了维基一个用户就可以低成本地发布、更新和维护自己的维基网站。在预算短缺的今天,LAMP+mediawiki组成维基网站无疑具备明显的价格优势。

 
相关文章

中台产品面面观
如何在互联网产品中建立中台?
什么是产品生命周期管理?
产品设计之前,如何分析业务需求和用户痛点?
 
相关文档

产品经理是怎样炼成的
APP产品规划方法
产品经理培训文档
产品生命周期管理PLM
 
相关课程

产品经理与产品管理
卓越产品经理训练营
产品需求分析与管理
基于用户体验的产品设计
 
分享到
 
 


基于模型的整车电子电气架构设计
嵌入式设备上的 Linux 系统开发
Linux 的并发可管理工作队列
ARM嵌入式系统的问题总结分析
嵌入式系统设计与实例开发
WinCE6.0的EBOOT概要
更多...   


UML +RoseRealtime+嵌入式
C++嵌入式系统开发
嵌入式白盒测试
手机软件测试
嵌入式软件测试
嵌入式操作系统VxWorks


中国航空 嵌入式C高质量编程
使用EA和UML进行嵌入式系统分析设计
基于SysML和EA的嵌入式系统建模
上海汽车 嵌入式软件架构设计
北京 嵌入式C高质量编程
北京 高质高效嵌入式开发
Nagra linux内核与设备驱动原理
更多...