ข้ามไปที่เนื้อหาหลัก

Alfresco from source

การติดตั้ง Alfresco นั้นมีหลายวิธีด้วยกัน ผมขอแยกเป็นสามกรณีดังนี้
  • ติดตั้งจากตัว Installer ซึ่งวิธีนี้ถือว่าสะดวกที่สุดครับ เนื่องจากตัว Alfresco นั้นเตรียมเครื่องมือที่จำเป็นไว้ให้เกือบหมดแล้ว (บน Windows นี่ถือว่าพร้อมกับการทำงานทีเดียว ส่วนบน Unix จะต้องติดตั้ง MySQL ,Swf2PDF ImageMagick และ OOo - OpenOffice เองครับ เนื่องจากไม่สามารถรันได้แบบวินโดว์)
  • ติดตั้งจากตัว Compiled Binary ซึ่งจะเป็นไฟล์ zip หรือ tarball ตามแต่ระบบปฏิบัติการ
  • วิธีสุดท้ายเป็นวิธีที่ผมจะนำเสนอในตอนนี้คือการ Compile Source จาก SVN ครับ

สองวิธีสุดท้ายนี้เราจำเป็นต้องหาพวก binary ของ third party มาลงเอง (แต่สำหรับ linux ไม่ว่าจะวิธีไหนเราก็ต้องหามาลงเองครับ)

เราสามารถ Check out Source จาก repository จาก Alfresco ได้หลายวิธีไม่ว่าจะ Check out จาก Eclipse โดยผ่าน Subclipse หรือ Netbeans หรือแม้กระทั่ง SVN command line ก็สามารถทำได้

ในที่นี้ผมจะขอเลือกใช้แบบ Command line ซึ่งเป็นวิธีที่สะดวกที่สุด เพราะมีมาให้กับ linux อยู่แล้วหรือหากใครใช้ Windows อยู่ ผมขอแนะนำให้ติดตั้ง SlikSVN 1.5.x เนื่องจากขั้นตอน build นั้นจำเป็นต้องใช้ svnant ในการ build และตัว lib ของ svnant นั้นจะเรียกใช้ SVN 1.5.x เท่านั้น หากใช้ version 1.6.x นั้นจะทำให้เกิด error ขึ้นตอน build file continuous.xml ครับ

ขั้นแรกให้ check out source ออกมาก่อน


svn co svn://svn.alfresco.com/alfresco/HEAD/root "Alfresco Source"


อธิบายคำสั่งของ svn

  • co คือ checkout ครับ
  • svn://svn.alfresco.com/alfresco/HEAD เป็น repository ครับ ส่วน root นั้นเป็น directory ของ project ครับ ซึ่งจะเป็นตัว source code ทั้งหมดของ project ส่วน "Alfresco Source" นั้นเป็นการตั้งชื่อให้กับ Directory ในเครื่องเราครับ หากเราไม่ใส่เราจะได้ Directory ชื่อ root มาแทน

ปล. svn:// protocal นั้นจะใช้ port 3690 หากใครโดน block port นี้ไว้ ก็ให้ใช้
svn co http://svn.alfresco.com/repos/alfresco-open-mirror/alfresco/HEAD แทนได้ครับ ให้เติม root ต่อท้ายด้วยก็ดีครับ
ปล2. Alfresco Community Edition 3.2 นั้น revision จะอยู่ที่ 15070 ให้เราใส่ parameter ไปด้วยเป็น -r 15070


svn co svn://svn.alfresco.com/alfresco/HEAD/root "Alfresco Source" -r 15070


หลังจากได้ code มาแล้วให้เราเซ็ท environment variable สามตัวหลักที่ต้องใช้คือ

  • TOMCAT_HOME
  • APP_TOMCAT_HOME
  • VIRTUAL_TOMCAT_HOME

ใน Windows เซ็ทโดยไปที่ Control Panel > System > Advanced > Environment Variables
ใน User Variable > New > Variable Name: TOMCAT_HOME > Variable Value:

