2015年7月29日 星期三

Linux Red Hat 安裝 OpenKM 6.3 Community 以及連結PostgreSQL 資料庫

OpenKM是一套設計完整精良的Web化文件管理系統,而社群版支援的作業平台包括Windows Server、Debian、Ubuntu、Red Hat、CentOS、Fedora、Mac OSX、Otros,且可順利的整合LDAP與Active Directory的認證管理,可以說是符合中小企業使用。

OpenKM在在社群版支援多國語言切換、面版管理、檔案上傳與下載、版本控管、文件分類管理、文件預覽、限制文件檔案下載、標籤雲功能、進階搜尋、個人文件管理、多檔管理支援、WebDAV連線存取、OCR支援、防毒支援、使用者帳戶管理、行動裝置支援、OpenOffice整合支援(Addon)、Microsoft Office外掛整合支援(Addins,其中社群版僅支援Word與Outlook)等等。

以下說明在Linux 安裝Open KM的步驟:

1. 安裝環境說明:
    Linux Red Hat 7 + TOMCAT 7.3 + PostgreSQL 9

2.  下載OpenKM的安裝檔, 有二種安裝檔案可選擇:
      A. openkm-6.3.0-community-war.zip, 直接下載war檔, deploy在已存在的tomcat之上

      B. Openkm-6.3.0-community-linux-x64-installer.run, 完整安裝檔適合没有tomcat的環境,
   

    今天因為已安裝了tomcat7 , 所以就用方法A.

3. 解壓縮ZIP檔, 將WAR檔上傳放置在$CATALINA_HOME/webapps,

         
4. tomcat本身並没有log4j.jar, 所以必須至Aapache 下載log4j.jar並放在$CATALINA_HOME/lib下

    其它應在%CATALINA_HOME/lib加入的JAR檔如下圖


    當然在$CATALINA_HOME/conf 中別忘了加入 log4j.properties 這個檔案, 內容可參考:

log4j.rootLogger=INFO, CONSOLE, CATALINA

# Define all the appenders

log4j.appender.CATALINA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.CATALINA.File=${catalina.base}/logs/catalina.log
log4j.appender.CATALINA.Append=true
log4j.appender.CATALINA.Encoding=UTF-8
# Roll-over the log once per day
log4j.appender.CATALINA.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.LOCALHOST=org.apache.log4j.DailyRollingFileAppender

log4j.appender.LOCALHOST.File=${catalina.base}/logs/localhost.log
log4j.appender.LOCALHOST.Append=true
log4j.appender.LOCALHOST.Encoding=UTF-8
log4j.appender.LOCALHOST.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.MANAGER=org.apache.log4j.DailyRollingFileAppender

log4j.appender.MANAGER.File=${catalina.base}/logs/manager.log
log4j.appender.MANAGER.Append=true
log4j.appender.MANAGER.Encoding=UTF-8
log4j.appender.MANAGER.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.HOST-MANAGER=org.apache.log4j.DailyRollingFileAppender

log4j.appender.HOST-MANAGER.File=${catalina.base}/logs/host-manager.log
log4j.appender.HOST-MANAGER.Append=true
log4j.appender.HOST-MANAGER.Encoding=UTF-8
log4j.appender.HOST-MANAGER.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.HOST-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

log4j.appender.CONSOLE.Encoding=UTF-8
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

# Configure which loggers log to which appenders

log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=INFO, LOCALHOST
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]=INFO, MANAGER
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager]=INFO, HOST-MANAGER

# OpenKM

log4j.logger.org.hibernate=WARN
log4j.logger.org.jbpm=WARN
log4j.logger.com.openkm=INFO

