用 XAMPP 快速搭建 Joomla! 本地测试服务器

一个新手接触 Joomla! 的过程应该是这样的:看到这个词之后首先要弄明白“什么是Joomla!”,然后就想“试用一下看看”。可是,Joomla! 是 web 程序,它需要有服务器环境才能运行。如果你还不了解 Joomla! 是否合你意,就贸然去购买服务器空间来测试,恐怕你是不会愿意的。因此,对于一个迫切想要测试 Joomla! 如何安装、运行、操作的新手来说,最方便的莫过于在自己的 PC 电脑上搭建一个本地测试服务器。

本站曾经撰文介绍了 Ravenswood Joomla Server 这个服务器集成包,那也是我初次接触 Joomla! 时所用的测试服务器。然而 RJS 功能很有限。后来我才了解到 XAMPP 更合适。为了纠正前面的文章对新手的误导,我今天专门介绍一下用 XAMPP 搭建本地测试服务器的过程及注意事项。

 

build your local testing server with XAMPP for windows

XAMPP 这5个英文字母中,X 代表“多样性”、“内容丰富”,后面的4个字母依次代表:Apache、MySQL、php 和 Perl,因此它是一个功能全面的 AMPP 软件包。

XAMPP 还是完全免费的,它同时提供面向 Windows、 Linux、 MacOS 及 Solaris 8 等操作系统的版本。本文只介绍 xampp for windows 版本。

1、为什么选择 XAMPP?

虽然可以通过分别安装 Apache、MySQL 及 php 来搭建一个本地服务器,但是很明显这个过程比较复杂。尤其是第一次接触 Apache 服务器环境的新手,要想自己分步安装并配置好服务器,恐怕要费很大功夫。我不反对你的钻研精神,但是作为一个以研究 Joomla! 为目的的用户,我希望你搞清楚重点是什么。

同时,我必须提醒那些还无法抛弃“自己安装apache”的人:不要错误地以为亲手安装的服务器就一定性能很好,我完全有理由相信XAMPP胜过你的劳动成果。

既然我们用5分钟就可以搭建好一个本地服务器,何必自己在那里折腾呢?这就是我推荐 XAMPP 的理由。

2、XAMPP 包含哪些内容?

前面介绍了这几个字母所代表的部件名称,但这远远不是 XAMPP 的全部。简单来说,最新版本的 XAMPP 1.6.7 中已经包含:

  1. Apache 2.2.9
  2. MySQL 5.0.51b
  3. PHP 5.2.6 + PHP 4.4.9 + PEAR
  4. SQLite 2.8.15
  5. OpenSSL 0.9.8h
  6. phpMyAdmin 2.11.7
  7. ADOdb 4.98
  8. Mercury Mail Transport System v4.52
  9. FileZilla FTP Server 0.9.25
  10. Webalizer 2.01-10
  11. Zend Optimizer 3.3.0
  12. eAccelerator 0.9.5.3 for PHP 5.2.6

从上面可以看出,借助 XAMPP,你不仅可以获得一个 apache 服务器;同时还可以启动一个 FTP 服务器和一个 webmail 服务器;而且,你可以在 php4 与 php5 之间选择,很方便那些开发 php 程序的人;OpenSSL 可以提供 https:// 这样的加密协议;Webalizer 是著名的流量分析程序;Zend 和 eAccelerator 可以提供对加密过的 php 代码的解析服务。

除了这些,XAMPP 还自带了很多有用的小模块,如 GD 图像处理库、mod_rewrite 网址重写模块等等。详细信息你可以阅读 XAMPP 安装后根目录下的 readme.txt 说明文档。

试想一下,如果要你自己从头安装一个如此庞杂的服务器并且配置好让它们协同工作,需要多少时间?现在有了 XAMPP,我们只需要 5 分钟就能完成!

3、安装 XAMPP

首先请 下载XAMPP安装程序。如果官方网站无法下载,你就可以从本站的下载栏目得到。虽然文件名是 .exe 格式,实际上是一个 7-zip 自解压文件,运行后只进行解压缩操作,不会给 windows 的注册表增加任何内容。

 

 

说明一下:XAMPP 官方网站提供了多种格式的下载文件,我之所以选择 7-zip 的自解压包是因为这个格式的下载文件最小,约 32MB,方便下载。上图所示就是 XAMPP 下载到电脑后的外观。