ใน Linux ให้ set ดังนี้
export TOMCAT_HOME= เซ็ทให้ครบสามตัวเป็นอันเสร็จขั้นตอนเซ็ท Environment

ต่อไปเราจะเริ่ม build ให้เราลง ant ในระบบก่อน ในที่นี้สมมติว่าทุกคนลงเรียบร้อยแล้ว หากยังเอาไว้ผมจะเขียนขั้นตอนการลงไว้ให้ครับ สามารถดูที่ tag how to หรือ search เอาก็ได้ครับ

ให้เราเริ่ม ant build ใน folder Alfresco Source (ชื่อที่เราตั้งไว้ให้ หากไม่ได้ตั้งชื่อไว้ให้จะเป็น HEAD/root หรือ root แล้วแต่ท่านลงไว้ครับ


ant -f build.xml build-tomcat หรือ ant เฉยๆ


อธิบายคำสั่ง ant -f คือ file build ของ target ต่างๆ ที่เราเขียนไว้ คล้ายๆ make file ของ gnu ครับ build-tomcat คือ target ของ build หากไม่ใส่ไว้ตัว default จะเซ็ทไว้ที่ build-tomcat อยู่แล้ว โดยสามารถเข้าไปดูได้ที่ไฟล์ build.xml ครับ

เมื่อเสร็จแล้วเราจะได้ file ต่างๆ ใน folder ตาม TOMCAT_HOME ครับ ซึ่งจะพบว่ามีไฟล์ alfresco.war และ shared.war อยู่ใน directory tomcat/webapps ครับ จากนี้เราสามารถรัน tomcat ได้แล้วครับ ตัว tomcat จะ deploy webapps เราให้อัตโนมัติครับ

หากใครรันบน Windows แล้วไม่ผ่านให้ไปเปลี่ยน Locale ใน Control Panel > Regional and Language ก่อนครับ ให้เป็น en (en_US, en_EN)ครับเนื่องจากตัว Quartz (Job Schedule คล้ายๆ กับ crontab ใน unix ครับ) จะใช้ค่าแบบ locale เป็น en ครับ หากเจอภาษาไทยเข้าไปมันจะเอ๋อครับ

หลังจากนั้นก็ให้เข้า http://localhost:8080/alfresco หรือ http://localhost:8080/share ได้เลยครับ
ตัว share นั้นจะเปรียบได้กับ sharepoint ของ Microsoft เลยทีเดียว

สามารถดูเพิ่มเติมเกี่ยวกับการ build ได้ที่ Alfresco SVN Development Environment

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

Alfresco กับการ Search ภาษาไทย

เนื่องด้วยการ Search ถือเป็นหัวใจสำคัญของงาน ECM เลยก็ว่าได้ แต่ Alfresco ณ ปัจจุบันยังไม่รองรับการ Search ด้วยภาษาไทย แต่อย่างว่า Opensource เมื่อเรารู้ว่ามันใช้ Lucene เป็น engine ในการค้นหาเอกสาร เราก็เลยแงะไปยังตัว lucene เองพบว่ามีคนส่ง Patch ในการตัดคำไทย ไปให้กับ lucene เรียบร้อยแล้ว โดยคุณสัมพันธ์นั่นเอง วิธีการ Config ให้ Alfresco ตัดคำไทยได้ผมสรุปออกมาเป็นขั้นตอนได้ดังนี้ครับ ไปเพิ่ม Locale ให้ Alfresco รู้จัก ใน tomcat/shared/classes/alfresco/extension/web-client-config-custom.xml ตรง tag <languages> เพิ่ม <language locale="th_TH">Thai</language> เข้าไป directory: tomcat/webapps/alfresco/WEB-INF/classes/alfresco/model แล้วทำการ copy file dataTypeAnalyzers_fr.properties หรือไฟล์อื่นก็ได้ เปลี่ยนชื่อเป็น dataTypeAnalyzers_th.properties แล้วเปิดไฟล์ขึ้นมาแก้ไขให้เป็น d_dictionary.datatype.d_text.analyzer=org.apache.lucene.analysis.th.ThaiAnalyzer d_dictionary.datatype.d_content.analyzer=org.apache.lucene.analysis.th.ThaiAnalyzer หลังจากนั้นเมื่อทำการ...

Spring Roo vs Grails

Spring Roo หรือ Grails ดี ถ้าต้องเลือกระหว่างสองตัวนี้จะเลือกอะไรดี คำตอบแบ่งออกได้เป็นสองส่วน ส่วนแรกคือภาษาที่ถนัด หากใครเขียน Java อยู่แล้วไม่อยากเปลี่ยนก็ควรจะเลือก Spring Roo หากใครต้องการ magic ที่มากับ Dynamic Language ก็คิดว่าน่าจะใช้ Grails มากกว่า ส่วนที่สองคือ ความเร็วในการพัฒนาเนื่องจาก magic ที่มาจากภาษา Groovy ทำให้เราพัฒนา Application ได้เร็วกว่าภาษา Java (แต่อันนี้ก็แล้วแต่ความถนัก หากถนัด Java มากๆ ก็อาจจะเร็วกว่าก็ได้) แต่ส่วนที่คิดว่าเร็วกว่าแน่ๆ คือมันจะ Generate Method ส่วนใหญ่ให้ในขณะ Runtime เช่น findBookById() ซึ่งจะไม่มีโค้ดในส่วนนี้แต่จะเป็นการ Generate ให้เองจากตัว Framework แต่หากใช้ Spring Roo เราต้องมานั่งเขียน Method ส่วนนี้เอง ข้อดี ข้อเสีย Grails อย่างที่รู้ว่า Groovy นั้นจะ Generate Method ระหว่าง Runtime ให้และยังเป็นภาษา Script แม้จะมีการ Compile ให้เป็น Bytecode ของจาวาแล้วก็ตาม แต่ Performance ก็จะด้อยกว่า Pure Java อยู่ดี Spring Roo จะช้าในช่วง Develop time แต่ขณะ Runtime จะมี Performance ดีกว่า Grails เนื่องจากไม่มีส่วนที่ต้องสร้างขึ้นระหว่าง ...

เปลี่ยนเว็บเดิมให้ Pluggable ด้วย OSGi

เป็นบทความภาษาอังกฤษครับลองอ่านดู เปลี่ยน Web application เดิมให้ยืดหยุ่นด้วย OSGi เพิ่มเติ่มให้ครับ OSGi คืออะไร เป็น Specification ครับที่เจ้าใหญ่ของ Java เค้าทำมาเพื่อให้เกิดความเป็น modularized ครับ ซึ่งถ้าจะให้เห็นภาพคือการทำงานของ plugin น่ะครับ ที่เราสามารถเปิดปิดการทำงานของมันได้ตลอดเวลาเมื่อเอามาใส่ web application ก็ทำให้เราสามารถถอดหรือเสียบ plugin ใหม่ๆ ได้ตลอดเวลา โดยที่ plugin นี้ใน OSGi จะเรียกว่า module ครับ หรือถ้าเป็นศัพท์เทคนิคเค้าจะเรียกว่า Bundle ครับ ลองไปอ่านบทความกันดูครับ ซึ่ง OSGi นั้นจริงๆ แล้วมันเป็น Specification เหมือนกับ EJB หรือ Servlet นี่แหละครับ แต่ตัว implement นั้นแล้วแต่ว่าใครจะนำไป implement นะครับ ที่ดังๆ อยู่ในตอนนี้ก็เห็นมีอยู่สองสามเจ้า Equinox อันนี้หลายๆ คนคงจะคุ้นเคยกันดีมันคือเจ้า eclipse ของเรานั่นเองใช้ตัวนี้อยู่ครับ ส่วนอีกตัวเป็นของ Apache Felix ครับ ลักษณะการใช้งานจะแตกต่างกันบาง และตัว module อาจจะเรียกไม่เหมือนกันบางอันเป็น Bundle บางอันอาจไม่ใช่ ผมก็จำไม่ได้แล้วเหมือนกันครับ ลองไปศึกษากันดูครับ น่าสนใจทีเดียว อีกตัวนั้นจะเป็นของ Sp...