5. 在$CATALINA_HOME下建立三檔案 :  OpenKM.xml, PropertyGroups.xml, OpenKM.cfg

    OpenKM.xml 內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
             xmlns:security="http://www.springframework.org/schema/security"
             xmlns:task="http://www.springframework.org/schema/task"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.springframework.org/schema/beans
                                 http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                                 http://www.springframework.org/schema/security
                                 http://www.springframework.org/schema/security/spring-security-3.1.xsd
                                 http://www.springframework.org/schema/task
                                 http://www.springframework.org/schema/task/spring-task-3.1.xsd">
  
  <!-- Security configuration -->
  <security:authentication-manager alias="authenticationManager">
    <security:authentication-provider>
      <security:password-encoder hash="md5"/>
      <security:jdbc-user-service 
        data-source-ref="dataSource"
        users-by-username-query="select usr_id, usr_password, 1 from OKM_USER where usr_id=? and usr_active='T'"
        authorities-by-username-query="select ur_user, ur_role from OKM_USER_ROLE where ur_user=?"/>
    </security:authentication-provider>
  </security:authentication-manager>
</beans:beans>

   PropertyGroups.xml內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 2.0//EN"
                                 "http://www.openkm.com/dtd/property-groups-2.0.dtd">
<property-groups>
  <property-group label="Consulting" name="okg:consulting">
    <input label="Name" type="text" name="okp:consulting.name"/>
    <input label="Date" type="date" name="okp:consulting.date" />
    <checkbox label="Important" name="okp:consulting.important"/>
    <textarea label="Comment" name="okp:consulting.comment"/>
  </property-group>
  
  <property-group label="Technology" name="okg:technology">
    <select label="Type" name="okp:technology.type" type="multiple">
      <option label="Alfa" value="t1"/>
      <option label="Beta" value="t2" />
      <option label="Omega" value="t3" />
    </select>
    <select label="Language" name="okp:technology.language" type="simple">
      <option label="Java" value="java"/>
      <option label="Python" value="python"/>
      <option label="PHP" value="php" />
    </select>
    <input label="Comment" name="okp:technology.comment"/>
    <textarea label="Description" name="okp:technology.description"/>
    <input label="Link" type="link" name="okp:technology.link"/>
  </property-group>
</property-groups>

 OpenKM.cfg 內容如下:

# OpenKM Hibernate configuration values
#hibernate.dialect=org.hibernate.dialect.HSQLDialect


hibernate.hbm2ddl=none



# Initial configuration - Linux
system.imagemagick.convert=/usr/bin/convert
system.openoffice.path=/usr/lib/libreoffice
system.swftools.pdf2swf=/opt/openkm/bin/pdf2swf -f -T 9 -t -s storeallcharacters ${fileIn} -o ${fileOut}

# Initial configuration - Windows

#system.imagemagick.convert=C:/openkm/bin/convert.exe
#system.openoffice.path=C:/Program Files (x86)/OpenOffice 4
#system.swftools.pdf2swf=C:/openkm/bin/pdf2swf.exe -f -T 9 -t -s storeallcharacters ${fileIn} -o ${fileOut}

每個檔案都有的作用,  之後設定都會修改到它,

6. 下載JDBC Driver for PostgreSQL  , 並將jar檔放置至$CATALINA_HOME/lib

7. 加入連結PostgreSQL的Datasource

    A. 開啟$CATALINA_HOME/conf/server.xml 在<GlobalNamingResources>加入紅字部份:
     <GlobalNamingResources>
         <!-- Editable user database that can also be used by
                UserDatabaseRealm to authenticate users
          -->
        <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
       <Resource name="jdbc/OpenKMDS" auth="Container" type="javax.sql.DataSource"
          maxActive="100" maxIdle="30" maxWait="10000" validationQuery="select 1"
          username="openKM" password="XXXXX" driverClassName="org.postgresql.Driver"
          url="jdbc:postgresql://XXXXXX:5432/okmdb"/>
      <Resource type="javax.mail.Session" auth="Container" 
           name="mail/OpenKM" mail.from="testing@openkm.com" mail.smtp.host="localhost"/>
    </GlobalNamingResources>
   記得將XXX的部份改成適當值

   B. 修改$CATALINA_HOME/conf/context.xml , 加入以下兩行
         <ResourceLink type="javax.sql.DataSource" name="jdbc/OpenKMDS" global="jdbc/OpenKMDS"/>


        <ResourceLink type="javax.mail.Session" name="mail/OpenKM" global="mail/OpenKM"/>
 