点击这个 .exe 文件,它会询问你解压位置。强烈建议选择某个分区的根目录来解压!例如: D:\ 。解压时会自动在根目录下创建一个 xampp 目录。解压完成后不要移动、重命名任何文件。进入 D:\xampp 目录,应该看到如下画面:

 

如果你看到这样的画面,表示服务器安装完成了。这么简单?就这么简单!

{mospagebreak_scroll title=XAMPP内容简介及首次运行&heading=为什么选择XAMPP及其安装过程}

4、XAMPP 文件夹内容简介

这些目录及文件的名称已经基本上说明了自己的身份,因此相信你一看就明白。我只说明几个重要的地方:

htdocs 目录相当于 Unix 虚拟主机上面的 public_html 目录,相当于 IIS 服务器上面的 wwwroot,即所谓“网站根目录”。你将来要测试的 Joomla!,以及其它任何 php web 程序,都必须解压/上传到这个目录才能运行。

apache 及 php 目录含有一些配置文件,以后可能会需要进入这些目录来修改设置。

还可以看到有一些 .bat 格式的 DOS批处理程序,例如 apache_start.bat,含义已经很明显了,还需要解释吗?php-switch.bat 是用来切换 php4 与 php5 的。如果你将 XAMPP 解压到不是分区根目录的某个文件夹中,就必须用 setup_xampp.bat 来进行一次“安装”,来设定 XAMPP 的运行路径。

再认识两个重要的 .exe 程序,一个是 xampp_start.exe,一个是 xampp_stop.exe,相信你一看就明白它们的功能。没错!我们以后就要通过它们来分别启动和关闭服务器了。

有些高手可能对此嗤之以鼻,他们认为运行 xampp-control.exe 就可以把 apache 、php 、MySQL 等直接变成 windows 的系统服务(service),以后每次开机就自动运行了,何必那么麻烦每次 start 、stop 呢?我的理由是:这个测试服务器并非你 PC 上面工作的全部,如果把这个服务器变成系统服务,则会使电脑运行速度变慢。因此我推荐每次手动启动和关闭服务器。

5、第一次运行 XAMPP

那我们现在就点击一下  xampp_start.exe 吧,可以看到弹出一个 DOS 窗口,里面用英文提示你 apache 正在启动。

 

如果你没有看到这个画面,或者看到一个 DOS 窗口一闪即逝,很可能是其它某个正在运行的程序占用了 80 端口。例如:skype,老版本的 迅雷,等等。解决办法就是退出这些软件,先启动服务器,然后再运行它们。其实同样的问题在 RJS 也发生过。本站会员 next001 在论坛发了一个 查看端口占用情况的小工具,或许对你找到哪个软件占用了 80 端口有帮助。

直到你看到上面这样的 DOS 窗口稳定显示,才表示你正式启动了 XAMPP 服务器。你可以将这个窗口最小化,以方便你操作,但是不能关闭,一旦关闭此窗口,服务器也就关闭了。

现在打开浏览器,输入:http://localhost 或者 http://127.0.0.1 ,就可以看到如下界面:

 

至此,可以完全证明你的 XAMPP 运行正常。

为了后面测试 Joomla! 的工作顺利进行,你的浏览器可能还需要启用 Cookie,你的 windows 可能需要安装 Java Runtime Environment;你还可能需要同时具备 IE 浏览器和 FireFox 浏览器;你还可能需要安装 Adobe Flash Player 插件,等等。这些东西不是 XAMPP 的责任,但是弄不好会影响你测试的体验,因此请你自行解决。

{mospagebreak_scroll title=XAMPP 的初始参数及深入调节}

6、XAMPP 的初始参数

刚才的画面上其实有很多内容,我不知道你认真看了没有?有一些新手总是没有一个良好的学习习惯,我相信大多数人不会认真研究 XAMPP 初始页面上的内容。那上面“安装”和“phpinfo()”两项应该好好看看。

在全新安装之后,XAMPP 的一些默认设置必须交代一下,否则你后面就无从下手。实际上这些内容都在 readme 文档中,但是有些人就是不肯看。我也只好再次重复一下:

