版权所有 © 2003 - 2006 Adrian Offerman
2006年6月25日
修订历史 | ||
---|---|---|
修订版 0.3.5 | 2006-06-25 | 修订者:AO |
Tomcat 初始化脚本 | ||
修订版 0.3.4 | 2005-09-18 | 修订者:AO |
小幅修正 | ||
修订版 0.3.2 | 2005-01-25 | 修订者:AO |
MMBase 1.7.3, Java 1.5.0-01 | ||
修订版 0.3.1 | 2004-12-26 | 修订者:AO |
电子邮件模块 | ||
修订版 0.3.0 | 2004-12-25 | 修订者:AO |
MMBase 1.7.2, Tomcat 5.5.4, Java 1.5.0, MySQL Connector/J 3.0.16-ga, Jikes 1.22 | ||
修订版 0.2.6 | 2004-07-27 | 修订者:AO |
小幅添加 | ||
修订版 0.2.5 | 2004-02-28 | 修订者:AO |
Creative Commons 版权许可已调整 | ||
修订版 0.2.4 | 2004-01-22 | 修订者:AO |
Creative Commons 版权许可;小幅添加和修正 | ||
修订版 0.2.3 | 2003-12-26 | 修订者:AO |
小幅添加和修正 | ||
修订版 0.2.2 | 2003-12-20 | 修订者:AO |
版权已调整 | ||
修订版 0.2.1 | 2003-12-18 | 修订者:AO |
小幅修正 | ||
修订版 0.2.0 | 2003-12-15 | 修订者:AO |
添加 JK 2 连接器设置 | ||
修订版 0.1.0 | 2003-12-10 | 修订者:AO |
初始草案 |
本文档描述了在 Red Hat Linux 发行版上安装 MMBase 内容管理系统,使用 Tomcat 应用服务器,并将其与 MySQL 和 Apache 集成。
版本:0.3.5; 2006年6月25日。
本文档的最新版本可以在以下位置找到:
http://www.offerman.net/MMBase-Installation-HOWTO/ |
欢迎反馈至
http://www.offerman.net/MMBase-Installation-HOWTO/feedback.html |
如有疑问,请查看 MMBase 网站
http://www.mmbase.org/ |
您可以在以下位置找到 MMBase 文档
http://www.mmbase.org/docs/ |
祝你好运!
从 MMBase 网站(www.mmbase.org):
“MMBase 是一款具有强大多媒体功能的 Web 内容管理系统。MMBase 在荷兰拥有庞大的安装基础,并被荷兰的主要广播公司、出版商、教育机构、国家和地方政府使用。MMBase 用 Java 编写,是开源软件 (MPL),并且所有使用的标准都尽可能“开放”。该系统可以与所有主要的操作系统、应用服务器和数据库一起使用。”
不幸的是,MMBase 的安装记录并不完善。此外,在互联网上搜索安装线索并尝试技巧时,安装的细节经常发生变化。
本文档描述了在 Red Hat Linux 发行版上安装 MMBase 内容管理系统,使用 Tomcat 应用服务器,以及与 MySQL 和 Apache 集成。
它基于我们自己的经验,并为了社区的利益而编写。
这些是我们用来制作这个食谱的原料
Red Hat 8.0 发行版,运行 2.4.20 内核,带有 Alan Cox 2 和 EA/ACL 扩展。
Java 2 软件开发工具包 (SDK) 和 Java 2 运行时引擎 (J2RE) 来自 Sun 的 Java 2 平台标准版 5.0 (J2SE)(版本 1.5.0-01),
Apache Jakarta Tomcat 5.5.4,
ImageMagick 6.1.3-7,
MMBase 1.7.3 带有各种模块,
MySQL Connector/J 3.0.16-ga,
Jikes 1.22.
Red Hat 8.0 发行版,运行 2.4.20 内核,带有 Alan Cox 2 和 EA/ACL 扩展。
Java 2 软件开发工具包 (SDK) 和 Java 2 运行时引擎 (J2RE) 来自 Blackdown Java 2 JDK 版本 v1.4.1-01,
Apache Jakarta Tomcat 4.1.27,
ImageMagick 5.4.7-5,
用于 JDK 1.4 的 MMBase 1.6.5,
MySQL Connector/J 3.0.8,
Jikes 1.18.
从以下位置下载最新版本的 Java 2 Development Kit (JDK) 或 Run-time Engine (JRE) 以及随附的文档:
http://java.sun.com |
可以在下载页面上找到 JDK 和 JRE 的安装说明和发行说明。
使 JDK 的二进制发行版可执行,并在新目录中提取
chmod +x jdk-xxx.bin cd /usr/local/ .../jdk-xxx.bin |
通过将其解压缩到 JDK 目录中来安装 JDK 文档
cd /usr/local/jdk-xxx/ unzip .../jdk-xxx-doc.zip |
更改 JDK 目录的所有权并使其可用为/usr/local/j2sdk/:
chown -R root:root /usr/local/jdk-xxx/ ln -s /usr/local/jdk-xxx /usr/local/j2sdk |
如果您只需要 JRE,则安装将如下所示:
chmod +x jre-xxx.bin cd /usr/local/ .../jre-xxx.bin chown -R root:root /usr/local/jre-xxx/ ln -s /usr/local/jre-xxx /usr/local/j2re |
![]() | 使用 JDK 版本 1.5.0 会导致我们的 Tomcat 服务器不时崩溃
|
![]() | 对于(先前使用的)Linux 版本的 BlackDown Java 发行版 在以下位置为 BlackDown Java Development Kit 找到镜像:
您可以在那里下载最新版本的 J2 软件开发工具包 (SDK) 和 运行时引擎 (RE)。 确保选择适合系统上安装的 gcc 库的版本。 您可以通过键入以下内容找到当前安装的版本:
Java Development Kit 的安装说明可在以下位置获得:INSTALL-j2sdk以及INSTALL-j2re. 使 SDK 的二进制发行版可执行,并在新目录中提取
更改 J2SDK 目录的所有权并使其可用为/usr/local/j2sdk/:
对 RE 执行相同的操作
|
由于我们没有在我们的路径中安装 JDK 和 JRE,因此我们必须添加bin/目录到我们的$PATH环境变量。 为了确保可以找到 Java 发行版和类,我们设置了$JAVA_HOME以及$CLASSPATH变量。
对于 Bourne shells,创建一个文件 /etc/profile.d/java.sh
if ! echo ${PATH} | grep -q /usr/local/j2sdk/bin ; then export PATH=/usr/local/j2sdk/bin:${PATH} fi if ! echo ${PATH} | grep -q /usr/local/j2re/bin ; then export PATH=/usr/local/j2re/bin:${PATH} fi export JAVA_HOME=/usr/local/j2sdk export CLASSPATH=.:/usr/local/j2sdk/lib/tools.jar:/usr/local/j2re/lib/rt.jar |
设置其所有权和访问权限
chown root:root /etc/profile.d/java.sh chmod 755 /etc/profile.d/java.sh |
对 C shells 执行相同的操作,通过创建文件 /etc/profile.d/java.csh
if ( "${path}" !~ */usr/local/j2sdk/bin* ) then set path = ( /usr/local/j2sdk/bin $path ) endif if ( "${path}" !~ */usr/local/j2re/bin* ) then set path = ( /usr/local/j2re/bin $path ) endif setenv JAVA_HOME /usr/local/j2sdk setenv CLASSPATH .:/usr/local/j2sdk/lib/tools.jar:/usr/local/j2re/lib/rt.jar |
并设置其所有权和访问权限
chown root:root /etc/profile.d/java.csh chmod 755 /etc/profile.d/java.csh |
现在,您的系统上的每个人都应该可以使用 JDK。
![]() | 您可以通过键入以下内容来测试 Java 引擎
或创建一个文件Test.java:
并测试编译器
|
从 Apache Jakarta 网站下载 Tomcat 的二进制发行版
http://jakarta.apache.org/tomcat/ |
如果您不想以 root 身份运行 Tomcat 守护进程,请创建一个新的用户/组 tomcat(首先通过检查文件确保您使用的 UID 和 GID 仍然可用/etc/passwd以及/etc/group):
groupadd -g 220 tomcat useradd -u 220 -g tomcat -c "Tomcat" -r -d /usr/local/tomcat -s "/sbin/nologin" tomcat |
![]() | 您真的不应该使用 root 帐户来运行 Tomcat 守护程序; (使用 Tomcat 版本 4.1.27)我们发现这允许 MMBase admin 用户将他的站点的备份转储写入系统上的任何位置。 |
<TODO:是否有更好的解决方案?>
在新目录中提取 Tomcat 发行版
cd /usr/local/ tar -zxvf .../jakarta-tomcat-xxx.tar.gz |
![]() | 版本 4.1.27 附带了一个热修复
|
更改 Tomcat 目录的所有权并使其可用为/usr/local/tomcat/:
chown -R tomcat:tomcat /usr/local/jakarta-tomcat-xxx ln -s /usr/local/jakarta-tomcat-xxx /usr/local/tomcat |
打开防火墙,允许 Web 访问 Tomcat 服务器,需要在以下文件中添加规则:/etc/sysconfig/iptables:
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 8080 --syn -j ACCEPT |
你需要重启系统才能使该规则生效,或者重启 iptables 防火墙。
service iptables restart |
要运行 Tomcat,请设置$CATALINA_HOME环境变量
CATALINA_HOME=/usr/local/tomcat |
并启动它
/usr/local/tomcat/bin/startup.sh |
现在你可以通过以下地址访问 Tomcat 的主页(替换<hostname>为你的主机名):
http://<hostname>:8080/ |
这应该会显示 Tomcat 欢迎屏幕。
再次关闭:
/usr/local/tomcat/bin/shutdown.sh |
由于我们希望自动化 Tomcat 服务器的启动和关闭,我们创建一个文件/etc/rc.d/init.d/tomcat来为我们执行此操作。
#!/bin/sh # # Startup script for the Jakarta Tomcat Java Servlets and JSP server # # chkconfig: - 85 15 # description: Jakarta Tomcat Java Servlets and JSP server # processname: tomcat # pidfile: /var/run/tomcat.pid # config: # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 # Set Tomcat environment. export JAVA_HOME=/usr/local/j2sdk export CLASSPATH=.:/usr/local/j2sdk/lib/tools.jar:/usr/local/j2re/lib/rt.jar export CATALINA_HOME=/usr/local/tomcat export CATALINA_OPTS="-server -Xms64m -Xmx512m -Dbuild.compiler.emacs=true" export PATH=/usr/local/j2sdk/bin:/usr/local/j2re/bin:$PATH [ -f /usr/local/tomcat/bin/startup.sh ] || exit 0 [ -f /usr/local/tomcat/bin/shutdown.sh ] || exit 0 export PATH=$PATH:/usr/bin:/usr/local/bin # See how we were called. case "$1" in start) # Start daemon. echo -n "Starting Tomcat: " /usr/local/tomcat/bin/startup.sh RETVAL=$? echo [ $RETVAL = 0 ] && touch /var/lock/subsys/tomcat ;; stop) # Stop daemons. echo -n "Shutting down Tomcat: " /usr/local/tomcat/bin/shutdown.sh RETVAL=$? echo [ $RETVAL = 0 ] && rm -f /var/lock/subsys/tomcat ;; restart) $0 stop $0 start ;; condrestart) [ -e /var/lock/subsys/tomcat ] && $0 restart ;; status) status tomcat ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 esac exit 0 |
设置其所有权和访问权限
chown root:root /etc/rc.d/init.d/tomcat chmod 755 /etc/rc.d/init.d/tomcat |
并将此 init 脚本添加到 chkconfig。
chkconfig --add tomcat chkconfig tomcat on |
![]() | 你可以使用 Tomcat 包附带的脚本,而不是创建自己的 init 脚本:/usr/local/tomcat/bin/catalina.sh。确保在此脚本的开头设置 Tomcat 环境。或者创建一个短的 init 脚本来调用原始的 Tomcat init 脚本。 |
![]() | 要在同一系统上安装两个(甚至更多)版本的 Tomcat 服务器,请通过编辑配置文件来增加第二个服务器的 端口 号(例如,增加 10):/usr/local/tomcat55/conf/server.xml:
按照上述第一个服务器的步骤完成第二个 Tomcat 服务器的安装,使用调整后的目录和文件名。 |
由于 IBM 的 Java 编译器 Jikes 的性能优于 Tomcat 自己的 JSP 编译器 Jasper,因此建议安装 Jikes 代替。
从 IBM 的研究网站下载 Jikes 的源代码:
http://jikes.sourceforge.net/ |
解压并编译 Jikes:
./configure --prefix=/usr/local/jikes make make check make install |
检查对以下选项的支持:-encoding选项
/usr/local/jikes/bin/jikes -help |
要使 Jikes 以与 Jasper 兼容的方式输出其错误消息,请将以下$CATALINA_OPTS环境变量添加到/etc/rc.d/init.d/tomcat:
export CATALINA_OPTS="-Dbuild.compiler.emacs=true" |
![]() | 如果你收到一条错误消息,指出 Jikes 无法使用 UTF8 编码,请添加以下选项:
|
通过将以下内容添加到/usr/local/tomcat/conf/web.xml:
<init-param> <param-name>compiler</param-name> <param-value>jikes</param-value> </init-param> |
使 Jikes 成为 Tomcat 的 JSP 编译器:/usr/local/tomcat/conf/web.xml中输入 Jikes 的完整路径似乎不起作用(版本 4.1.27),因此请确保 jikes 程序在你的路径中可用:
ln -s /usr/local/jikes/bin/jikes /usr/local/bin/jikes |
MMBase 使用 ImageMagick 的 convert 工具来构建和转换其图像。
ImageMagick 已经是 Red Hat 发行版的一部分。 使用以下命令检查其可用性:
rpm -q ImageMagick |
如果你的系统上没有 ImageMagick,请使用 up2date 安装它:
up2date |
或者从 Red Hat Network 下载它:
https://rhn.redhat.com/ |
并手动安装它:
rpm -ihv ImageMagick-xxx.rpm |
从以下位置下载 MMBase 的二进制发行版,以及你需要的其他应用程序(即 CloudContext Security、Media、Email)(请参见下一节):
http://www.mmbase.org/ --> Download --> Releases |
![]() | MMBase 版本 1.7.2 包含一个严重的错误,导致编辑向导出现问题。 1.7.3 版本包含此问题的错误修复。 |
确保你选择适用于系统上安装的 Java 2 JDK 的正确版本。 你可以通过键入以下命令找到当前安装的版本:
java -version |
解压 MMBase 的二进制发行版,将其复制到 Tomcat 目录中,并更改 MMBase 目录的所有权:
unzip mmbase-xxx.zip cd /usr/local/tomcat/webapps/ mkdir mmbase-webapp/ cp -R .../mmbase-x.x.x/mmbase-webapp/* ./mmbase-webapp/ chown -R tomcat:tomcat ./mmbase-webapp/ |
![]() | 在 Tomcat 版本 5 上安装 MMBase 版本 1.7 导致版本不兼容。
我们必须禁用 RMMCI 库才能使此安装正常运行。
|
对于在 Tomcat 版本 5 上运行的 MMBase 版本 1.7,请启用 Xerces 库:
mv /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/xalan.renametojar \ /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/xalan.jar mv /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/xerces.renametojar \ /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/xerces.jar mv /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/xml-apis.renametojar \ /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/xml-apis.jar |
FATAL org.mmbase.servlet.MMBaseStartThread - Could not find the MMBase module!org/apache/xpath/XPathAPI |
对于在 Tomcat 版本 4 上运行的 MMBase 版本 1.6,请将 Tomcat Xerces 库替换为 MMBase 附带的库:
mv -i /usr/local/tomcat/common/endorsed/xercesImpl.jar ~/ mv -i /usr/local/tomcat/common/endorsed/xmlParserAPIs.jar ~/ cp /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/xalan.jar \ /usr/local/tomcat/common/endorsed/ chown tomcat:tomcat /usr/local/tomcat/common/endorsed/xalan.jar chmod 644 /usr/local/tomcat/common/endorsed/xalan.jar cp /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/xerces.jar \ /usr/local/tomcat/common/endorsed/ chown tomcat:tomcat /usr/local/tomcat/common/endorsed/xerces.jar chmod 644 /usr/local/tomcat/common/endorsed/xerces.jar cp /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/xml-apis.jar \ /usr/local/tomcat/common/endorsed/ chown tomcat:tomcat /usr/local/tomcat/common/endorsed/xml-apis.jar chmod 644 /usr/local/tomcat/common/endorsed/xml-apis.jar |
检查 ImageMagick convert 工具是否在你的路径中:
which convert |
如果不在,请将其添加到:/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/applications/Resources/builders/images.xml。例如:
<property name="ImageConvert.ConverterCommand">/usr/bin/X11/convert</property> |
确保目录:/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/builders/applications可由 servlet 引擎用户写入(用于自动安装构建器)。
chown tomcat:tomcat /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/builders/applications chmod 775 /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/builders/applications |
我们可以使用 MySQL Connector/J 将 MMBase 连接到我们的 MySQL 数据库服务器。 这个用于 MySQL 的 JDBC 驱动程序可以从以下位置下载:
https://mysqlserver.cn/downloads/api-jdbc.html |
将 JDBC 驱动程序复制到 MMBase 的lib/目录:
cp mysql-connector-java-xxx-bin.jar /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/ chown tomcat:tomcat /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/mysql-connector-java-xxx-bin.jar chmod 664 /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/mysql-connector-java-xxx-bin.jar |
通过编辑/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/modules/jdbc.xml使其成为 MMBase 的 JDBC 驱动程序。 替换数据库名称(mmbase),用户(mmuser)和密码(mmpass)为你希望 MMBase 使用的数据库设置。
<property name="url">jdbc:mysql://$HOST:$PORT/$DBM</property> <property name="user">mmuser</property> <property name="password">mmpass</property> <property name="supportclass">org.mmbase.module.database.DatabaseSupportShim</property> <property name="database">mmbase</property> <property name="connections">20</property> <property name="host">localhost</property> <property name="driver">com.mysql.jdbc.Driver</property> <property name="port">3306</property> <property name="querys">256</property> <property name="probetime">30</property> |
设置此配置文件的所有权和访问权限。 由于它包含你的数据库名称、用户名和密码,请确保其他用户无法读取此文件。
chown tomcat:tomcat /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/modules/jdbc.xml chmod 640 /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/modules/jdbc.xml |
现在创建你刚刚为 MMBase 定义的 MySQL 数据库:
mysql -u root -p |
CREATE DATABASE <mmbase>; USE <mmbase>; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON <mmbase>.* TO <mmuser>@'%' IDENTIFIED BY '<password>'; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON <mmbase>.* TO <mmuser>@localhost IDENTIFIED BY '<password>'; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON <mmbase>.* TO <mmuser>@localhost.<domainname> IDENTIFIED BY '<password>'; # RH bug fix GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON <mmbase>.* TO <mmuser>@<hostname> IDENTIFIED BY '<password>'; flush privileges; exit; |
将主机名(<hostname>)和域名(<domainname>)替换为你自己的主机名和域名,并将数据库名称(<mmbase>),用户(<mmuser>)和密码(<password>)替换为你刚刚在 JDBC 驱动程序配置文件中输入的值。
![]() | 要快速清空你的 MySQL 数据库,即在你更新了 MMBase 配置或应用程序之后(替换数据库名称:<mmbase>为你自己的):
|
![]() | 如果你已经在使用相当多的 MySQL 连接(例如,用于通过和作为邮件守护程序和 Apache 服务器的后端进行身份验证),则 MySQL 服务器可能会耗尽连接(其最大数量默认为 100)。 然后 Tomcat 可能会简单地拒绝启动或在启动 MySQL 连接池时给出错误消息,或者你的 IMAP 或 POP 服务器在对其客户端进行身份验证时会出现问题。 你可以通过将以下内容添加到配置文件来增加到 MySQL 的最大连接数:/etc/my.cnf:
|
随着 1.7 版本的发布,MMBase 被重构为更加模块化的结构。 开发人员决定从 MMBase 树中取出几个模块(即 CloudContext Security、Media、Email),并将它们作为单独的实体提供。 但是,目前 MMBase 根本没有模块接口。 因此,要使用这些附加应用程序,需要将库和其他文件放入安装树中,并且需要手动将配置添加到现有配置文件中。
>来自 MMBase 网站 (www.mmbase.org):
"Cloud security 使用对象 mmbaseuser 来存储用于用户授权和身份验证的信息。 此安全实现的主要两个优点是,用户管理可以通过使用 Web 浏览器(而不是编辑文件系统上的文件)来执行,并且你的 MMBase 安装的用户可以作为云中的对象使用。 例如,可以创建用户组,这些用户组被允许执行某些任务。"
“上下文”是指一组权限,描述了您可以在此上下文中对 MMBase 对象执行的操作。 例如,您可以为站点的匿名访问者定义对上下文的读取权限,并且可以为站点的注册用户定义具有编辑权限的上下文。”
将 CloudContext Security 模块的库和其他文件移动到 MMBase 安装树中
mv -i web-app/WEB-INF/lib/* \ /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/ mv -i web-app/WEB-INF/config/applications/* \ /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/applications/ mv -i web-app/WEB-INF/config/builders/* \ /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/builders/ |
保存文档文件以供以后参考
mv -i web-app/README.txt web-app/README-PACKAGE.txt web-app/documentation web-app/src \ /usr/local/tomcat/webapps/mmbase-webapp/mmdocs/security/ |
确保所有这些新文件也由您的 tomcat 用户拥有
chown -R tomcat:tomcat /usr/local/tomcat/webapps/mmbase-webapp |
禁用 security 配置文件中的现有配置/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/security/security.xml:
<!-- <authentication class="org.mmbase.security.implementation.context.ContextAuthentication" url="context/config.xml" /> --> ... <!-- <authorization class="org.mmbase.security.implementation.context.ContextAuthorization" url="context/config.xml" /> --> |
并添加(来自web-app/WEB-INF/config/security/security.xml):
<!-- Example security.xml to switch on Cloud Context Security. No other configuration needed (Cloud Context Security is configured in the cloud) @version $Id: security.xml,v 1.1 2003/06/17 16:44:01 michiel Exp $ --> <authentication class="org.mmbase.security.implementation.cloudcontext.Authenticate" url="" /> <authorization class="org.mmbase.security.implementation.cloudcontext.Verify" url="" /> |
![]() | 确保在以下内容之前包含上述配置<sharedsecret>声明,否则您将收到如下错误
|
Email 模块使您可以使用 SendMail 或 JMSendMail 通过 MMBase 发送电子邮件。
将 Email 模块的库和其他文件移动到 MMBase 安装树中
mv -i web-app/WEB-INF/lib/* \ /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/ mv -i web-app/WEB-INF/config/builders/* \ /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/builders/ mkdir /usr/local/tomcat/webapps/mmbase-webapp/email-examples/ cp -iR web-app/examples/* \ /usr/local/tomcat/webapps/mmbase-webapp/email-examples/ |
保存文档文件以供以后参考
mkdir /usr/local/tomcat/webapps/mmbase-webapp/mmdocs/email/ mv -i web-app/README.txt web-app/README-PACKAGE.txt web-app/documentation web-app/src \ /usr/local/tomcat/webapps/mmbase-webapp/mmdocs/email/ |
确保所有这些新文件也由您的 tomcat 用户拥有
chown -R tomcat:tomcat /usr/local/tomcat/webapps/mmbase-webapp |
编辑电子邮件配置文件/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/modules/sendmail.xml(来自web-app/WEB-INF/config/modules/sendmail.xml):
... <status>active</status> ... <classfile>org.mmbase.applications.email.SendMail</classfile> ... |
添加到 Tomcat 的根目录上下文(对于 Tomcat 版本 5,在 /usr/local/tomcat/conf/context.xml 中,对于 Tomcat 版本 4,在 /usr/local/tomcat/conf/server.xml 中)(将 <smtp.domain.tld> 替换为您的 SMTP 服务器的地址)
Resource name="mail/Session" auth="Container" type="javax.mail.Session"/> <ResourceParams name="mail/Session"> <parameter> <name>mail.smtp.host</name> <value>smtp.domain.tld</value> </parameter> </ResourceParams> <ResourceLink name="linkToGlobalResource" global="simpleValue" type="java.lang.Integer"/> |
如果未能这样做,会导致致命错误
FATAL org.mmbase.module.JMSendMail - JMSendMail failure: Name mail is not bound in this Context |
![]() | 在 Tomcat 版本 5 上运行的 MMBase 版本 1.7 中安装 Email 模块会导致致命错误
|
以下是一些 MMBase 的初始配置设置。
通过编辑以下内容更改管理员 admin 的默认密码 admin2k/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/security/context/config.xml:
<user name="admin" context="admin"> <identify type="name/password" rank="administrator">admin2k</identify> </user> |
此外,注释掉或删除用户 foo/bar。
由于此文件包含您的管理员密码,请确保其他用户无法读取它
chmod 640 /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/security/context/config.xml |
要使用 MMBase 构建器 mmbaseuser(使用 MySQL 数据库中的 mmbaseuser 表)进行用户身份验证,请设置authentication配置文件的类/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/security/security.xml到
<authentication class="org.mmbase.security.implementation.cloud.Authenticate" url="" /> |
并设置authorization类到
<authorization class="org.mmbase.security.implementation.cloud.Verify" url="" /> |
在同一文件中,更改用于与远程构建器(在其他 MMBase 服务器上)通信的共享密钥
<sharedsecret>yoursharedsecret</sharedsecret> |
![]() | 您可以通过编辑以下内容来设置 MMBase 的语言/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/modules/mmbaseroot.xml:
|
![]() | 您可以通过编辑以下内容来设置 SMTP 网关/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/modules/sendmail.xml:
|
现在您可以启动 Tomcat 了
service tomcat start |
并通过以下方式访问您的新 MMBase 服务器(替换<hostname>为你的主机名):
http://<hostname>:8080/mmbase-webapp/ |
如果所有您刚刚做的事情都成功了,您应该会看到 MMBase 欢迎屏幕,您可以在其中更改设置、查看演示以及安装示例。
当要求登录时,使用名称 admin 和您刚刚在 security 配置文件中设置的密码/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/security/context/config.xml.
MMBase 用户(即前端开发人员)通常会将他们的 Web 文件添加到/usr/local/tomcat/webapps/mmbase-webapp/目录。 定义内容的应用将放置在/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/applications/目录。
![]() | Tomcat 消耗的 CPU 和内存资源远多于 Apache。 确保您的 Tomcat/MMBase 服务器系统满足这些要求。 |
![]() | 在我们的案例中,关闭(或重新启动)Tomcat 服务器(版本 1.6)总是会留下一个最后的进程在运行。 如果您遇到同样的问题,请在再次启动它之前手动终止该进程
|
![]() | 您可以保存原始index.jsp文件,将其重命名为mmbase.jsp:
这将允许您始终通过以下方式访问原始 MMBase 主页(替换<hostname>为你的主机名):
|
如果出现任何问题,请检查目录中的 Tomcat 和 MMBase 日志文件/usr/local/tomcat/logs/以获取提示。
>在这里,我们参考 MMbase 网站上的文档来完成您的配置并开始使用 MMBase
http://www.mmbase.org/docs/ |
由于(出于某种奇怪的原因)某些网络管理员仅允许将出站 Web 连接到 TCP 端口 80,因此可能有人无法通过 端口 8080 访问您的 Tomcat(和 MMBase)服务器。 您可以在 Apache 中安装 JK 2 映射或反向代理,以便可以通过 Apache Web 服务器在 端口 80 访问 Tomcat 和 MMBase。 除了端口问题外,这还具有以下优点:您可以使用 Apache 来管理您的 SSL 连接,并将您现有的 Apache 日志和统计设施用于 Tomcat 和 MMBase。
在这里,我们描述了连接 Apache 和 Tomcat 的 JK 2 连接器的安装和配置。 通过这种方式,可以将 Tomcat 路径映射到 Apache 中。
>来自 JK 2 连接器网站(http://jakarta.apache.org/tomcat/tomcat-4.1-doc/config/jk2.html):
“JK 2 连接器元素代表一个连接器组件,该组件通过 AJP 协议与 Web 连接器通信。 这用于您希望将 Tomcat 4 无形地集成到现有(或新的)Apache 安装中的情况,并且您希望 Apache 处理 Web 应用程序中包含的静态内容,和/或利用 Apache 的 SSL 处理。 在许多应用程序环境中,这将导致比使用 HTTP/1.1 连接器在 Tomcat 独立运行您的应用程序更好的整体性能。 但是,唯一可以确定它是否为您的应用程序提供更好性能的方法是两种方式都尝试一下。”
如果您只需要一个简单的配置 - 通常是一个与您的 Apache server 位于同一系统上的单个 Tomcat 服务器 - Apache 反向代理可能是更简单的解决方案。 虽然这些在互连功能方面更简单,但反向代理在摆弄您的路径和其他选项方面提供了更大的灵活性。 下一节介绍了 Apache 反向代理的配置。
但是,如果您计划在 Apache 前端后面构建或发展到多个 Tomcat 服务器的集群,或者构建高性能系统,则部署 JK 2 连接器是最佳选择。
从 Apache Jakarta 网站下载 JK 2 连接器的源代码
http://jakarta.apache.org/site/sourceindex.cgi |
提取并编译 JK 2 连接器
tar -zxvf jakarta-tomcat-connectors-jk2-src-xxx.tar.gz cd jakarta-tomcat-connectors-jk2-src/jk/native2/ ./configure \ --with-apxs2=/usr/local/apache/bin/apxs make |
确保您的$JAVA_HOME环境变量已设置,并且 Java 二进制文件位于您的$PATH或将此选项添加到您的 ./configure 命令中
--with-java-home=/usr/local/j2sdk |
复制模块文件mod_jk2.so以及jkjni.so到 Apache 的modules/目录
cp -i ../build/jk2/apache2/*.so /usr/local/apache/modules/ chmod 755 /usr/local/apache/modules/mod_jk2.so chown root:root /usr/local/apache/modules/mod_jk2.so chmod 755 /usr/local/apache/modules/jkjni.so chown root:root /usr/local/apache/modules/jkjni.so libtool --finish /usr/local/apache/modules |
将示例配置文件复制到workers2.properties到 Apache 的配置目录
cp -i ../../jk/conf/workers2.properties /usr/local/apache/conf/ chown root:root /usr/local/apache/conf/workers2.properties chmod 644 /usr/local/apache/conf/workers2.properties |
并根据您自己的需要进行调整。
这是一个简单的配置,应该可以让您启动并运行
[logger] # outcomment this in production use level=DEBUG [config:] file=${serverRoot}/conf/workers2.properties debug=0 debugEnv=0 [uriMap:] info=Maps the requests. Options: debug debug=1 [shm:] info=Scoreboard. Required for reconfiguration and status with multiprocess servers file=${serverRoot}/logs/jk2.shm size=1000000 debug=0 disabled=0 [workerEnv:] info=Global server options timing=1 debug=0 [status:] info=Status worker, displays runtime informations [uri:<hostname>/jkstatus/*] info=Display status information and checks the config file for changes. group=status: [channel.socket:localhost:8009] info=Ajp13 forwarding over socket # Define the worker [ajp13:localhost:8009] channel=channel.socket:localhost:8009 [uri:<hostname>/mmbase-webapp/*] info=MMBase |
此配置的大部分都是相当标准的。 最后一个uri声明(替换<hostname>与您的主机名),这就是全部的内容; 它将所有以/mmbase-webapp/开头的客户端请求从 Apache 映射到您的 Tomcat 服务器。
![]() | 当我们进行虚拟主机映射时,不知何故,一般映射不再适用于此虚拟主机(同一 IP 地址上的其他虚拟主机没有任何问题)。 我们必须为此虚拟主机显式添加一般映射才能使其再次工作。 这是一个错误? 还是 Apache 实现基于名称的虚拟主机的方式的结果? |
所以现在,您通过 Tomcat 作为(替换<hostname>为你的主机名):
http://<hostname>:8080/mmbase-webapp/ |
访问的同一个应用程序将通过 Apache 作为
http://<hostname>/mmbase-webapp/ |
![]() | 提供。 仅支持基于名称的虚拟主机。 确保将虚拟主机名(指向同一(Web)服务器)添加到/etc/hosts文件(替换<hostname>为你的主机名):
,否则事情将无法正常工作(运行 DNS 在这里是不够的!)。 |
如果您的 Apache 安装仅服务于单个网站,您可以省略主机名
[uri:/mmbase-webapp/*] info=MMBase |
这将在您的 Apache 安装的每个地址和站点上提供映射的/mmbase-webapp/目录。
![]() | 使用 JK 连接器版本 2,所有配置设置都将位于workers2.properties文件中。 即使 Tomcat 带有自己的 JK 2 配置文件/usr/local/tomcat/conf/jk2.properties,只要您坚持标准的 端口 8009,就没有必要编辑此文件。 如果您确实必须编辑此文件(例如,当更改端口时),请确保在您的 Tomcat 服务器未运行时执行此操作;该文件由 Tomcat 本身自动编辑。 |
将 mod_jk2 模块添加到您的 Apache 配置后(在文件/etc/httpd/conf/httpd.conf中或在新文件jk2.conf中,位于 Apache 配置目录/etc/httpd/conf.d):
# Load mod_jk2 module LoadModule jk2_module modules/mod_jk2.so |
chown root:root /etc/httpd/conf.d/jk2.conf chmod 644 /etc/httpd/conf.d/jk2.conf |
中),您现在可以重新启动 Apache 并尝试您的新入口:(替换<hostname>为你的主机名):
http://<hostname>/mmbase-webapp/ |
要检查 JK 2 连接器的状态(替换<hostname>为你的主机名):
http://<hostname>/jkstatus/ |
![]() | 您可以在/usr/local/apache/conf/workers2.properties中通过(重新)加载 Apache 或让它重新加载其配置。 但是,无法以这种方式删除现有映射,并且需要 Apache 重新配置。 页面来重新读取配置。 这允许您添加新的映射,而无需重新启动虽然也可以将 JK 2 配置(以略有不同的形式)放置在您的 Apache 配置文件中,但这是一个坚持workers2.properties设置的好理由。 |
![]() | 为了保护对 Apache 配置添加身份验证声明。 例如: 页面的访问,请向
这将提示从 admin 组的用户登录。 |
如果出现任何问题,请检查 JK 2 连接器 日志消息,这些消息将被写入您的 Apacheerror_log.
![]() | 如果 JK 2 连接器 连接到 Tomcat 时遇到困难,请检查 Tomcat 是否确实在 8009 端口上可用
|
映射到 Tomcat 的访问请求将被记录在access_log的以及error_logApache 的。
有关workers2.properties配置的更多信息,请查看以下文档:
http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jk2/jk2/configwebcom.html |
在那里,您将阅读到设置更多(远程)Tomcat 工作器、将这些工作器分组到负载均衡池中、设置 RPC 通道、使用 Unix 套接字、使用 Java Native Interface (JNI) 直接(进程内)与 Tomcat 互连、设置备用记录器以及优化您的超时设置。
![]() | 在服务普通内容文件方面,Apache 比 Tomcat 效率更高。您可以将 Apache 和 Tomcat 文档目录都指向文件系统上的同一目录,并且只转发对 JSP 页面和 Java Servlets 的请求。 例如 (在workers2.conf):
中)。但是,现在您需要保护 Tomcat 的WEB-INF/目录(以及您不希望访问者访问的其他目录和文件),防止它们被 Apache 提供服务。 例如 (在 Apache 的httpd.conf):
中)。另外,请注意,这样的设置会绕过您可能在文件/usr/local/tomcat/webapps/examples/WEB-INF/web.xml. |
中配置的任何安全约束。您可以在以下位置找到有关 JK 2 连接器 的更多通用信息:
http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jk2/ |
安装 Apache 反向代理是使用 Apache 作为 Tomcat 服务器前端的 JK 2 连接器 的一个简单替代方案。
添加到您的 Apache(虚拟)服务器配置中(替换<hostname>为你的主机名):
ProxyPass /tomcat/ http://<hostname>:8080/ ProxyPassReverse /tomcat/ http://<hostname>:8080/ ProxyPass /mmbase/ http://<hostname>:8080/mmbase-webapp/ ProxyPassReverse /mmbase/ http://<hostname>:8080/mmbase-webapp/ |
这允许您访问您的 Tomcat 服务器,如下所示(替换<hostname>为你的主机名):
http://<hostname>/tomcat/ |
以及您的 MMBase 服务器,如下所示(替换<hostname>为你的主机名):
http://<hostname>/mmbase/ |
![]() | 我们的 MMBase 1.7 版本在其生成的网页中使用了绝对目录路径。 为了使反向代理正常工作,Apache 代理路径必须相同(替换<hostname>为你的主机名):
|
如果您想支持更多 MMBase 实例,例如,如果您想让更多或所有用户都可以使用 MMBase,您可以创建多个 MMBase 安装,并让它们都在同一台 Tomcat 服务器上运行。
在用户的 home 目录中安装 MMBase:<用户>执行以下步骤之前的所有步骤:
创建一个目录mmbase/在用户的 home 目录中,
将所有 MMBase 文件复制到目录/home/<用户>/mmbase/,
以我们之前的方式构建目录结构和配置文件,
对于在 Tomcat 版本 5 上运行的 MMBase 版本 1.7,启用 Xerces 库,
对于在 Tomcat 版本 4 上运行的 MMBase 版本 1.6,删除 MMBase 中的 Xerces 库(在您第一次从 MMBase 将这些库复制到 Tomcat 之后),
安装 MySQL JDBC 驱动程序,并为此用户创建一个新的 MySQL 数据库。
确保用户和 Tomcat 服务器都可以访问 MMBase 安装。
chown -R <user>:tomcat /home/<user>/mmbase/ |
确保目录:/home/<用户>/mmbase/WEB-INF/config/builders/applications可被 servlet 引擎用户写入和访问(用于自动安装构建器)。
chmod 770 /home/<user>/mmbase/WEB-INF/config/builders/applications chmod 750 /home/<user>/mmbase/WEB-INF/config/builders/ chmod 750 /home/<user>/mmbase/WEB-INF/config/ chmod 750 /home/<user>/mmbase/WEB-INF/ chmod 750 /home/<user>/mmbase/ |
现在,此用户的 home 目录也必须可供 Tomcat 服务器访问。您可以将用户 home 目录的组所有者更改为 tomcat 用户组。
chown -g tomcat /home/<user>/ |
或者,如果您不想这样做,请使用访问控制列表 (ACL's) 来完成相同的操作。
setfacl -m u:tomcat:r-x /home/<user>/ |
最后,将新的 MMBase 安装链接到 Tomcat 服务器:
ln -s /home/<user>/mmbase /usr/local/tomcat/webapps/mmbase-<user> |
并重新启动 Tomcat。
service tomcat restart |
这将使此用户的 MMBase 安装可以通过以下方式访问:
http://<hostname>:8080/mmbase-<user>/ |
同样,您可以像我们之前所做的那样,在 Apache 中设置 JK 2 映射或反向代理。
![]() | 为了在单个 Tomcat 服务器上运行多个 MMBase 实例,请确保增加可用内存资源,即通过添加到$CATALINA_OPTS在/etc/rc.d/init.d/tomcat:
|
本文档是卡斯珀·乔斯特·艾克霍夫(Casper Joost Eyckelhof)(荷兰特温特大学)撰写的 "在 Debian Woody 上安装 MMBase Mini-HOWTO" 的后续。
版本 0.3.5,2006 年 6 月 25 日:Tomcat init 脚本,
版本 0.3.4,2005 年 9 月 19 日:次要更正,
版本 0.3.2,2005 年 1 月 25 日:MMBase 1.7.3,Java 1.5.0-01,
版本 0.3.1,2004 年 12 月 26 日:电子邮件模块,
版本 0.3.0,2004 年 12 月 25 日:MMBase 1.7.2,Tomcat 5.5.4,Java 1.5.0,MySQL Connector/J 3.0.16-ga,Jikes 1.22,
版本 0.2.6,2004 年 7 月 27 日:次要添加,
版本 0.2.5,2004 年 2 月 28 日:Creative Commons 版权许可已调整,
版本 0.2.4,2004 年 1 月 22 日:Creative Commons 版权许可;次要添加和更正,
版本 0.2.3,2003 年 12 月 26 日:次要添加和更正,
版本 0.2.2,2003 年 12 月 20 日:版权已调整,
版本 0.2.1,2003 年 12 月 18 日:次要更正,
版本 0.2,2003 年 12 月 15 日:添加了 JK 2 连接器 设置,
版本 0.1,2003 年 12 月 10 日:初始草案。
本文档按 "原样" 提供,不提供任何明示或暗示的保证。 您需要自行承担使用这些想法、概念、脚本、示例、帮助和任何其他信息的风险。
提及特定产品及其各自的制造商不应被视为对制造商的认可或商业宣传。
编译,版权 � 2003 - 2006,作者 Adrian Offerman。
本文档已获得 Creative Commons Attribution-ShareAlike 版权许可的许可。
这允许您复制、分发、显示和打印此作品,并制作派生作品,以及将该作品用于商业用途,前提是您注明原始作者的姓名,并且如果您更改、转换或基于此作品进行构建,您只能根据与此许可相同的许可分发最终作品。 对于任何重用或分发,您必须向其他人明确说明此作品的许可条款。 如果您获得作者的许可,可以放弃这些条件中的任何一个。 您的合理使用和其他权利绝不受上述影响。