8. 建立資料庫及使用者, 這就不多說了, 在PostgreSQL建立一個openKm的使用者及名稱為okmdb的資料庫.

9. 在開啟tomcat之前, 記得修改$CATALINA_HOME/OpenKM.cfg加入這兩行

hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

hibernate.hbm2ddl=create   //create表示要新增資料庫, 當Deploy完成後, 便會自動改成none


10. 開啟 tomcat , 進入OpenKM的登入畫面, 但預設只有兩種語言,記得去下載語言包 , 選擇要安裝的語言下載, 打開資料庫工具用執行SQL就行了.




2015年7月9日 星期四

PostgreSQL如何設定client 軟體遠端連線資料庫

有時因為資料庫與應用程式是安裝在不同機器上,就必須透過網路來存取資料庫,而PostgreSQL預設環境不能由本機以外,因此必須透過修改設定讓PostgreSQL可以由遠端存取資料庫。

1.修改pg_hba.conf

    檔案位置: /var/lib/pgsql/9.4/data/pg_hba.conf 新增一行存取規則

    host all all 0.0.0.0/0 password
    參數1:host表遠端存取,local表本機端存取
    參數2:設定可存取的Database
    參數3:設定可存取的使用者
    參數4:設定可存取之網域,此設定全部網域皆可存取
    參數5:trust表不需認證,password表示需要密碼

2.修改/var/lib/pgsql/9.4/data/postgresql.conf

    取消註解並設定為 listen_addresses ='*'
    取消註解並設定為 port=5432

3.重新啟動資料庫

Red Hat Enterprise 7.1 安裝 PostgreSQL

  1.  安裝環境及版本:            

  2.            Red Hat Enterprise 7.1         
               PostgreSQL 9.4

  3.   設定YUM repository

  4.            設定排除PostgreSQL在升級名單之外

               進入設定檔: $vi /etc/yum/pluginconf.d/rhnplugin.conf
               加入這一行: exclude=postgresql*
  5.   選擇要PGDG RPM檔案

  6.            可進入 http://yum.postgresql.org/選擇每個不同作業系統所對映的yum檔案,
               本次要安裝版本為9.4 版, 所以用Red Hat Linux 7 x86 64 bit的版本, 所以輸入

              yum localinstall http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-redhat94-9.4-1.noarch.rpm
    安裝畫面:



  7.   安裝 PostgreSQL Server

  8.             列出所有PostgreSQL安裝程式, 輸入:
                $yum list postgres*
               安裝PostgreSQL Server , 輸入:  
               $yum install postgresql94-server.x86_64 

                安裝畫面:

  9.  安裝完成確認
  10.             第一: 確認資料庫名稱:由於這次安裝版本為 PostgreSQL 9.0 以上, 所以預設資料的名稱為major.minor version of PostgreSQL,

                e.g., postgresql-9.4

                第二: 確認預設DATA路徑: PostgreSQL 9.0 以上預設路徑如下:


  11.   初始化資料庫


  12.            輸入:$service postgresql-9.4 initdb

                如果以上命令無法執行, 則直接執行以下命令:
                /usr/pgsql-9.4/bin/postgresql94-setup initdb



  13.   啟動資料庫

  14.             第一步: 設定成啟動後執行
                $chkconfig postgresql-9.4 on
                第二: 啟動PostgreSQL服務:

               $service postgresql-9.4 start

                start : start the database
                stop : stop the database
                restart : stop/start the database; used to read changes to core configuration files
                reload : reload pg_hba.conf file while keeping database running
  15.  測試連結:


  16.             利用Hidisql client tool測試是否可連結至新安裝的資料庫