如果你按照本文示范将 XAMPP 安装在 D:\xampp 目录,那么你的网站根目录就是 D:\xampp\htdocs ;如果你进入这个目录看一下,就会发现里面并不是空的。所以,我不建议你以后测试时直接将 Joomla! 或者其它 web 程序“上传”到 htdocs 目录里面,而应该在里面建立一个子目录,例如 joomla,将程序安装到子目录里面测试。这样做的好处是使得 htdocs 目录看起来比较整洁。当然,你必须记住这样一来你访问 joomla 的 URL 就是: http://localhost/joomla

MySQL 数据库默认的用户名是 root,这也是拥有最高权限的管理员用户;其密码是空的,也就是没有。因此你在安装 joomla 过程中当问及数据库访问密码时,不要填写。当然了,你在刚才的画面上如果点击了“安全”一项,那里会提示你设置一个密码。这样一来,你就必须记住自己设置的新密码。

那么数据库呢?你必须自己创建新的数据库以便安装 joomla 。创建工具就是 phpmyadmin,访问 URL 是:http://localhost/phpmyadmin/ 。

在你开始安装 Joomla! 之前,我希望你记住这些内容,以免进行到一半找不到密码或者不知道“数据库名称”怎么填写而大喊大叫。

现在,你可以将 Joomla! 1.5 的安装包解压到 D:\xampp\htdocs\joomla 这个目录中,然后通过浏览器访问 http://localhost/joomla 来开始安装过程。可以参考《7步完成 Joomla! 1.5 安装》 。

{mospagebreak_scroll title=深入调节XAMPP的设置参数}

7、深入调节 XAMPP 的设置参数

在上一步,相信你已经能够在你的 XAMPP 服务器上顺利安装 Joomla! 并运行了。为了使以后的测试工作更顺利,有必要再了解一些 XAMPP 的设置参数。我并不是服务器方面的专家,因此以下内容仅从测试需要出发,有不足之处或谬误,请您在本站的 Joomla! 中文论坛发帖指正。

① 启用 mod_rewrite

不论是 Joomla! 1.0 还是 Joomla! 1.5,当你需要开启系统自带的 SEF 时,都需要 Apache 服务器的 mod_rewrite 支持。XAMPP 却是默认禁用了这个模块。

启用方法:

打开 xampp\apache\conf\httpd.conf 文件,在大约第118行找到下面的代码:

#LoadModule rewrite_module modules/mod_rewrite.so

删除此行开头的 # 符号(注释符号),然后保存文件,重新启动服务器即可。

②启用 Java

XAMPP 默认也禁用了 Java 功能,因此在安装某些 Joomla! 扩展时会遇到问题。例如,当你需要安装 jPFchat 聊天室组件时,如果不启用 Java,前台就看不到聊天室窗口。

启用方法:

打开 xampp\apache\bin\php.ini 文件(注:XAMPP 新版本上只有一个 php.ini 文件,位于 xampp\php\php.ini),在大约613行找到:

;extension=php_java.dll

去掉行首的分号即可。然后重新启动服务器。

③启用 curl

在安装 BookLibrary 组件时就会要求启用 curl,而 XAMPP 也是默认禁用的。

启用方法:

打开 xampp\apache\bin\php.ini 文件,在大约582行找到:

;extension=php_curl.dll

去掉行首的分号即可。然后重新启动服务器。

④启用 Fopen

在安装 RWcards 电子贺卡组件时就需要 Fopen 功能的支持。

启用方法:

打开 xampp\apache\bin\php.ini 文件,在大概第522 行,找到如下代码:

allow_url_fopen = On

如果你看到这里是 Off,请设为 On 即可。

⑤启用 eAccelerator

eAccelerator 是一个用来加速 php 代码运行以及提供加密、解密功能的 Apache 服务器插件。XAMPP 已经自带,但是默认没有启用。

在安装 JoomlaWiki 组件时,就会发现系统需要 eAccelerator 的支持。

启用方法:

打开 \xampp\apache\bin\php.ini 文件,

大概在 1296行左右,找到

[eAccelerator]

这一节,启用下面的代码(去掉行首的 ; 分号):

