源文本版权归属 Copyright ? 2002-2004 David M Johnson
这篇文档描述了如何在Tomcat Servlet引擎上安装 Roller Weblogger版本1.0, 以及如何设置:
对于Roller 0.9.8版本请参见 安装向导098
如何设置其他的servlet引擎? 这篇向导主要支持Tomcat,但是在拥有这些经验以后,你应该可以使Roller工作在任何与Servlet API 2.3兼容的Servlet容器中 (例如Weblogic,Websphere,Jetty,Resin,OrionServer等等); 建议建立国际化的站点使用支持Servlet API 2.4的服务器。 如果你把Roller部署在一个非Tomcat的容器中,请贡献你的安装心得来帮助其他人.
如何设置其他的数据库? 这篇向导主要支持MySQL,但是Roller包含了PostgreSQL和HSQL-DB的数据库安装脚本.有经验之后你应该能够使Roller工作在任何支持JDBC的数据库上(例如Oracle,Informix,Sybase,MS SQL Server等等)。
在你安装Roller之前,你需要确认在你的系统上已经安装并且设置了一下软件:Java SDK,Tomcat Servlet引擎和MySQL数据库.如果在Debian上使用MySQL,请参考DebianMySQL.
作为安装Tomcat的一部分,你应该已经正确地设置了CATALINA_HOME环境变量,就像下面的实例所显示的.我们需要设置它,是因为在这篇向导的其他实例中我们会引用该变量.
UNIX(csh)实例:
% setenv CATALINA_HOME /opt/jakarta-tomcat-5.0.29
Windows实例,MS-DOS或者命令提示窗口:
C> set CATALINA_HOME d:/jakarta-tomcat-5.0.29
在这步中,应该把下载的ZIP或者TAR文件解压到Servlet容器的web应用程序的部署目录中.Tomcat的部署目录是Tomcat安装目录下的webapps目录.
UNIX实例:
% cp roller-1.0.tgz $CATALINA_HOME/webapps % cd $CATALINA_HOME/webapps % tar xzvf roller-1.0.tgz
在Windows下:使用WinZIP,解压roller.zip到%CATALINA_HOME/webapps目录下.
现在你需要建立一个新的数据库,建立一个拥有适当权限的用户,然后使用SQL脚本来建立运行Roller需要的数据库表.请登陆到数据库,之后运行Roller WEB-INF/dbscripts目录下的Roller数据库建立脚本.
下面的实例将向你展示在MySQL中如何建立数据库表,假设你的Roller用户的用户名是scott,密码是tiger.关于MySQL的进一步信息请参考MySQL的参考手册.
UNIX实例
% cd $CATALINA_HOME/webapps/roller/WEB-INF/dbscripts/mysql % mysql -u root -p password: ***** mysql> create database roller; mysql> grant all on roller.* to scott@'%' identified by 'tiger'; mysql> grant all on roller.* to scott@localhost identified by 'tiger'; mysql> use roller; mysql> source createdb.sql mysql> quit
Windows实例,MS-DOS或者命令提示窗口:
C> cd %CATALINA_HOME%/webapps/roller/WEB-INF/dbscripts/mysql C> mysql -u root -p password: ***** mysql> create database roller; mysql> grant all on roller.* to scott@'%' identified by 'tiger'; mysql> grant all on roller.* to scott@'localhost' identified by 'tiger'; mysql> use roller; mysql> source createdb.sql mysql> quit
注意:
从Roller0.9.8升级到Roller1.0:你应该运行098-to-100migration.sql脚本来升级你的数据库.在数据库对应的creatdb.sql所在的目录下你可以找到该脚本。 从Roller0.9.7升级到Roller1.0:你应该首先运行097-to-098-migration.sql,然后再运行098-to-100-migration.sql。
问题: MySQL的用户不要忘记调用刷新特权,并且确认你的MySQL没有设置"skip-networking"选项.因为Connector/J只能通过TCP/IP来存取mysql.然而mysql命令行工具默认不使用TCP/IP套接字.使用以下的命令来检查你的连接是否正常工作(使用除了localhost的值来指定主机地址)
mysql roller -h 127.0.0.1 -u scott -ptiger
你需要下载并且安装几个必须的jar(s)包:JDBC驱动和JavaMail jars包。
Roller使用应用服务器提供的数据库连接池,在下一步我们将会设置它。应用服务器想要和数据库进行连接,就需要对应于该数据库的JDBC驱动。
对于Tomcat来说,只需要简单地把JDBC驱动拷贝到Tomcat的common/lib目录中就行了。
实例: MySQL的用户可以在MySQL网站的Connector/J页面上找到MySQL的JDBC驱动-Connector/J。 下载并且解压该文件,然后把JDBC驱动jar包拷贝到Tomcat的common/lib目录下。
UNIX实例: 解压(unzip,untar)MySQL Connector/J到一个目录中,cd到该目录,然后拷贝JDBC驱动jar包到Tomcat的common/lib目录下。
% cp mysql-connector-java-3.0.15-ga-bin.jar $CATALINA_HOME/common/lib
Windows实例,MS-DOS或者命令提示窗口: 解压(unzip,untar)MySQL Connector/J到一个目录中,cd到该目录,然后拷贝JDBC驱动jar包到Tomcat的common/lib目录下。
C> copy mysql-connector-java-3.0.15-ga-bin.jar %CATALINA_HOME%/common/lib
可以设置Roller发送文章评论的email通知。如果想要这个功能工作,Roller需要JavaMail和激活架构jars包来支持。
从Sun的网站下载JavaMail和激活架构jars包,解压下载的文件,然后把解压后的mail.jar和{activation.jar}文件拷贝到roller/WEB-INF/lib目录下。否则Roller将不能启动发送mail的功能。
在J2EE应用服务器中部署Roller。你必须完成以下三步:
使用Tomcat 4.X 和 5.0.X的实例
对于Tomcat用户来说,就是编辑Tomcat Servlet引擎的conf/server.xml设置文件,添加Roller Servlet Context。在文件中设置使用Roller数据库的Servlet认证信息和Roller数据源。在server.xml文件中找到定义Contexts的位置,如果使用MySQL,应该把本文下面的代码添加到该位置。之前要确认你已经用你的MySQL数据库的用户名和密码取代了代码中的scott和tiger。
另外一种方法是:你可以把下面的Context设置代码添加到webapps/roller.xml文件中。如果你使用的是Tomcat 5.x,可以把该文件放到CATALINA_HOME/conf/Catalina/localhost目录下。 如果你使用Tomcat 5.5.X作为容器,请参考下面的实例。
为了避免jdbc连接问题,请用&取代connectionURL中的&。这种方法将会解决一些人遇到的xml合法性错误。当然还用改变下面的端口号为主机上正确的端口号。
<Context path="/roller" docBase="roller" debug="0"> <Realm className="org.apache.catalina.realm.JDBCRealm" driverName="com.mysql.jdbc.Driver" connectionURL= "jdbc:mysql://localhost:3306/roller?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8" connectionName="scott" connectionPassword="tiger" userTable="rolleruser" userNameCol="username" userCredCol="passphrase" userRoleTable="userrole" roleNameCol="rolename" debug="0" /> <Resource name="jdbc/rollerdb" auth="Container" type="javax.sql.DataSource" /> <ResourceParams name="jdbc/rollerdb"> <parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <parameter> <name>driverClassName</name> <value>com.mysql.jdbc.Driver</value> </parameter> <parameter> <name>url</name> <value> jdbc:mysql://localhost:3306/roller?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8 </value> </parameter> <parameter><name>username</name><value>scott</value></parameter> <parameter><name>password</name><value>tiger</value></parameter> <parameter><name>maxActive</name><value>20</value></parameter> <parameter><name>maxIdle</name><value>3</value></parameter> <parameter><name>removeAbandoned</name><value>true</value></parameter> <parameter><name>maxWait</name><value>3000</value></parameter> </ResourceParams> <!-- To enable email notification of comments: uncomment the resouce below, set your mailhost, and make sure you have mail.jar and activation.jar in <tomcat>/common/lib. --> <!-- <Resource name="mail/Session" auth="Container" type="javax.mail.Session"/> <ResourceParams name="mail/Session"> <parameter> <name>mail.smtp.host</name> <value>mailhost.example.com</value> </parameter> </ResourceParams> --> </Context>
使用Tomcat 5.5.X的实例
在Tomcat 5.5.X中,定义资源参数的行为已经改变。 对于Tomcat 5.5.x来说,资源参数必须被定义为Resource元素的一个属性;ResourceParams元素不被支持。 你可以使用下面的实例作为设置的起点。 这只对Tomcat 5.5.x有效;对于Tomcat 4.X 和 5.0.X 请使用上面的实例。
<Context path="/roller" docBase="roller" debug="0"> <Realm className="org.apache.catalina.realm.JDBCRealm" driverName="com.mysql.jdbc.Driver" connectionURL= "jdbc:mysql://localhost:3306/roller?autoReconnect=true& useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8" connectionName="scott" connectionPassword="tiger" userTable="rolleruser" userNameCol="username" userCredCol="passphrase" userRoleTable="userrole" roleNameCol="rolename" debug="0" /> <Resource name="jdbc/rollerdb" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/roller?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8" username="scott" password="tiger" maxActive="20" maxIdle="3" removeAbandoned="true" maxWait="3000" /> <!-- To enable email notification of comments: uncomment the resouce below, set your mailhost, and make sure you have mail.jar and activation.jar in <tomcat>/common/lib. --> <!-- <Resource name="mail/Session" auth="Container" type="javax.mail.Session" mail.smtp.host="mailhost.example.com" /> --> </Context>
注意
在启动Roller前,最后的一些工作...
Roller实现国际化的方法就是用UTF-8编码做所用的事情。如果你想要I18N正常地工作,就要设置应用服务器和web服务器使用UTF-8编码。
Web应用服务器URI编码
确认你的应用服务器使用UTF-8来编码URI's。这样就允许你在urls中使用一些区分的字符。对Roller来说这点非常重要,因为在URLs中Weblog的登陆标题被使用。
实例: 在Tomcat中,URL的编码在server.xml文件的Connector中指定:
<Connector port="12345" enableLookups="false" URIEncoding="UTF-8" redirectPort="8443" debug="0" protocol="AJP/1.3" />
注意: 你需要在与Roller应用有关的每一个connector中设置该属性。例如,如果你直接使用HTTP connector,而不是AJP和Apache,你也同样需要在connector元素中添加URIEncoding="UTF-8"属性,同样也适用于HTTPS connector。
Web服务器页面的编码
如果你使用一个独立的web服务器,比如Apache,来管理静态内容,请确认web服务器的页面编码被设置为UTF-8。
例如: Apache 2.x的情况,使用AddDefaultCharset来设置。
AddDefaultCharset utf-8
你是否认为6.1更像单独的一部分呢?
启动Servlet容器,打开你的浏览器,进入Roller的首页,开始享受Roller吧。
如果你在Tomcat上安装了Roller,Roller首页的URL可能是http://localhost:8080/roller。
UNIX实例:
% cd $CATALINA_HOME/bin % ./startup.sh
Windows实例,MS-DOS或者命令提示窗口:
C> cd %CATALINA_HOME%/bin C> startup
正像你做的!Roller正在完美地工作了。如果没有,请到roller-user邮件列表中请求帮助。一些人可能和你遇到相同的问题。注意:你建立的第一个用户将有管理员的权限,所以确定建立第一个用户的是你自己。管理员可以授权给其他用户管理员的权限,并且可以撤销该用户的权限。
现在你已经安装了Roller并且确认了它已经开始工作,这里还有一些你可能希望完成的工作。
Roller的命令行管理工具允许你给用户授权和撤销给用户的授权,保存所有的密码到一个文件中,从一个文件中恢复所有的密码,加密数据库中所有的密码。下面将讲解如何设置该工具。
一些可选的步骤...(TBD)