การติดตั้ง KnowledgeVolution : KV
KnowledgeVolution เป็นซอฟต์แวร์ที่พัฒนาด้วยเทคโนโลยี Ruby on Rails ซึ่งถือเป็นเทคโนโลยีที่ค่อนข้างใหม่ มีการใช้งานอยู่ในวงจำกัด และยังไม่แพร่หลายเหมือนกับ PHP ดังนั้นการติดตั้งจึงจำเป็นต้องอาศัยทักษะของผู้ติดตั้งในระดับสูง ผู้ติดตั้งจำเป็นจะต้องมีทักษะในการใช้งานระบบปฏิบัติการตระกูล *nix ได้เป็นอย่างดี และสำหรับการติดตั้งบนเครื่องที่ใช้งานจริง (Production Server) ผู้ติดตั้งจำเป็นต้องมีทักษะด้านการจัดการเครื่องแม่ข่าย เช่นการติดตั้งแก้ไข Web Server และ Web Application Server ได้เป็นอย่างดีอีกด้วย แหล่งอ้างอิง : http://knowledgevolution.org/pages/3204/
ภาพโดยรวมในการติดตั้ง KnowledgeVolution : KV
1. ติดตั้งระบบปฏิบัติการ : OS ด้วย Ubuntu Linux 9.04
2. ติดตั้งโปรแกรมพื้นฐานต่างๆ หรืออาจเรียกว่า ติดตั้งสภาพแวดล้อมของระบบ
3. ติดตั้ง KnowledgeVolution : KV
ในแต่ละขั้นตอนที่กล่าวมาข้างต้น มีรายละเอียด วิธีการ ขั้นตอนที่ปลีกย่อยลงไปมากมายโดยเฉพาะขั้นตอนที่ 3 ติดตั้ง KnowledgeVolution : KV
4. ติดตั้ง KV เพื่อนำไปใช้งานจริง –ขั้นตอนนี้ต่อเนื่องจากขั้นตอนที่ 3 ครับ เพราะถ้าเราติดตั้งตามคำแนะนำของ GotoKnow จาก http://knowledgevolution.org/pages/3204/ จะอธิบายเพียงเพื่อติดตั้ง KV ไว้สำหรับการพัฒนาโปรแกรมเท่านั้นครับ ถ้านำไปใช้งานจริง เหมือน http://gotoknow.org จะต้องมีการติดตั้งเพิ่มเติม ครับ โดยให้คำแนะนำว่า
“ แต่หากต้องการติดตั้งเพื่อใช้งานจริง (Production Environment) แนะนำให้ติดตั้ง Nginx เป็น web server และติดตั้ง Phusion Passenger (Apache mod_rails) เป็น web application server โดยสามารถศึกษาวิธีการติดตั้ง ปรับแต่ง ใช้งาน ได้จากเอกสารในเว็บไซต์ของผู้พัฒนา”
หมายเหตุ ในการติดตั้งต้องอาศัยความรู้พื้นฐานและทักษะความชำนาญในเรื่องคำสั่ง linux คำสั่ง Ubuntu หรืออื่นๆ เช่น คำสั่ง Vi คำสั่ง เป็นต้น
เริ่มการติดตั้ง KnowledgeVolution : KV
ขั้นตอนที่ 1 ติดตั้งระบบปฏิบัติการ : OS ด้วย Ubuntu Linux 9.04
ในขั้นตอนนี้ผู้อ่านสามารถค้นหาขั้นตอนการติดตั้งได้จากอินเทอร์เน็ตนะครับ
ขั้นตอนที่ 2 ติดตั้งโปรแกรมพื้นฐานต่างๆ หรืออาจเรียกว่า ติดตั้งสภาพแวดล้อมของระบบ
หลังจากที่ทำการติดตั้งในขั้นตอนที่ 1 เรียบร้อยแล้ว ให้ทำการ Login เข้าสู่ระบบ
# ทำการ Login เข้าในระบบด้วยชื่อและรหัสผ่านตามที่ท่านกำหนดในขั้นตอนที่ 1
# ทำการกำหนดรหัสผ่านของ root ใหม่ และต่อไปจะใช้ root ในการ login
# sudo passwd root ----> ตั้งรหัสผ่านสั่ง reboot เครื่องอีกครั้ง ด้วยคำสั่ง
# sudo reboot
เมื่อเข้าระบบหลังจากที่ reboot แล้วนะครับ Login ด้วย root เลยนะครับ ใส่รหัสตามที่เราได้กำหนดไว้ในตอนแรกนะครับ จากนั้นเราก็สั่ง Update และ Upgrade ระบบ
# apt-get update
# apt-get upgrade
ติดตั้ง apache2
# apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils ssl-cert
ขั้นตอนที่ 3 ติดตั้ง KnowledgeVolution : KV
# aptitude install subversion
# cd /var/www/
# svn co svn://svn.usablelabs.org/kv/trunk kv : ส่วนนี้เป็นคำสั่ง Downloads Source Code
#svn co http://svn.usablelabs.org/kv/trunk kv : มีการเปลี่ยนแปลงใหม่ครับ
# chown -Rv www-data /var/www/kv : ต้องกำหนดสิทธิ์ให้ apache สามารถเขียนบนพื้นที่ kv
ติดตั้งสภาวะแวดล้อมสำหรับการทำงานของ KnowledgeVolution
# aptitude install ruby ruby1.8 ruby1.8-dev libopenssl-ruby1.8 rubygems1.8 build-essential imagemagick libmagick9-dev libmysql-ruby1.8 mysql-server-5.0 mysql-client-5.0
# gem install rake --no-ri --no-rdoc
# gem install rails -v 2.1.2 --no-ri --no-rdoc
# gem install memcache-client -v 1.5.0 --no-ri --no-rdoc
# gem install gettext -v 1.93.0 --no-ri --no-rdoc
# gem install archive-tar-minitar -v 0.5.2
# gem install haml -v 2.0.6
# gem install rmagick –v 2.8.0
# gem install will_paginate –v 2.2.2
# gem install cgi_multipart_eof_fix -v 2.5.0
# gem install color -v 1.4.0
# gem install daemons -v 1.0.10
# gem install gem_plugin -v 0.2.3
# gem install rubygems-update -v 1.3.4
# gem install cached_model -v 1.3.1
# gem install hoe -v 1.8.2
# gem install rubyforge -v 1.0.2
# gem install ZenTest -v 3.11.0
# gem install mongrel ไม่ต้องติดตั้ง
# gem list --local
สร้างฐานข้อมูล
# mysql -u root –p1234567!
mysql> CREATE DATABASE kv_production DEFAULT CHARACTER SET 'utf8' DEFAULT COLLATE 'utf8_general_ci';
mysql> CREATE DATABASE kv_development DEFAULT CHARACTER SET 'utf8' DEFAULT COLLATE 'utf8_general_ci';
mysql>CREATE DATABASE kv_test DEFAULT CHARACTER SET 'utf8' DEFAULT COLLATE 'utf8_general_ci';
mysql> CREATE DATABASE kv_benchmarking DEFAULT CHARACTER SET 'utf8' DEFAULT COLLATE 'utf8_general_ci';
---------------------------------ส่วนนี้เสริมนิดหน่อยครับ--------------
mysql> show databases; สั่งแสดงฐานข้อมูล
mysql> drop databases ชื่อฐานข้อมูลที่ต้องการลบ และจบด้วยเครื่องหมาย ;
--------------------------------------------------------------
มอบสิทธิในการเป็นเจ้าของฐานข้อมูล
mysql> GRANT ALL PRIVILEGES ON kv_production.* TO 'kv'@'localhost' IDENTIFIED BY 1234567';
mysql> GRANT ALL PRIVILEGES ON kv_development.* TO 'kv'@'localhost' IDENTIFIED BY '1234567';
mysql> GRANT ALL PRIVILEGES ON kv_benchmarking.* TO 'kv'@'localhost' IDENTIFIED BY '1234567';
mysql> GRANT ALL PRIVILEGES ON kv_test.* TO 'kv'@'localhost' IDENTIFIED BY '1234567';
mysql> exit
หมายเหตุ รหัสผ่านของฐานข้อมูลสามารถแก้ไขได้ โดย ไปที่
# vi /var/www/kv/config/database.ylm แก้ไขตามต้องการแต่ต้องให้ตรงกับรหัสผ่านของ mysql
สั่งนำเข้าตารางข้อมูล ต่างๆ โดยเข้าที่ ห้องเก็บ KV
# cd /var/www/kv/
# apt-get install rake : ติดตั้งโปรแกรม rake
# rake db:schema:load : สร้างนำเข้าตาราง
ผลลัพธ์ที่ได้ บรรทัดสุดท้ายประมาณว่าแบบนี้ แสดงว่า OK..
-- assume_migrated_upto_version(20090720110741)
-> 0.0345s
ทดสอบการทำงานว่าพร้อมใช้งานรึยัง
# script/server ไม่ต้องสั่งถ้าไม่ได้ติดตั้ง gem install mongrel
ผลลัพธ์ รายงานบอกว่า : บรรทัดที่ 77 ของไฟล์ cached_model.rb มีข้อผิดพลาดอยู่
/var/lib/gems/1.8/gems/cached_model-1.3.1/lib/cached_model.rb:77: 1.93.0 is not a class/module (TypeError)
ทำการแก้ไขโดย
# vi /var/lib/gems/1.8/gems/cached_model-1.3.1/lib/cached_model.rb
เมื่อเข้าไปแล้ว กด ปุ่ม ESC 1 ครั้ง แล้วพิมพ์เครื่องหมาย :set nu
แล้วหาบรรทัดที่ 77-88 และใส่เครื่องหมาย # ไว้ตั้งแต่บรรทัดที่ 77-89 ยกเว้น บรรทัดที่ 86
ที่มีข้อความว่า self.abstract_class = true
77 # if Rails::VERSION::MAJOR > 1 or
78 # (Rails::VERSION::MAJOR == 1 and Rails::VERSION::MINOR > 1) or
79 # (Rails::VERSION::MAJOR == 1 and Rails::VERSION::MINOR == 1 and
80 # Rails::VERSION::TINY >= 2) then
81
82 ##
83 # Override the flawed assumption ActiveRecord::Base makes about
84 # inheritance.
85
86 self.abstract_class = true <----- บรรทัดนี้เว้นไว้ ไม่ต้องใส่เครื่องหมาย #
87 # else
88 # raise NotImplementedError, 'upgrade to Rails 1.1.2+'
89 # end
กด ESC Shift : wq!
หมายเหตุ ควรศึกษาการใช้ Vi ให้เกิดความชำนาญ
สั่งรันใหม่อีกครั้งด้วยคำสั่ง ถ้าไม่ติดตั้ง mongrel จะสั่งไม่ได้
# script/server ถ้าไม่ขึ้นฟ้อง error บอกว่า cached_model.rb บรรทัดที่ 77 error แสดงว่าใช้ได้แล้ว (error ตัวเดิมหายไป)
ทดลองเข้าใช้งาน
1. ไปที่เครื่องลูกข่ายในระบบที่มองเห็นเครื่องแม่
2. เปิด IE แล้วพิมพ์ ชื่อ IP หรือ URL เครื่อง KV เช่น
192.168.1.99:3000/home
3. ถ้าไม่มีอะไรผิดพลาด จะสามารถเข้าใช้งานได้
ขั้นตอนที่ 4 ติดตั้ง KV เพื่อนำไปใช้งานจริง
จากคำแนะนำให้ติดตั้ง Nginx เป็น Web Server และติดตั้ง (Apache mod_rails) เป็น web application server ข้าพเจ้าสอบถามจากทีมงาน Usablelabs แล้วว่า เราสามารถใช้ Nginx อย่างเดียว หรือ ใช้ apache อย่างเดียวก็ได้ สำหรับผู้ใช้บริการไม่เกิน 100 คน (ประมาณนะครับ) และถ้าอยากให้ดี ใช้ทั้ง 2 เลย ตัวหนึ่งเป็น ด่านหน้า และอีกตัวเป็นด่านหลัง
ข้าพเจ้าทดลองใช้ Nginx อย่างเดียว และใช้ apache อย่างเดียว เท่านั้น ยังไม่ได้ทดลองใช้ทั้งสองอย่าง ดังนั้นจะนำเสนอเพียงการติดตั้ง ใช้ apache เท่านั้นนะครับ เพราะจะสะดวกกว่าการติดตั้ง Nginx เริ่มเลยนะครับ
แหล่งข้อมูลอ้างอิงจาก http://www.modrails.com/install.html
ติดตั้ง Passenger
# gem install passenger
# apt-get install apache2-prefork-dev
ติดตั้ง passenger-install-apache2-module โดย
# /var/lib/gems/1.8/bin/passenger-install-apache2-module
ต่อไปเป็นการ Config เพื่อการใช้งาน เข้าไปที่ etc/apache2/
# cd /etc/apache2/
# cp sites-available/default sites-enabled/default หรือตั้งเป็นชื่อไฟล์อะไรก็ได้ และอีกประการหนึ่ง ใช้คำสั่ง ls ดูใน etc/apache2/sites-enabled/ ด้วยว่ามีไฟล์อะไรหรือไม่ ถ้ามีลบ ออกให้หมด เหลือไว้เฉพาะไฟล์ default ที่คัดลอกมาจาก sites-available เท่าที่เจอจะมีไฟล์ให้มา ชื่อขึ้นต้น เป็น 000-XXXX ประมาณนี้ จากนั้นทำการแก้ไข ไฟล์ default
# vi /etc/apache2/sites-enabled/default
แก้ไขบรรทัดที่ 4,9 เป็นตำแหน่งของ KV ที่เราเก็บ เปลี่ยนแปลงได้ตามตำแหน่งที่เราเก็บ
บรรทัดที่ 4 Document Root /var/www/kv/public
บรรทัดที่ 9 <Directory /var/www/kv/public/>
# vi /etc/apache2/httpd.conf แล้วพิมพ์ตามนี้ ให้ถูกด้วยนะครับ 2 บรรทัดแรกเป็นบรรทัดเดียวกันนะครับ พิมพ์ยาวไปเลย
LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-2.2.5/ext/apache2/mod_passenger.so -----> เป็นบรรทัดเดียวกันนะครับมีแต่เคาะ
PassengerRoot /var/lib/gems/1.8/gems/passenger-2.2.5
PassengerRuby /usr/bin/ruby1.8
RailsAutoDetect off
PassengerMaxPoolSize 30
PassengerPoolIdleTime 900
SetEnv LANG th_TH
เสร็จแล้วบันทึก เลยนะครับ # กดที่แป้น Esc ตามด้วยปุ่ม Shift : wq!
# cd /var/www/kv
# export RAILS_ENV=production
# rake db:migrate
อย่าลืมตรวจสอบสิทธิ์ให้ apache สามารถเขียนบนพื้นที่ kv
# chown -Rv www-data /var/www/kv
# /etc/init.d/apache2 reload ถ้าไม่มี ฟ้อง error อย่างไรก็น่าจะได้แล้วครับ
ตรวจสอบว่า Passenger และ Rails ทำงานหรือไม่ ถ้ามีประมาณว่าข้างล่างใช้ได้
หรืออาจไม่มีก้ออาจทำงานได้ครับ
# ps ax | grep passenger
2827 ? Sl 0:00 /usr/lib/passenger/ApplicationPoolServerExecutable…..
# ps ax | grep Rails
2892 ? S 0:00 Rails: /var/www/kv
ขั้นสุดท้ายก็ ทดลองเรียกเข้าดู อาจเป็น URL หรือ IP ก็ได้ เช่น 192.168.1.99
--------------------------จบ ในภาคของการติดตั้งโปรแกรม ยาวนานมาก--------------------
จัดเตรียมระบบเพื่อการใช้งาน สำหรับผู้ดูแลระบบนะครับ
สร้างพื้นที่ในการ UpLoad ของมูลต่างๆ เช่น รูปภาพ ไฟล์งานต่างๆ ของ User
# mkdir /home/tmp
# mkdir /home/tmp/kv_uploads
# chmod 777 /home/tmp/kv_uploads/
เพิ่มผู้ดูแลระบบให้เป็นชื่อเรานะครับ เช่น km-admin เป็นต้น
# vi /var/www/kv/config/kv.rb
บรรทัดที่ 48 $WEBMASTERS = ['km-admin']
หมายเหตุ ชื่อของ ผู้ดูแลระบบ ต้องมีความยาวไม่ต่ำกว่า 8 ตัวอักษรนะครับ
# reboot เครื่องก่อนนะครับ เพื่อให้ระบบรับรู้ถึงชื่อที่เราเพิ่มเข้าใหม่
หลังจากนั้นเราก็เข้าสมัคร เป็นสมาชิกในหน้าเว็บของเรานะครับ ต้องใช้ชื่อเดียวกันกลับที่เราไปแก้ไขในบรรทัดที่ 48 $WEBMASTERS = ['km-admin'] ผมสมัครเป็น km-ad
ขอขอบคุณ คุณต้นกล้า : สุรกานต์ สามแก้ว ที่ให้คำแนะนำตลอดมาในการติดตั้งบทความนี้คงจะเป็นประโยชน์ไม่มากก็น้อยสำหรับผู้ที่ต้องการพัฒนาองค์กรหรือ หน่วยงานของท่านให้เป็นองค์กรแห่งการเรียนรู้
สำหรับการเขียนบทความครั้งแรกครับ ขออภัยถ้าไม่มีรูปภาพประกอบ