extension=eaccelerator.dll
eaccelerator.shm_size = “0”
eaccelerator.cache_dir = “\xampp\tmp”
eaccelerator.enable = “1”
eaccelerator.optimizer = “0”
eaccelerator.debug = “0”
eaccelerator.check_mtime = “1”
eaccelerator.filter = “”
eaccelerator.shm_max = “0”
eaccelerator.shm_ttl = “0”
eaccelerator.shm_prune_period = “0”
eaccelerator.shm_only = “0”
eaccelerator.compress = “1”
eaccelerator.compress_level = “9”
eaccelerator.keys = “shm_and_disk”
eaccelerator.sessions = “shm_and_disk”
eaccelerator.content = “shm_and_disk”

注:JoomlaWiki 可能会建议安装 Turck MMCache,不过有了 eAccelerator,就不必安装 MMCache 了。因为“eAccelerator is a further development of MMCache.”.

⑥调整内存限额

如果你的个人电脑性能不够好,可能在运行 XAMPP 过程中有时遇到“内存不足”的提示。这是因为 XAMPP 默认给 Apache 服务器只分配了32MB 内存。

打开 \xampp\apache\bin\php.ini 文件,在第 246 行左右,找到:

memory_limit = 32M      ;

修改此数值,例如:

memory_limit = 500M      ;

 

现在个人电脑一般都至少 1GB 内存,因此给这里分配 128MB 以上内存不会影响 PC 的运行。

⑦调整程序执行时间

如果在 Joomla! 上安装某些比较大的扩展,例如安装包 zip 文件超过 1MB,有时候会遇到“Fatal error: Maximum execution time of 30 seconds exceeded in …” 这样的错误提示,扩展也无法成功安装。

这是因为 XAMPP 默认的程序执行时间(execution time)太短了。

延长程序执行时间:

打开 \xampp\apache\bin\php.ini  文件,在 第244行左右,找到:

max_execution_time = 60     ; Maximum execution time of each script, in seconds

此处默认60秒,你可以加一个零或者两个零,就能延长10倍或者100倍,呵呵。

⑧安装 ionCube

ionCube 是一个 php 代码加密程序,很多商业软件都是通过 ionCube 将代码加密,然后销售出去。例如,著名的 Clexus 站内信组件就是用 ionCube 加密的。当用户安装 Clexus 时,就需要在服务器上启用 ionCube 解密程序。XAMPP 并没有带有 ionCube 程序,因此需要手动安装。

首先,从 http://www.ioncube.com/loaders.php 下载 ionCube 的解密程序(免费提供),这是一个 DLL 文件,目前最新版本是 ioncube_loader_win_5.2.dll,下载时找到对应 windows x86 的版本,下载后得到一个压缩文件,解压后即可得到 dll 文件。

将 ioncube_loader_win_5.2.dll 这个文件复制到 d:\xampp 目录下,然后打开 \xampp\apache\bin\php.ini  文件:

找到 [Zend] 这一节,大概在第 1264行,紧跟这一行添加新的一行代码:

zend_extension_ts = “\xampp\ioncube_loader_win_5.2.dll”

然后重新启动 XAMPP 即可启用 ionCube。

注意:这个 dll 文件的名称和版本可能会更新,因此你必须根据你得到的文件名来灵活处理。

⑨安装 Python

XAMPP 一直没有针对 Python 的支持,但是有些高级用户可能会需要 Python 功能以便在个人电脑上开发、调试 Python 程序。那么,可以考虑手动安装 Python。

以下安装方法参考了 XAMPP 官方论坛的一个帖子

首先下载 ActivePython :http://www.activestate.com/products/activepython/

然后下载 mod_python :http://www.modpython.org/ 得到一个 .exe 文件。

运行 ActivePython.exe 安装 python,安装时选择目录安装到 D:\xampp\python ,这样比较容易管理。

然后运行 mod_python 安装文件, 会询问 python 的安装位置(自动探测到),然后询问 apache 的安装位置, 手动定位到  D:\xampp\apache 目录, 安装结束后它会在 D:\xampp\apache\modules 目录中增加一个 mod_python.so 文件,这就是针对 Apache 服务器的 python 模块。

现在配置 python:

打开 D:\xampp\apache\conf\httpd.conf 文件,插入一行:

LoadModule python_module modules/mod_python.so

在 httpd.conf 文件末尾插入:

