การติดตั้ง Cafe grader/กรุ
บทความนี้จะอธิบายการติดตั้ง Cafe grader ขั้นตอนการติดตั้งจะแบ่งออกเป็นสองส่วน คือส่วนเว็บ และส่วนตัวตรวจ อย่างไรก็ตาม ทั้งสองส่วนยังมีการใช้ซอฟต์แวร์หลายอย่างร่วมกัน โดยจะเรียกรวม ๆ ว่าเป็นซอฟต์แวร์ที่จำเป็น เราจะเน้นการติดตั้งบน Ubuntu/Debian เป็นหลัก
เอกสารนี้เขียนสำหรับการติดตั้งบน Rails 2.3.4 (ถ้ามีรุ่นใหม่กว่านี้จะทยอยปรับปรุงต่อไป)
ในการเขียนบางจุดอาจมีรายละเอียดมากไป สำหรับผู้เชี่ยวชาญสามารถอ่านข้ามไปได้
การติดตั้งซอฟต์แวร์ที่จำเป็น
เราจะติดตั้ง Ruby, Rails (เป็นเว็บเฟรมเวิร์คที่ใช้ในการพัฒนา cafe grader), และ Subversion ซึ่งเป็นระบบจัดการเวอร์ชันของซอฟต์แวร์ (ใช้ในการโหลดระบบ cafe grader)
ติดตั้งระบบฐานข้อมูล MySQL, ระบบจัดการเวอร์ชัน Subversion
ติดตั้ง MySQL โดยสั่ง
sudo apt-get install mysql-server mysql-client
ระหว่างติดตั้ง ระบบจะถาม password ของ root ของ mysql server ให้เลือกและจดไว้ (จะต้องใช้ต่อไปในการสร้าง user ของระบบฐานข้อมูล)
เราจะใช้ subversion ในการโหลดรุ่นล่าสุดของ Cafe grader มาติดตั้ง ดังนั้นสั่งติดตั้ง subversion ดังนี้
sudo apt-get install subversion
ติดตั้ง Ruby, ระบบจัดการแพกเกจ Ruby Gem, Rails, และไลบรารีอื่น ๆ
Cafe grader พัฒนาด้วยภาษา Ruby ดังนั้นเราจะต้องติดตั้ง Ruby พร้อมทั้งระบบต่าง ๆ ก่อน
เริ่มติดตั้ง ruby และระบบจัดการ document rdoc โดยสั่ง
sudo apt-get install ruby rdoc
จากนั้นให้ติดตั้ง Ruby gems ซึ่งเป็นระบบจัดการไลบรารีและซอฟต์แวร์ต่าง ๆ ของ Ruby แม้ว่าใน Ubuntu จะสามารถเรียกติดตั้งได้ด้วย apt-get แต่มักพบว่าการติดตั้งด้วยวิธีนี้มักพบปัญหา ดังนั้นเราจะติดตั้งโดยตรง ตามขั้นตอนต่อไปนี้
- ดาวน์โหลด Ruby gems จาก RubyForge
- จากนั้นให้ขยายไฟล์ใส่ในไดเร็กทอรีชั่วคราว แล้วสั่ง
sudo ruby setup.rb
เราจะได้ ruby gem ที่เรียกให้ทำงานได้โดยคำสั่ง gem1.8 อย่างไรก็ตามเพื่อความสะดวก เราทำให้เรียกด้วยคำสั่ง gem ได้ด้วย โดยสั่ง
sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
(ไม่ต้องทำในขั้นตอนนี้ก็ได้ แต่ในลำดับต่อไปให้เรียก gem1.8 แทน gem)
เมื่อได้ Ruby และ Ruby gems แล้ว เราจะติดตั้ง software ต่าง ๆ ที่ต้องการ ต่อไปนี้
- Rails (เว็บเฟรมเวิร์ค), ติดตั้งโดยสั่ง
sudo gem install rails --no-rdoc --no-ri
- Rspec (ระบบทดสอบการทำงาน), ติดตั้งโดยสั่ง
sudo gem install rspec --no-rdoc --no-ri
- ไลบรารีของ ruby ในการติดต่อกับ mysql, ติดตั้งโดยสั่ง
sudo apt-get install libmysql-ruby
- ไลบรารีในการเชื่อมต่อแบบปลอดภัยของ ruby
sudo apt-get install libopenssl-ruby
- ไฟล์ประกอบในการคอมไพล์ไลบรารีต่าง ๆ ของ ruby
sudo apt-get install ruby1.8-dev
การติดตั้งส่วนติดต่อทางเว็บ
เราจะเริ่มโดยการสร้าง user บน mysql และ database
สร้างฐานข้อมูลบน MySQL
เราจะสร้างผู้ใช้และฐานข้อมูลบน Mysql เข้าใช้ mysql โดยสั่ง
mysql -u root -p
และป้อนรหัสผ่านที่ได้กำหนดไว้ในขั้นแรก
เมื่อเข้ามาใน mysql แล้ว สั่งให้สร้าง user ในตัวอย่างนี้จะใช้ชื่อว่า cafe อย่าลืมเปลี่ยน mypassword ด้านล่างให้เป็นรหัสผ่านที่ต้องการ
create user 'cafe'@'localhost' identified by 'mypassword';
สร้างฐานข้อมูลชื่อ grader
create database grader;
ให้สิทธิผู้ใช้ cafe ในการทำทุกอย่างในฐานข้อมูล grader
grant all on grader.* to 'cafe'@'localhost';
เมื่อเรียบร้อยแล้วให้ออกจาก mysql โดยสั่ง quit
Check out cafe grader และปรับแต่ง
เราจะติดตั้งส่วนติดต่อทางเว็บที่ ~/grader/web ถ้าต้องการติดตั้งที่อื่นให้แก้ขั้นตอนต่อไปตามเหมาะสม
ก่อนอื่นสร้างไดเร็กทอรี ~/grader ก่อน
mkdir grader
จากนั้น check out cafe grader จาก google code
svn checkout http://cafe-grader.googlecode.com/svn/web/trunk grader/web
โปรแกรมส่วนติดต่อกับผู้ใช้ทางเว็บจะถูกดาวน์โหลดมาที่ ~/grader/web
เราจะเข้าไปปรับแก้แฟ้มต่าง ๆ โดยแฟ้มเหล่านี้อยู่ในไดเร็กทอรี ~/grader/web/config
- ให้คัดลอกแฟ้ม database.yml.SAMPLE เป็น database.yml แฟ้มดังกล่าวจะเก็บข้อมูลเกี่ยวกับการเชื่อมต่อกับฐานข้อมูล เราจะแก้ไข โดยใส่ชื่อฐานข้อมูล, ชื่อผู้ใช้, และรหัสผ่าน ให้ใส่ทั้งส่วน development และส่วน production ดังตัวอย่างด้านล่างนี้ (ส่วน production ให้ใส่ลักษณะเดียวกัน)
development: adapter: mysql database: grader username: cafe password: mypassword host: localhost
ส่วน development เราจะใช้เพื่อทดสอบว่าระบบทำงานได้ เมื่อใช้งานจริง เราจะใช้ในส่วน production
- ให้คัดลอกแฟ้ม environment.rb.SAMPLE เป็น environment.rb แฟ้มดังกล่าวจะเก็บการตั้งค่าต่าง ๆ ในเบื้องต้นนี้เราจะยังไม่แก้ไขอะไร อย่างไรก็ตาม หากต้องการ web interface ภาษาไทย ให้แก้ส่วน locales เป็น ภาษาไทยดังด้านล้าง
# Setting locales config.i18n.default_locale = 'th'
จากนั้นเราจะติดตั้งไลบรารีอื่น ๆ ของ ruby ที่ cafe grader ต้องการ โดยสั่ง (สั่งที่ไดเร็กทอรีที่ติดตั้งส่วน web ของ cafe grader --- ในตัวอย่างนี้คือ ~/grader/web)
sudo rake gems:install
ใส่ข้อมูลเบื้องต้นลงในฐานข้อมูลและทดลองใช้
เราจะใส่ข้อมูลเบื้องต้นลงในฐานข้อมูล โดยการสั่ง
rake db:migrate
ในการทดลองใช้เบื้องต้น เราจะใช้ Mongrel เป็น server ในการให้บริการ cafe grader ติดตั้ง mongrel โดยสั่ง
sudo gem install mongrel
ถ้าไม่มีปัญหาใด ๆ เราก็พร้อมที่จะทดลองเรียกใช้ส่วน web interface แล้ว เรียกใช้โดยสั่ง
./script/server
ที่ไดเร็กทอรีของระบบ web (เช่น ~/grader/web)
จากนั้นเข้าใช้เว็บได้ที่พอร์ต 3000 ของเครื่องที่ติดตั้งได้เลย (เข้าโดยป้อน url เป็น http://หมายเลขไอพีเครื่อง:3000/)
ผู้ใช้เริ่มต้นคือ root รหัสผ่านคือ ioionrails
ในการใช้งานทั่วไป การติดตั้งเท่านี้ก็เพียงพอแล้ว ถ้าต้องการให้ web interface รันค้างอยู่เมื่อผู้ใช้ log out ออกจากเครื่องไปแล้ว ให้สั่งดังด้านล่าง
nohup ./script/server &
เพื่อให้ mongrel ทำงานค้างอยู่ ผู้ใช้สามารถระบุให้ mongrel ทำงานที่พอร์ตอื่นก็ได้ สามารถดู option ต่าง ๆ ได้โดยสั่ง ./script/server --help
อย่างไรก็ตาม ถ้าต้องการให้ระบบเว็บทำงานอยู่บน URL ที่ไม่ต้องระบุพอร์ต, ต้องการทำงานที่รับโหลดมากขึ้น, รวมถึงไม่ต้องการเรียก ./script/server เอง จะต้องทำการติดตั้งในแบบ production วิธีการติดตั้งแบบดังกล่าวจะเขียนเร็ว ๆ นี้
การติดตั้งส่วนตัวตรวจ
เราจะอธิบายวิธีการติดตั้งส่วนตรวจโปรแกรมในไดเร็กทอรี ~/grader/judge ถ้าต้องการติดตั้งที่อื่นสามารถเปลี่ยนแปลงได้
Check out สคริปต์ตัวตรวจ
เราเริ่มโดยเข้าไปในไดเร็กทรอรี ~/grader ที่สร้างไว้จากขั้นตอนก่อน (โดยสั่ง cd ~/grader) จากนั้น check out โปรแกรมตัวตรวจ จาก googlecode
svn checkout http://cafe-grader.googlecode.com/svn/judge/trunk judge