源文本版權歸屬 Copyright ? 2002-2004 David M Johnson
- 介紹
- 開發者請參見開發者向導
介紹
這篇文檔描述了如何在Tomcat Servlet引擎上安裝
Roller Weblogger版本1.0
, 以及如何設置:
- Java 1.4.x SDK或更高版本的SDK
- Tomcat 4.x或5.x Servlet容器(非Tomcat"LE"版本).建議建立國際化的站點使用Tomcat 5.x
- MySQL 4.x或更高版本
- Windows或基于Unix的操作系統
對于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等等)。
第一步:前決條件 [#1]
在你安裝Roller之前,你需要確認在你的系統上已經安裝并且設置了一下軟件:Java SDK,Tomcat Servlet引擎和 MySQL 數據庫.如果在Debian上使用 MySQL ,請參考 Debian MySQL .
作為安裝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文件 [#2]
在這步中,應該把下載的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目錄下.
第三步:在數據庫中建立Roller涉及的表 [#3]
現在你需要建立一個新的數據庫,建立一個擁有適當權限的用戶,然后使用SQL腳本來建立運行Roller需要的數據庫表.請登陸到數據庫,之后運行Roller WEB-INF/dbscripts目錄下的Roller數據庫建立腳本.
- WEB-INF/dbscripts/ mysql /creatdb.sql - 在 MySQL 中建立表的數據庫腳本
- WEB-INF/dbscripts/hsql/creatdb.sql - 在HSQL-DB中建立表的數據庫腳本
- WEB-INF/dbscripts/postgresql/creatdb.sql - 在 PostgreSQL 中建立表的數據庫腳本
下面的實例將向你展示在 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
第四步:下載并且安裝需要的jars文件 [#4]
你需要下載并且安裝幾個必須的jar(s)包: JDBC 驅動和 JavaMail jars包。
4.1: JDBC 驅動
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
4.2: JavaMail 和激活架構(Activation)jars包
可以設置Roller發送文章評論的email通知。如果想要這個功能工作,Roller需要 JavaMail 和激活架構jars包來支持。
從Sun的網站下載 JavaMail 和激活架構jars包,解壓下載的文件,然后把解壓后的mail.jar和{activation.jar}文件拷貝到roller/WEB-INF/lib目錄下。否則Roller將不能啟動發送mail的功能。
第五步:在服務器中部署Roller [#5]
在J2EE應用服務器中部署Roller。你必須完成以下三步:
- 告訴應用服務器Roller的安裝目錄
- 告訴應用服務器使用Roller數據庫中的rolleruser和userrole表來驗證登陸的用戶
- 為數據庫設置數據源 jdbc /rollerdb
使用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. JDBC Realm" driverName="com. mysql . jdbc .Driver" connectionURL= " jdbc : mysql ://localhost:3306/roller?autoReconnect=true&useUnicode=true&characterEncoding=utf-8& mysql Encoding=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& mysql Encoding=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. JDBC Realm" driverName="com. mysql . jdbc .Driver" connectionURL= " jdbc : mysql ://localhost:3306/roller?autoReconnect=true& useUnicode=true&characterEncoding=utf-8& mysql Encoding=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& mysql Encoding=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>
注意
-
<Context>
設置的第一部分設置了Tomcat的認證
<Realm>
。這個設置會讓Tomcat在Roller數據庫中的表中查找用戶信息,來檢查用戶登陸的證書(用戶名和密碼)。我們設置Tomcat使用Roller數據庫中的
rolleruser
和
role
表。關于設置<Realm>的更多信息,請參考Tomcat文檔中關于
JDBC
Realm
的章節。
- <Context> 設置的第二部分用 <Resource> 設置了Roller的數據源。你必須重復一些在 <Realm> 設置中的連接參數。
- ?&?字符在XML中被用來識別實體引用,所以你必須用?&user=scott&password=password?來代替connectionURL中?&user=scott&password=password?,來避免啟動Tomcat時的解析異常。--例如:在?&?后添加?amp;?--
-
要想得到更多關于Tomcat server.xml設置文件的信息,請參考
Tomcat设置参考
。
- 如果在Roller啟動時發生錯誤,并且在logs(roller.log)中的錯誤信息類似于?User scott@localhost has already more than 'max_user_connections' active connections?,請嘗試減小maxActive,maxIdle和removeAbandoned的值。根據你數據庫的設置你必須要做一些調整,例如設置maxActive為6,maxIdle為3,removeAbandonedTimeout為60。
-
從Roller 0.9.7升級,注意下面的一些變化:
- 表 role 已經被重命名為 userrole
- 表userrole中的 role 列被重命名為 rolename
- 表rolleruser中的 password 列被重命名為 passphrase
第六步:啟動前的工作 [#6]
在啟動Roller前,最后的一些工作...
6.1:設置應用服務器的I18N(國際化)
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.2:步驟1的繼續
你是否認為6.1更像單獨的一部分呢?
第七步:啟動Tomcat和Roller [#7]
啟動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邮件列表
中請求幫助。一些人可能和你遇到相同的問題。
注意
:你建立的第一個用戶將有管理員的權限,所以確定建立第一個用戶的是你自己。管理員可以授權給其他用戶管理員的權限,并且可以撤銷該用戶的權限。
第八步:后續工作 [#8]
現在你已經安裝了Roller并且確認了它已經開始工作,這里還有一些你可能希望完成的工作。
8.1:設置Roller的命令行管理工具
Roller的命令行管理工具允許你給用戶授權和撤銷給用戶的授權,保存所有的密碼到一個文件中,從一個文件中恢復所有的密碼,加密數據庫中所有的密碼。下面將講解如何設置該工具。
- 打開命令行窗口
- 改變目錄到Roller安裝目錄中的WEB-INF/dbscripts目錄下
- 編輯文件 rollerdb.properties ,包含你的數據庫連接參數
- 編輯文件 rollerpw.sh 或 rollerdb.bat (Windows平臺),設置 JDBC 驅動的classpath
- 在UNIX環境中,在你第一次運行該腳本之前,你必須先運行命令 chmod +x rollerpw.sh 使腳本變為可執行的
- 運行腳本 rollerpw.sh 或 rollerdb.bat (Windows平臺),然后它將會顯示一些腳本的用法信息。
8.2:可選的步驟
一些可選的步驟...(TBD)
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
