การติดตั้ง Kv

การติดตั้ง 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

ขอขอบคุณ   คุณต้นกล้า : สุรกานต์   สามแก้ว  ที่ให้คำแนะนำตลอดมาในการติดตั้งบทความนี้คงจะเป็นประโยชน์ไม่มากก็น้อยสำหรับผู้ที่ต้องการพัฒนาองค์กรหรือ หน่วยงานของท่านให้เป็นองค์กรแห่งการเรียนรู้

 สำหรับการเขียนบทความครั้งแรกครับ ขออภัยถ้าไม่มีรูปภาพประกอบ