<IfModule python_module>
      <Directory “D:\xampp\htdocs\test”>
        AddHandler mod_python .py
        PythonHandler mptest
        PythonDebug On
    </Directory>
</IfModule>

重新启动 Apache 服务器。Python 服务器已经启用了。

现在测试 python 能否运行:

将下列代码保存为 mptest.py 文件,然后保存到 D:\xampp\htdocs\test 目录中:

from mod_python import apache

def handler(req):
  req.content_type = ‘text/plain’
  req.write(“Hello World!”)
  return apache.OK

然后打开浏览器,访问:

http://localhost/test/mptest.py

就会看到页面上显示:

Hello World!

这就证明 python 安装成功!

{mospagebreak_scroll title=如何启用 XAMPP 自带的邮件服务器}

如何启用 XAMPP 自带的邮件服务器

本页内容是2009年7月13日补充进来的。原来写这篇文章时没有考虑到启用 XAMPP 自带的邮件服务,一个原因是我本人并不熟悉 Mercury 邮件服务器;另一个原因是我觉得本地测试几乎用不上邮件功能,实在想用,就填写自己真正的 SMTP 服务器也能运行。

今天补充的原因也有两方面:一是很多人在本地测试时,在默认设置下就去测试会员注册、提交联系邮件,遇到了“收不到激活邮件”的问题,到处求助;二是考虑到有些人可能利用 XAMPP 自己电脑上安装了 Joomla 之后,允许别人通过 IP 地址等方式来访问这个本地服务器。

在撰写下面的内容之前,我曾经在网上搜索了30分钟,但是很遗憾,竟然从来没有人详细介绍过如何启用 XAMPP 自带的邮件服务器以配合 Joomla 运行。因此,如果你也正在寻找这方面的资料,基本上不用再去别处乱找了。言归正传:

首先,解释一下 XAMPP 本地安装 Joomla 之后为什么“注册会员时收不到激活邮件”?

 原因很简单:XAMPP 服务器启动之后,默认并没有启动其自带的 Mercury 邮件服务器。而 Joomla 后台的默认设置是要使用本地的邮件服务器的,这个服务器根本没启动,你怎么能发出邮件去?

还有些用户可能是通过 Control Panel 来启动了 XAMPP,在这个控制面板上就有 Mercury 邮件服务器的按钮,他也点了“Start”按钮启动了邮件服务器,还是发不出激活邮件,为什么?

原因也很简单:XAMPP 默认的设置是无法让 Mercury 邮件服务器直接发送出邮件的。必须对它进行一点设置。具体步骤如下:

0、测试环境介绍

我进行下列操作的环境是:Windows XP sp3 + XAMPP 1.7.0 + Joomla 1.5.12

其中,XAMPP 安装位置是:D:\xampp\。如果你的安装位置不同,请注意做好相应的调整。

1、启动 Mercury 邮件服务器

XAMPP 自带的邮件服务器名称是 Mercury。架设你已经启动了 Apache 和 MySQL,现在点击 XAMPP 根目录下的 mercury_start.bat 就能直接启动邮件服务器;或者,你通过上面提到的 Control Panel 也能启动 Mercury 邮件服务器。

 

2、发送测试邮件

就这么一步,Mercury 邮件服务器已经运行起来并且能够发送邮件了。不过,只能通过 Mercury 本身来发送。我们先测试一下这个功能。

在 Mercury 主面板上点击顶部菜单“File -> Send mail message”,就会弹出一个简单的邮件撰写窗口,填写你自己的正规信箱作为收件人,随便编造一个主题和正文,点击“Send”发送出去。我是用 Gmail 的信箱来测试的,大概2分钟就收到了。看下面两个截图:

Send test mail on Mercury

 

 

但是,这个时候如果你使用前面介绍的 SMTP 帐号来尝试设置 Joomla 后台邮件设置,或者尝试用 Outlook Express 借助这个 SMTP 来发送邮件,都会失败。Joomla 的错误消息没有提供什么有价值的参考,而 OE 会提示你:

553 We do not relay non-local mail, sorry

下面我们来解决这个问题,其实只是一个小小的设置而已:

3、设置 Mercury 邮件服务器及默认帐号的密码

