<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Latest posts for the topic "OLAT 6.1.1安裝筆記(CentOS 5.3 + PostgreSQL 8.1.11 + Tomcat 6.0.18 + Openfire 3.6.4)"]]></title>
		<link>https://forum.andowson.com/posts/list/14.page</link>
		<description><![CDATA[Latest messages posted in the topic "OLAT 6.1.1安裝筆記(CentOS 5.3 + PostgreSQL 8.1.11 + Tomcat 6.0.18 + Openfire 3.6.4)"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>OLAT 6.1.1安裝筆記(CentOS 5.3 + PostgreSQL 8.1.11 + Tomcat 6.0.18 + Openfire 3.6.4)</title>
				<description><![CDATA[ OLAT 自6.1.0版起開始支援Cluster架構和更容易引進多國語言的翻譯工具，最近更新的6.1.1版，修正了很多新版剛發行時的bug，如修正了一些正體中文註冊連結的問題，因此，我比較推薦安裝這個版本。底下是整個全新安裝的步驟。 
<br>
<br>
一、設計理念 
<br>
OLAT是一個網頁應用系統，可以在Tomcat上安裝及執行，後端可以接MySQL或PostgreSQL或其他Hibernate支援的資料庫，如果要執行聊天室功能，我們還需要安裝Openfire，如果要支援Cluster，還要安裝JMS Server(如ActiveMQ)。由於設備有限，我以全部安裝在單部主機(CentOS 5.3 Linux)方式介紹，不考慮Cluster的模式。 
<br>
<br>
我們預計安裝OLAT的目錄是/home/andowson/www/olat，底下如未特別聲明，均是以andowson身份執行（[url=http://www.andowson.com/posts/list/166.page]具有sudo權限[/url]）。 
<br>
<br>
我們預計安裝下列元素： 
<br>
1. JDK+Apache+Tomcat+mod_jk 
<br>
2. PostgreSQL 
<br>
3. Ant 
<br>
4. Openfire 
<br>
5. OLAT 
<br>
<br>
二、實作步驟 
<br>
1.可以參考這篇文章完成：[url]http://www.andowson.com/posts/list/315.page[/url]，並參考這篇[url]http://www.andowson.com/posts/list/309.page[/url]建立一個Virtual Host，在此就不浪費篇幅。 
<br>
2.PostgreSQL的安裝及啟動可以透過下列的指令來完成(以root身份執行)： 
<br>
[code] 
<br>
yum -y install postgresql-server 
<br>
sed -i -e "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" /var/lib/pgsql/data/postgresql.conf 
<br>
<br>
sed -i -e "s/local all all ident sameuser/local all all trust/g" /var/lib/pgsql/data/pg_hba.conf 
<br>
sed -i -e "s/host all all 127.0.0.1\/32 ident sameuser/host all all 127.0.0.1\/32 md5/g" /var/lib/pgsql/data/pg_hba.conf 
<br>
sed -i -e "69a\host all all 192.168.1.0\/24 md5" /var/lib/pgsql/data/pg_hba.conf 
<br>
<br>
chkconfig --level 235 postgresql on 
<br>
service postgresql start 
<br>
[/code] 
<br>
3.Ant安裝也很簡單，只需要下載並解壓縮即可，這裡我們以安裝1.7.1版為例 
<br>
[code] 
<br>
cd ~/download 
<br>
wget http://apache.ntu.edu.tw/ant/binaries/apache-ant-1.7.1-bin.tar.gz 
<br>
sudo tar zxvf apache-ant-1.7.1-bin.tar.gz -C /usr/local 
<br>
[/code] 
<br>
接著設定環境變數ANT_HOME 
<br>
vi ~/.bash_profile 
<br>
[code] 
<br>
ANT_HOME=/usr/local/apache-ant-1.7.1 
<br>
JAVA_HOME=/usr/java/latest 
<br>
PATH=$PATH:$HOME/bin:$ANT_HOME/bin:$JAVA_HOME/bin 
<br>
<br>
export PATH ANT_HOME JAVA_HOME 
<br>
[/code] 
<br>
執行source將設定載入 
<br>
source ~/.bash_profile 
<br>
<br>
4.安裝Openfire(以root身份執行)： 
<br>
[code] 
<br>
cd /root/setup 
<br>
wget http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire-3.6.4-1.i386.rpm 
<br>
rpm -ivh openfire-3.6.4-1.i386.rpm 
<br>
chmod 755 /opt/openfire 
<br>
[/code] 
<br>
建立資料庫openfire 
<br>
[code] 
<br>
sudo -u postgres psql -c "CREATE USER openfire WITH ENCRYPTED PASSWORD 'openfire' VALID UNTIL 'infinity' CREATEDB;" template1 
<br>
sudo -u postgres psql -c "CREATE DATABASE openfire WITH ENCODING 'UNICODE';" -U openfire template1 
<br>
sudo -u postgres psql -c "ALTER USER openfire NOCREATEDB;" template1 
<br>
sudo -u postgres psql openfire openfire -f /opt/openfire/resources/database/openfire_postgresql.sql 
<br>
[/code] 
<br>
手動設定設定檔openfire.xml，將下列設定貼在&lt;/jive&gt;之前 
<br>
vi /opt/openfire/conf/openfire.xml 
<br>
[code] 
<br>
 &lt;connectionProvider&gt; 
<br>
 &lt;className&gt;org.jivesoftware.database.DefaultConnectionProvider&lt;/className&gt; 
<br>
 &lt;/connectionProvider&gt; 
<br>
 &lt;database&gt; 
<br>
 &lt;defaultProvider&gt; 
<br>
 &lt;driver&gt;org.postgresql.Driver&lt;/driver&gt; 
<br>
 &lt;serverURL&gt;jdbc:postgresql://localhost:5432/openfire&lt;/serverURL&gt; 
<br>
 &lt;username&gt;openfire&lt;/username&gt; 
<br>
 &lt;password&gt;openfire&lt;/password&gt; 
<br>
 &lt;testSQL&gt;select 1&lt;/testSQL&gt; 
<br>
 &lt;testBeforeUse&gt;true&lt;/testBeforeUse&gt; 
<br>
 &lt;testAfterUse&gt;true&lt;/testAfterUse&gt; 
<br>
 &lt;minConnections&gt;1&lt;/minConnections&gt; 
<br>
 &lt;maxConnections&gt;25&lt;/maxConnections&gt; 
<br>
 &lt;connectionTimeout&gt;1.0&lt;/connectionTimeout&gt; 
<br>
 &lt;/defaultProvider&gt; 
<br>
 &lt;/database&gt; 
<br>
 &lt;setup&gt;true&lt;/setup&gt; 
<br>
[/code] 
<br>
調整openfire在系統開機時自動啟動的順序（要在PostgreSQL之後，Tomcat之前） 
<br>
sed -i -e "s/99 1/80 20/g" /etc/init.d/openfire 
<br>
調整openfire啟動時的JVM參數 
<br>
sed -i -e "s/-server/-server -Xss256k/g" /etc/init.d/openfire 
<br>
設定開機自動啟動openfire 
<br>
chkconfig openfire on 
<br>
啟動openfire 
<br>
service openfire start 
<br>
<br>
啟動之後，開啟瀏覽器到http://&lt;your_server_name&gt;:9090/，以admin/admin登入 
<br>
調整一些系統設定，如mail server，不允許使用者建立帳號跟修改密碼等 
<br>
接著下載OLAT plugin 
<br>
http://www.olat.org/downloads/stable/olatUserAndGroupService.jar 
<br>
然後切換到Plugin頁面，將這個jar檔匯入即可。 
<br>
<br>
注意：如果您有設定iptables或其他防火牆，建議先關閉，等測試沒問題後再打開，並增加Openfire所需要的port。 
<br>
<br>
5.終於到了主菜了，安裝OLAT，我們需要先下載OLAT原始碼的壓縮檔，解壓縮，建立build.properties，然後再執行ant config-all, ant build來編譯。 
<br>
[code] 
<br>
# get OLAT source 
<br>
cd ~/download 
<br>
wget http://www.olat.org/downloads/stable/OLAT-6.1.1.zip 
<br>
unzip OLAT-6.1.1.zip 
<br>
mv OLAT-6.1.1-PUBLIC-* olat3 
<br>
cd olat3 
<br>
# config build.properties 
<br>
sed -e "s/\/usr\/local\/opt\/olat\/olat3/\/home\/andowson\/download\/olat3/g" \ 
<br>
-e "s/\/usr\/local\/opt\/olat\/olatdata/\/home\/andowson\/data\/olatdata/g" \ 
<br>
-e "s/\/usr\/local\/opt\/tomcat/\/var\/tomcat6/g" \ 
<br>
-e "1,$$s/www.myolat.com/www.andowson.com/g" \ 
<br>
-e "1,$$s/myolat.com/andowson.com/g" \ 
<br>
-e "1,$$s/myolat/andowson/g" \ 
<br>
-e "s/server.modjk.enabled=false/server.modjk.enabled=true/g" \ 
<br>
-e "55a\server.modjk.jvmRoute=worker1" \ 
<br>
-e "s/defaultcharset=ISO-8859-1/defaultcharset=UTF-8/g" \ 
<br>
-e "s/registration.enableNotificationEmail=false/registration.enableNotificationEmail=true/g" \ 
<br>
-e "s/smtp.host=smtp.andowson.com/smtp.host=smtp.yourcompany.com/g" \ 
<br>
-e "s/smtp.user=/smtp.user=username/g" \ 
<br>
-e "s/smtp.pwd=/smtp.pwd=password/g" \ 
<br>
-e "120,142d" \ 
<br>
-e "1,$$s/#db/db/g" \ 
<br>
-e "1,$$s/net.sf.hibernate/org.hibernate/g" \ 
<br>
-e "s/instantMessaging.enable=false/instantMessaging.enable=true/g" \ 
<br>
-e "s/instantMessaging.server.name=jabber.andowson.com/instantMessaging.server.name=www.andowson.com/g" \ 
<br>
-e "s/instantMessaging.db.name=wildfire/instantMessaging.db.name=openfire/g" \ 
<br>
-e "s/instantMessaging.db.user=wildfire/instantMessaging.db.user=openfire/g" \ 
<br>
-e "s/instantMessaging.db.pass=wildfire/instantMessaging.db.pass=openfire/g" \ 
<br>
-e "s/cluster.catalinaport=8006/cluster.catalinaport=8105/" \ 
<br>
-e "s/cluster.ajpport=8009/cluster.ajpport=8109/" build.properties.default &gt; build.properties 
<br>
# adjust the original template config files 
<br>
sed -i -e "s/&lt;enabledLanguages&gt;en,de,fr,it,es&lt;\/enabledLanguages&gt;/&lt;enabledLanguages&gt;en,de,fr,it,es,zh_CN,zh_TW&lt;\/enabledLanguages&gt;/g" ~/download/olat3/webapp/WEB-INF/olat_config.xml.in 
<br>
sed -i -e "1,$$s/olat-newinstallation.org/andowson.com/g" ~/download/olat3/webapp/WEB-INF/olat_config.xml.in 
<br>
sed -i -e "13c\ &lt;\!-- default session timeout --&gt;" ~/download/olat3/webapp/WEB-INF/web.xml.in 
<br>
ant config-all 
<br>
ant build 
<br>
[/code] 
<br>
接著我們需要先建立一個olat的資料庫再來執行ant dbsetup_postgreSQL。 
<br>
[code]# create database olat and testdb 
<br>
sudo -u postgres psql -c "CREATE USER olat WITH ENCRYPTED PASSWORD 'olat' VALID UNTIL 'infinity' CREATEDB;" template1 
<br>
sudo -u postgres psql -c "CREATE DATABASE olat WITH ENCODING 'UNICODE';" -U olat template1 
<br>
sudo -u postgres psql -c "CREATE DATABASE testdb WITH ENCODING 'UNICODE';" -U olat template1 
<br>
sudo -u postgres psql -c "ALTER USER olat NOCREATEDB;" template1[/code] 
<br>
這裡要注意的是PostgreSQL 8.2之前的版本尚未支援drop table if exists這種語法，因在CentOS 5.3發行的是PostgreSQL 8.1.11的版本，由於執行dbsetup_postgreSQL時會先執行deleteDatabase.sql，第一次安裝時由於資料庫是空的，會失敗，故我們需要修正一下deleteDatabase.sql裡面的語法。我們可以先將deleteDatabase.sql換成一個空檔，等第一次建立好table後再換回來。另外第一次啟動時也會執行alter_6_0_x_to_6_1_0.sql，故我們也要同步修正這邊的drop table if exists語法。 
<br>
[code] 
<br>
# PostgreSQL 8.1 doesn't support if exists 
<br>
sed -i -e "1,$$s/if exists //g" ~/download/olat3/database/postgresql/deleteDatabase.sql 
<br>
sed -i -e "1,$$s/if exists //g" ~/download/olat3/database/postgresql/alter_6_0_x_to_6_1_0.sql 
<br>
<br>
# First time install, drop table will fail, use an empty file instead 
<br>
mv ~/download/olat3/database/postgresql/deleteDatabase.sql ~/download/olat3/database/postgresql/deleteDatabase.sql.bak 
<br>
touch ~/download/olat3/database/postgresql/deleteDatabase.sql 
<br>
ant dbsetup_postgreSQL 
<br>
mv ~/download/olat3/database/postgresql/deleteDatabase.sql.bak ~/download/olat3/database/postgresql/deleteDatabase.sql[/code] 
<br>
<br>
接著就可以把編譯好的程式及網頁部署到我們的目的資料夾~/www/olat了，另外OLAT是把程式跟資料分開存放的，這樣子將來要升級新版只要換掉程式碼的目錄即可，我們選定~/data/olatdata作為這個目錄。由於OLAT會將一些檔案解壓縮到static和WEB-INF下，所以記得變更目錄的寫入權限。 
<br>
[code] 
<br>
# deploy to web directory 
<br>
cp -rf ~/download/olat3/webapp ~/www/olat 
<br>
cp -rf ~/download/olat3/htdocs/* ~/www/olat 
<br>
sudo chgrp -R tomcat ~/www 
<br>
sudo chgrp -R tomcat ~/data/olatdata 
<br>
sudo chmod 775 ~/www/olat/static 
<br>
sudo chmod 775 ~/www/olat/WEB-INF 
<br>
sudo chmod 775 -R ~/data/olatdata 
<br>
[/code] 
<br>
最後，我們要設定讓Apache將/olat開頭的網址交給Tomcat處理，然後重新啟動Tomcat和Apache。 
<br>
[code] 
<br>
# add httpd handle setting 
<br>
echo '/olat/*=loadbalancer' &gt;&gt; /etc/httpd/conf/uriworkermap.properties 
<br>
sudo /etc/init.d/tomcat stop 
<br>
sudo killall -9 /usr/java/latest/bin/java 
<br>
sudo /etc/init.d/tomcat start 
<br>
sudo /etc/init.d/httpd restart 
<br>
[/code] 
<br>
<br>
到此，差不多大功告成了，用administrator/olat登入http://&lt;your_server_name&gt;/olat/dmz/吧！如果可以的話，建議先修改一下密碼再往下進行新的任務囉！]]></description>
				<guid isPermaLink="true">https://forum.andowson.com/posts/preList/322/602.page</guid>
				<link>https://forum.andowson.com/posts/preList/322/602.page</link>
				<pubDate><![CDATA[Mon, 25 May 2009 00:35:17]]> GMT</pubDate>
				<author><![CDATA[ andowson]]></author>
			</item>
	</channel>
</rss>