2015年7月8日 星期三

Linux Red Hat 安裝Tomcat Liferay 6.2

Liferay 6.2 For Tomcat 的安裝方式有二種

  1. 若之前無安裝TOMCAT可以直接進入http://www.liferay.com/downloads/liferay-portal/available-releases,選擇TOMCAT的版本下載
  2. 若已經存在TOMCAT SERVER 或想手動安裝LIFERAY , 則可依以下步驟安裝, 本文已此方式安裝
  • Step1. 安裝Tomcat 7
    • 首先要安裝 JDK 環境: 
                    安裝方式可以參考 Install OpenJDK on Red Hat Enterprise Linux

    • 下載Tomcat 7,並且解壓:
                     使用wget下載方式將壓縮檔案下載到/opt/目錄下,解壓縮並更名為tomcat7。

                     cd /opt    //切換到/opt目錄
                     #wget  http://ftp.tc.edu.tw/pub/Apache/tomcat/tomcat-7/v7.0.63/bin/apache-tomcat-7.0.63.tar.gz   //下載TOMCAT 7.63 版本

                     # tar -xvf apache-tomcat-7.0.63.tar.gz //解開壓縮檔
                     # mv apache-tomcat-7.0.63 tomcat  //將檔名名成tomcat7
    • 啟動tomcat
  • Step2 安裝Liferay 6.2 
    • 安裝前請先由官網下載 Liferay -XXX.war及相關jar檔,下載網址:
    • 安裝所需jar檔 , 在官網的安裝手冊中有說明要安裝的jar檔及下載處
                    可參考安裝手冊: Installing Liferay on Tomcat 7
                    在這我直接下載 Bundled with Tomcat 然後直接將壓縮檔解開, 將所需的jar檔傳上去
      • 建立ext資料夾在 /opt/tomcat/lib之下 //依實際tomcat安裝路徑   
      • 解壓縮   Bundled with Tomcat 的ZIP檔案, 並將/lib/ext/下的jar檔都上傳至
                              前項所路徑之下

    • Tomcat環境設定:
      • 建立 $TOMCAT_HOME/bin/setenv.sh , 在該檔中加入:
CATALINA_OPTS="$CATALINA_OPTS -Dfile.encoding=UTF8 -Dorg.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES=false -Duser.timezone=GMT -Xmx1024m -XX:MaxPermSize=256m" //這邊我建議可以的話放大點!!
      • 新增ROOT.xml在$TOMCAT_HOME/conf/Catalina/localhost之下
<Context path="" crossContext="true">

    <!-- JAAS -->

    <!--<Realm
        classNjame="org.apache.catalina.realm.JAASRealm"
        appName="PortalRealm"
        userClassNames="com.liferay.portal.kernel.security.jaas.PortalPrincipal"
        roleClassNames="com.liferay.portal.kernel.security.jaas.PortalRole"
    />-->

    <!--
    Uncomment the following to disable persistent sessions across reboots.
    -->

    <!--<Manager pathname="" />-->

    <!--
    Uncomment the following to not use sessions. See the property
    "session.disabled" in portal.properties.
    -->

    <!--<Manager className="com.liferay.support.tomcat.session.SessionLessManagerBase" />--></Context>
    • 設定$TOMCAT_HOME/conf/catalina.properties 將以下
common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar
                     改成:
common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,${catalina.home}/lib/ext,${catalina.home}/lib/ext/*.jar
    • 編輯 $TOMCAT_HOME/conf/server.xml 加入屬性  URIEncoding="UTF-8" 如下:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />


    • 最後確認在$TOMCAT_HOME/webapp之下有没有support-catalina.jar, 有則刪除
  • 上傳WAR檔, 將下載的WAR檔改檔名成ZIP之後解開,  把$TOMCAT_HOME/webapp/ ROOT之下的檔案移除後, 將解開的的檔案傳上去, 大功告成.