点击 Mercury 顶部菜单的“Configuration -> MercuryS SMTP Server” ,在弹出的对话框上点击“Connection control”标签页,去掉“Do not permit SMTP relaying of non-local mail”这一项的勾选,然后点击“确定”。

 

去掉上面一项之后,就可以向外发送邮件了。不过,Mercury 的默认帐号是没有密码的,必须设置一个密码才能连接 SMTP 服务器。为了方便记忆,我们这个测试帐号的密码就设为与用户名相同吧:都是 postmaster。

如下图操作:点击 Mercury 主面板顶部菜单上“Configuration -> Manage local users”,在弹出的对话框上选定 postmaster 这个用户,点击右边的“Change”按钮,然后在弹出的对话框中“Mail password”这里填写 postmaster,点击“OK”即可。

 

经过这两点设置,Mercury 邮件服务器就完全可以用来向外发送邮件了。接下来你要在 Joomla 后台设置这个 SMTP 帐号:

4、在 Joomla 中使用 Mercury 的 SMTP 服务器

以管理员身份登录到 Joomla 1.5.x 后台,点击控制面板上的“全局设置”,进入“服务器”标签页,在“邮件设置”这里按下图所示填写:

首先选择“SMTP 服务器”模式。寄件人地址填写 postmaster@localhost 。由于 Mercury 的 SMTP 服务器默认不需要验证,所以在“SMTP 认证”这里选择“否”。用户名和密码都是 postmaster,主机就是 SMTP 服务器的地址,这里填写“localhost”,端口是默认的 25。

如果你需要在 Outlook Express 里面利用这个本地的 Mercury 邮件服务器来收发邮件,也可以按照上述参数来设置。POP3 服务器的地址仍然是 localhost,端口是 110。

到现在就大功告成了。你保存全局设置之后,可以在前台分别测试一下注册新会员和通过联系人表单发送邮件,应该能收到了。

最后提醒一下:有人可能还想玩玩“邮件设置”里面的 Sendmail 模式,这几乎没什么意义。

Sendmail 本来是 Linux 平台的程序,在 XAMPP for Windows 里面,也有一个 sendmail.exe 文件,这只能算是“伪 sendmail”(fake Sendmail),而不是真正的 sendmail。

之所以说它是“伪 sendmail”,是因为在 Windows 平台上,这个 sendmail.exe 实际上是通过 SMTP 服务器来发送邮件的,而不是靠它本身。也就是说,如果你想玩 sendmail,那么还必须按照上面所说的设置,完全调整好 Mercury 的 SMTP 服务器,现在选择 Sendmail 模式就能正常工作了。但这有什么意义呢?还不如直接用 SMTP 参数来发送。

 

{mospagebreak_scroll title=XAMPP的安全问题}

XAMPP的安全问题

XAMPP 本来就是为了本地测试所开发的一个容易安装的服务器包。一般不建议用来做正式的网站服务器。如果你确实很想用 XAMPP 做网站服务器,那么就要首先考虑 XAMPP 的安全问题。

即使是本地测试,为了能够完全模仿虚拟主机,我们也应该完善一下 XAMPP 的安全设置。

XAMPP 默认的 MySQL 数据库用户名是 root,密码是空的。这一点所有 XAMPP 用户都知道,因此你必须修改。

通过浏览器访问 http://localhost/security/index.php 这个页面,就会看到一些提示。有红色的“不安全”,还有绿色的“安全”。

请根据屏幕提示来操作,最终目的是所有项目都显示绿色的“安全”。

注意:如果你在修改这些安全设置之前就已经在 XAMPP 上安装了 Joomla! 或者其它 web 程序,那么在修改这些密码之后,必须打开相应的配置文件(Joomla! 是根目录下的 /configuration.php),将原来为空的密码修改为新密码。

XAMPP 上面用来管理数据库的工具 phpMyAdmin 其访问路径也是众所周知的。好在 phpMyAdmin 允许用户修改安装目录名称,因此建议你修改为另一个名字,这就大大降低了被黑客攻击的风险。当然,安装目录修改了之后,访问的 URL 也就变了。

如果要用 XAMPP 作为正式网站服务器,所要考虑的安全问题可能还不止这些。建议有这个需求的用户认真阅读 XAMPP 官方网站的有关文档和提示。