ผลต่างระหว่างรุ่นของ "การติดตั้ง Marmoset"
Jittat (คุย | มีส่วนร่วม) |
KeNJiKunG (คุย | มีส่วนร่วม) |
||
| (ไม่แสดง 37 รุ่นระหว่างกลางโดยผู้ใช้ 5 คน) | |||
| แถว 1: | แถว 1: | ||
| + | <div style="float:right; border: 1px solid gray; padding: 10px; background: #e0e0e0">ลิงก์ย่อ: [[Installing marmoset]]</div>'''Marmoset''' เป็นระบบรับโปรแกรมที่พัฒนาโดย [http://www.umd.edu/ University of Maryland] เว็บหลักของโครงงานคือ [http://marmoset.cs.umd.edu/ http://marmoset.cs.umd.edu/] | ||
| + | |||
| + | ระบบที่นำมาติดตั้งเป็นระบบที่ดัดแปลงโดยทีมงานจาก [http://uwaterloo.ca/ University of Waterloo] เพื่อใช้ในการเรียนการสอน และใช้ในการแข่งขัน IOI 2011 | ||
| + | |||
สำหรับขั้นตอนการติดตั้งทั่วไป ดูจากเอกสารอ้างอิงหลักที่ mirror มาจากทาง u of waterloo อีกทีหนึ่ง: [http://theory.cpe.ku.ac.th/~jittat/marmoset-docs/ Marmoset Help Page] | สำหรับขั้นตอนการติดตั้งทั่วไป ดูจากเอกสารอ้างอิงหลักที่ mirror มาจากทาง u of waterloo อีกทีหนึ่ง: [http://theory.cpe.ku.ac.th/~jittat/marmoset-docs/ Marmoset Help Page] | ||
| − | == SubmitServer == | + | เราได้พัฒนาสคริปต์ในการติดตั้ง SubmitServer แล้ว ให้อ่านส่วนติดตั้งด้วยสคริปต์ด้านล่าง |
| + | |||
| + | == ติดตั้ง SubmitServer ด้วย script == | ||
| + | |||
| + | สคริปต์ดังกล่าวจะอ่าน repo ของ marmoset จาก repo สำหรับการแข่งขันโอลิมปิกสอวน. | ||
| + | |||
| + | ทำตามขั้นตอนต่อไปนี้ | ||
| + | |||
| + | ดาวน์โหลดสคริปต์ | ||
| + | |||
| + | wget http://theory.cpe.ku.ac.th/~jittat/marmoset/install-submitserver.py | ||
| + | |||
| + | จากนั้นแก้ script ในส่วนหัว โดยเพิ่มรหัสผ่านของผู้ใช้ในระบบต่าง ๆ ที่ต้องการให้สคริปต์สร้าง | ||
| + | |||
| + | # Make sure you don't put ' (single quote) or " (double quote) in the password. | ||
| + | # This will break the script. | ||
| + | MARMOSET_DB_USER_PASSWORD = "ใส่รหัสที่ต้องการสำหรับผู้ใช้ฐานข้อมูล" | ||
| + | MARMOSET_ADMIN_USERNAME = "admin" | ||
| + | MARMOSET_ADMIN_PASSWORD = "ใส่รหัสผ่านของผู้ดูแลเว็บ" | ||
| + | KEYSTORE_PASSWORD = "ใส่รหัสของไฟล์กุญแญ" | ||
| + | |||
| + | จากนั้นเรียกให้สคริปต์ทำงาน | ||
| + | |||
| + | python install-submitserver.py | ||
| + | |||
| + | สคริปต์จะมีการหยุดถามให้เราป้อนรหัสผ่านสำหรับ root ของ MySQL หนึ่งครั้ง เมื่อติดตั้ง MySQL และจะถามรหัสเราอีกครั้งเมื่อจะเข้าใช้ mysql ในการสร้างบัญชีของผู้ใช้ marmoset | ||
| + | |||
| + | จากนั้นสคริปต์จะทำงานจนจบสิ้น | ||
| + | |||
| + | เมื่อเสร็จแล้วสามารถเข้าใช้ได้ที่ URL https://localhost:8443/ | ||
| + | |||
| + | นอกจากนี้สคริปต์ยัง export certificate อยู่ในแฟ้ม <tt>marmoset.cer</tt> เพื่อนำไป import เข้าระบบ JAVA ที่เครื่อง BuildServer ต่อไป | ||
| + | |||
| + | == SubmitServer แบบ manual == | ||
| + | ในส่วนนี้จะอธิบายการติดตั้งบน Ubuntu | ||
| − | + | หลาย ๆ ครั้งจะต้องปิด-เปิด tomcat ให้สั่ง เช่น | |
| − | + | sudo /etc/init.d/tomcat6 start | |
| + | sudo /etc/init.d/tomcat6 stop | ||
| + | sudo /etc/init.d/tomcat6 restart | ||
| + | |||
| + | เมื่อติดตั้งเรียบร้อยแล้ว จะสามารถเข้า Submit Server ได้ที่ | ||
| + | |||
| + | https://localhost:8443/ | ||
| + | |||
| + | === เริ่มต้นจากการติดตั้งซอฟต์แวร์ที่จำเป็น === | ||
ติดตั้ง java | ติดตั้ง java | ||
| แถว 15: | แถว 61: | ||
sudo apt-get install tomcat6 | sudo apt-get install tomcat6 | ||
| − | '' | + | ติดตั้ง ant |
| + | |||
| + | sudo apt-get install ant | ||
| + | |||
| + | === ติดตั้งและสร้างฐานข้อมูล === | ||
| + | |||
| + | : ''อ้างอิงขั้นตอนในเอกสาร [http://theory.cpe.ku.ac.th/~jittat/marmoset-docs/submitserver_installation_instructions.html#mysql Marmoset Help Pages] แต่เราจะติดตั้ง mysql โดยใช้ <tt>apt-get</tt>'' | ||
ติดตั้ง mysql server, และ client | ติดตั้ง mysql server, และ client | ||
| แถว 31: | แถว 83: | ||
จากนั้นสั่งสร้าง user, database และ grant permission | จากนั้นสั่งสร้าง user, database และ grant permission | ||
| − | create user 'marmoset'@'localhost' identified by 'MARMOSET_DB_PASSWORD'; | + | create user 'marmoset'@'localhost' identified by 'MARMOSET_DB_PASSWORD'; # โดยที่ MARMOSET_DB_PASSWORD คือรหัสผ่านของฐานข้อมูลสำหรับผู้ใช้ marmoset |
create database submitserver; | create database submitserver; | ||
grant all on submitserver.* to 'marmoset'@'localhost'; | grant all on submitserver.* to 'marmoset'@'localhost'; | ||
| − | ''' | + | จากนั้นให้ ออกจาก mysql command line interface เพื่อไปเรียก database initialization script |
| + | |||
| + | SQL script ต่าง ๆ จะอยู่ที่ <tt>SubmitServerModelClasses/trunk/SubmitServerModelClasses/dbScripts</tt> | ||
| + | |||
| + | ในเอกสาร marmoset จะระบุให้ใช้ script <tt>runsql</tt> แต่เราจะเรียกใช้ mysql โดยตรง โดยสั่งดังตัวอย่างด้านล่าง | ||
| + | |||
| + | ในการสร้าง schema เบื้องต้น ให้ย้ายไปที่ไดเร็กทอรีดังกล่าว แล้วสั่ง | ||
| + | |||
| + | mysql -D submitserver -u marmoset -p < marmoset-schema.sql | ||
| + | |||
| + | เพื่อสร้าง schema และ | ||
| + | |||
| + | mysql -D submitserver -u marmoset -p < sql-patches/project-starter-file-archives.sql | ||
| + | |||
| + | เพื่อ patch database schema | ||
| + | |||
| + | === สร้าง super user === | ||
| + | |||
| + | : ''อ้างอิงขั้นตอนในเอกสาร [http://theory.cpe.ku.ac.th/~jittat/marmoset-docs/submitserver_installation_instructions.html#superuser Marmoset Help Pages]'' | ||
| + | |||
| + | ให้แก้ไฟล์ bootstrap.sql ตามเอกสารแล้วสั่ง | ||
| + | |||
| + | mysql -D submitserver -u marmoset -p < bootstrap.sql | ||
| + | |||
| + | === ติดตั้ง web app === | ||
| + | |||
| + | : ''อ้างอิงขั้นตอนในเอกสาร [http://theory.cpe.ku.ac.th/~jittat/marmoset-docs/submitserver_installation_instructions.html#compile]'' | ||
| + | |||
| + | แก้ไฟล์ <tt>local.properties</tt> ตามคำสั่งในเอกสาร ไฟล์ดังกล่าวอยู่ที่ <tt>SubmitServer/trunk/SubmitServer2</tt> โดยแก้ส่วน <tt>production.install.location</tt> โดยใส่ที่อยู่ของ tomcat ใน ubuntu ที่อยู่ของ tomcat คือ <tt>/usr/share/tomcat6</tt> | ||
| + | |||
| + | จากนั้นสั่ง | ||
| + | |||
| + | ant production.install | ||
| + | |||
| + | คำสั่งดังกล่าว ถ้าสั่งด้วย sudo จะคัดลอกไฟล์ได้บางส่วน ถ้าไม่ใช้ sudo จะคัดลอกไฟล์''ไม่ได้เลย'' | ||
| + | |||
| + | ไฟล์ที่คอมไพล์แล้วจะอยู่ที่ SubmitServer/trunk/SubmitServer2/dist ดังนั้นให้คัดลอกไฟล์ต่าง ๆ เอง ดังนี้: | ||
| + | |||
| + | * '''war file''': คัดลอกไฟล์ dist/submitServer.war ไปยัง /var/lib/tomcat6/webapps | ||
| + | * '''shared jar''': คัดลอกไฟล์ dist/sharedSubmitServer.jar ไปยัง /usr/share/tomcat6/lib/ | ||
| + | * '''log4j''': ไฟล์จะอยู่ที่ SubmitServer/trunk/SubmitServer2/lib คัดลอกไฟล์ log4j.jar ไปที่ /usr/share/tomcat6/lib/ | ||
| + | |||
| + | ถ้าเราอยู่ที่ SubmitServer/trunk/SubmitServer2/ คัดลอกไฟล์ทั้งหมดด้วยคำสั่งดังนี้ | ||
| + | |||
| + | sudo cp dist/submitServer.war /var/lib/tomcat6/webapps/ | ||
| + | sudo cp dist/sharedSubmitServer.jar /usr/share/tomcat6/lib/ | ||
| + | sudo cp lib/log4j.jar /usr/share/tomcat6/lib/ | ||
| + | |||
| + | สังเกตว่า lib ของ tomcat อยู่ที่ <tt>/usr/share/tomcat6/lib/</tt> แต่ตัว webapps อยู่ที่ <tt>/var/lib/tomcat6/webapps</tt> '''ระวัง:''' มีไดเร็กทอรี <tt>/usr/share/tomcat6/webapps</tt> แต่นั่นไม่ใช่ที่เก็บ war ไฟล์ | ||
| + | |||
| + | === แก้ config ต่าง ๆ ของ tomcat ตามเอกสาร === | ||
| − | + | : ''หมายเหตุ ดูตัวอย่างได้จากส่วนถัดไป'' | |
| − | + | โดยมากไพล์จะอยู่ที่ /etc/tomcat6 | |
| − | === ตัวอย่าง Config ที่แก้ === | + | * แก้ config ตามเอกสาร |
| + | ** แก้ server.xml [http://theory.cpe.ku.ac.th/~jittat/marmoset-docs/submitserver_installation_instructions.html#server.xml] | ||
| + | ** แก้ web.xml [http://theory.cpe.ku.ac.th/~jittat/marmoset-docs/submitserver_installation_instructions.html#server.xml] | ||
| + | |||
| + | * แก้ permission เพื่อให้ log4j ทำงานได้ ('''TODO:''' ส่วนนี้ต้องปรับปรุงเพิ่มเติมให้ปลอดภัยกว่านี้) | ||
| + | ** อ้างอิง [http://www2.52north.org/pipermail/swe/2010-January/001080.html] | ||
| + | ** แก้ไฟล์ /etc/tomcat6/policy.d/04webapps.policy ตามตัวอย่างด้านล่าง | ||
| + | |||
| + | * แก้ให้ทำงานบนพอร์ต 8443 (https) | ||
| + | ** สร้าง key ตามขั้นตอนในเอกสาร [http://theory.cpe.ku.ac.th/~jittat/marmoset-docs/submitserver_installation_instructions.html#tomcat-ssl] อย่าลืมจำรหัสผ่านของ key store เมื่อตอนสร้างไว้ด้วย | ||
| + | *** อย่าลืมคัดลอกไฟล์ marmosetKeystore ไปไว้ให้ถูกที่ด้วย | ||
| + | ** ให้แก้ไฟล์ server.xml เพิ่มเติมดังตัวอย่างด้านล่าง ดูเอกสารอ้างอิง [http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html เอกสารของ tomcat] หลัก ๆ คือ เปิด APR library และใส่ keystore ใน connector | ||
| + | |||
| + | === ตัวอย่าง diff ของ Config ของ tomcat ที่แก้ === | ||
==== server.xml ==== | ==== server.xml ==== | ||
| แถว 141: | แถว 256: | ||
** ดูขั้นตอนเพิ่มเติมที่ http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html ใช้ APR | ** ดูขั้นตอนเพิ่มเติมที่ http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html ใช้ APR | ||
* mysql driver | * mysql driver | ||
| + | |||
| + | == BuildServer == | ||
| + | : เอกสารอ้างอิงหลัก [http://theory.cpe.ku.ac.th/~jittat/marmoset-docs/buildserver_installation.html] | ||
| + | |||
| + | === ติดตั้งซอฟต์แวร์ที่จำเป็น === | ||
| + | |||
| + | ติดตั้ง java | ||
| + | |||
| + | sudo apt-get install openjdk-6-jdk openjdk-6-jre | ||
| + | |||
| + | ติดตั้ง ant | ||
| + | |||
| + | sudo apt-get install ant | ||
| + | |||
| + | ในคู่มือให้ติดตั้ง perl ด้วย แต่ใน ubuntu มี perl 5 มาให้อยู่แล้ว จึงไม่จำเป็น | ||
| + | |||
| + | === ติดตั้ง BuildServer === | ||
| + | |||
| + | : เอกสารหลัก [http://theory.cpe.ku.ac.th/~jittat/marmoset-docs/installing.html#install_steps] | ||
| + | |||
| + | * สร้างไดเร็กทอรี buildserver | ||
| + | * คัดลอก BuildServer จาก BuildServer/trunk และ SubmitServerModelClasses จาก SubmitServerModelClasses/trunk ลงใน buildserver | ||
| + | |||
| + | ใน directory BuildServer สั่ง | ||
| + | |||
| + | ant | ||
| + | |||
| + | เพื่อ compile จากนั้นสั่ง | ||
| + | |||
| + | ./batch-install -h SUBMITSERVERHOST -c ioi -s fall2011 NUM | ||
| + | |||
| + | เพื่อติดตั้ง BuildServer NUM ตัว | ||
| + | |||
| + | สคริปต์จะสร้าง directory bsX.BUILDSERVERNAME สำหรับ BuildServer ตัวที่ X เช่น bs1.grader1 เป็นต้น | ||
| + | |||
| + | === ติดตั้ง SSL Certificates === | ||
| + | |||
| + | ทำตามข้อ 5.3 ใน [http://theory.cpe.ku.ac.th/~jittat/marmoset-docs/submitserver_installation_instructions.html คู่มือ] | ||
| + | |||
| + | สร้างคีย์ไฟล์โดยใช้คำสั่ง | ||
| + | keytool -export -keystore marmosetKeystore -alias tomcat -file marmoset.cer | ||
| + | |||
| + | และนำเข้าคีย์ไฟล์โดยสั่ง | ||
| + | |||
| + | sudo keytool -import -alias tomcat -keystore $JAVA_HOME/jre/lib/security/cacerts -file marmoset.cer | ||
| + | |||
| + | ซึ่งถ้าเกิด Permission Denied ให้สั่ง | ||
| + | |||
| + | chmod u+w $JAVA_HOME/jre/lib/security/cacerts | ||
| + | |||
| + | ซึ่ง cacerts จะอยู่ใน /usr/lib/jvm/java-6-openjdk/jre/lib/security ซึ่งลิงค์ไปที่ /etc/ssl/certs/java/cacerts | ||
| + | |||
| + | ที่เครื่อง build server จะมีการถามรหัสผ่าน ให้พิมพ์ <tt>changeit</tt> | ||
| + | |||
| + | จากนั้นจะสามารถเรียก <tt>./runBuildServer config.properties</tt> ที่ใน build server แต่ละอันได้ | ||
| + | |||
| + | === ติดตั้งฝั่ง Window === | ||
| + | |||
| + | # สร้าง /server/box | ||
| + | # เปิด Permission ให้ /server | ||
| + | # กอป box สำหรับ unix มาไว้ที่ /server/box | ||
| + | # gcc boc.cc | ||
| + | # install samba | ||
| + | # สร้าง /server/cross-os | ||
| + | # สร้าง share ของ samba บน cross-os | ||
| + | # map z: ไปที่ \\UNIX_SERVER\cross-os | ||
| + | # โหลด Dev-cpp | ||
| + | # ชี้ Path ไปที่ C:\Dev-Cpp\bin | ||
| + | # make box ของ window | ||
| + | # เก็บ box ไว้ที่ c:\box\box.exe | ||
| + | # create server.xp | ||
| + | # run server.xp | ||
รุ่นแก้ไขปัจจุบันเมื่อ 08:34, 30 เมษายน 2554
Marmoset เป็นระบบรับโปรแกรมที่พัฒนาโดย University of Maryland เว็บหลักของโครงงานคือ http://marmoset.cs.umd.edu/
ระบบที่นำมาติดตั้งเป็นระบบที่ดัดแปลงโดยทีมงานจาก University of Waterloo เพื่อใช้ในการเรียนการสอน และใช้ในการแข่งขัน IOI 2011
สำหรับขั้นตอนการติดตั้งทั่วไป ดูจากเอกสารอ้างอิงหลักที่ mirror มาจากทาง u of waterloo อีกทีหนึ่ง: Marmoset Help Page
เราได้พัฒนาสคริปต์ในการติดตั้ง SubmitServer แล้ว ให้อ่านส่วนติดตั้งด้วยสคริปต์ด้านล่าง
ติดตั้ง SubmitServer ด้วย script
สคริปต์ดังกล่าวจะอ่าน repo ของ marmoset จาก repo สำหรับการแข่งขันโอลิมปิกสอวน.
ทำตามขั้นตอนต่อไปนี้
ดาวน์โหลดสคริปต์
wget http://theory.cpe.ku.ac.th/~jittat/marmoset/install-submitserver.py
จากนั้นแก้ script ในส่วนหัว โดยเพิ่มรหัสผ่านของผู้ใช้ในระบบต่าง ๆ ที่ต้องการให้สคริปต์สร้าง
# Make sure you don't put ' (single quote) or " (double quote) in the password. # This will break the script. MARMOSET_DB_USER_PASSWORD = "ใส่รหัสที่ต้องการสำหรับผู้ใช้ฐานข้อมูล" MARMOSET_ADMIN_USERNAME = "admin" MARMOSET_ADMIN_PASSWORD = "ใส่รหัสผ่านของผู้ดูแลเว็บ" KEYSTORE_PASSWORD = "ใส่รหัสของไฟล์กุญแญ"
จากนั้นเรียกให้สคริปต์ทำงาน
python install-submitserver.py
สคริปต์จะมีการหยุดถามให้เราป้อนรหัสผ่านสำหรับ root ของ MySQL หนึ่งครั้ง เมื่อติดตั้ง MySQL และจะถามรหัสเราอีกครั้งเมื่อจะเข้าใช้ mysql ในการสร้างบัญชีของผู้ใช้ marmoset
จากนั้นสคริปต์จะทำงานจนจบสิ้น
เมื่อเสร็จแล้วสามารถเข้าใช้ได้ที่ URL https://localhost:8443/
นอกจากนี้สคริปต์ยัง export certificate อยู่ในแฟ้ม marmoset.cer เพื่อนำไป import เข้าระบบ JAVA ที่เครื่อง BuildServer ต่อไป
SubmitServer แบบ manual
ในส่วนนี้จะอธิบายการติดตั้งบน Ubuntu
หลาย ๆ ครั้งจะต้องปิด-เปิด tomcat ให้สั่ง เช่น
sudo /etc/init.d/tomcat6 start sudo /etc/init.d/tomcat6 stop sudo /etc/init.d/tomcat6 restart
เมื่อติดตั้งเรียบร้อยแล้ว จะสามารถเข้า Submit Server ได้ที่
https://localhost:8443/
เริ่มต้นจากการติดตั้งซอฟต์แวร์ที่จำเป็น
ติดตั้ง java
sudo apt-get install openjdk-6-jdk openjdk-6-jre
ติดตั้ง tomcat
sudo apt-get install tomcat6
ติดตั้ง ant
sudo apt-get install ant
ติดตั้งและสร้างฐานข้อมูล
- อ้างอิงขั้นตอนในเอกสาร Marmoset Help Pages แต่เราจะติดตั้ง mysql โดยใช้ apt-get
ติดตั้ง mysql server, และ client
sudo apt-get install mysql-server mysql-client
ระหว่างติดตั้งให้จำ password ของ mysql root ไว้ด้วย
จากนั้นสร้าง user และ database สำหรับ SubmitServer โดยสั่งตามนี้
เข้า mysql (ป้อน password root ด้วย)
mysql -u root -p
จากนั้นสั่งสร้าง user, database และ grant permission
create user 'marmoset'@'localhost' identified by 'MARMOSET_DB_PASSWORD'; # โดยที่ MARMOSET_DB_PASSWORD คือรหัสผ่านของฐานข้อมูลสำหรับผู้ใช้ marmoset create database submitserver; grant all on submitserver.* to 'marmoset'@'localhost';
จากนั้นให้ ออกจาก mysql command line interface เพื่อไปเรียก database initialization script
SQL script ต่าง ๆ จะอยู่ที่ SubmitServerModelClasses/trunk/SubmitServerModelClasses/dbScripts
ในเอกสาร marmoset จะระบุให้ใช้ script runsql แต่เราจะเรียกใช้ mysql โดยตรง โดยสั่งดังตัวอย่างด้านล่าง
ในการสร้าง schema เบื้องต้น ให้ย้ายไปที่ไดเร็กทอรีดังกล่าว แล้วสั่ง
mysql -D submitserver -u marmoset -p < marmoset-schema.sql
เพื่อสร้าง schema และ
mysql -D submitserver -u marmoset -p < sql-patches/project-starter-file-archives.sql
เพื่อ patch database schema
สร้าง super user
- อ้างอิงขั้นตอนในเอกสาร Marmoset Help Pages
ให้แก้ไฟล์ bootstrap.sql ตามเอกสารแล้วสั่ง
mysql -D submitserver -u marmoset -p < bootstrap.sql
ติดตั้ง web app
- อ้างอิงขั้นตอนในเอกสาร [1]
แก้ไฟล์ local.properties ตามคำสั่งในเอกสาร ไฟล์ดังกล่าวอยู่ที่ SubmitServer/trunk/SubmitServer2 โดยแก้ส่วน production.install.location โดยใส่ที่อยู่ของ tomcat ใน ubuntu ที่อยู่ของ tomcat คือ /usr/share/tomcat6
จากนั้นสั่ง
ant production.install
คำสั่งดังกล่าว ถ้าสั่งด้วย sudo จะคัดลอกไฟล์ได้บางส่วน ถ้าไม่ใช้ sudo จะคัดลอกไฟล์ไม่ได้เลย
ไฟล์ที่คอมไพล์แล้วจะอยู่ที่ SubmitServer/trunk/SubmitServer2/dist ดังนั้นให้คัดลอกไฟล์ต่าง ๆ เอง ดังนี้:
- war file: คัดลอกไฟล์ dist/submitServer.war ไปยัง /var/lib/tomcat6/webapps
- shared jar: คัดลอกไฟล์ dist/sharedSubmitServer.jar ไปยัง /usr/share/tomcat6/lib/
- log4j: ไฟล์จะอยู่ที่ SubmitServer/trunk/SubmitServer2/lib คัดลอกไฟล์ log4j.jar ไปที่ /usr/share/tomcat6/lib/
ถ้าเราอยู่ที่ SubmitServer/trunk/SubmitServer2/ คัดลอกไฟล์ทั้งหมดด้วยคำสั่งดังนี้
sudo cp dist/submitServer.war /var/lib/tomcat6/webapps/ sudo cp dist/sharedSubmitServer.jar /usr/share/tomcat6/lib/ sudo cp lib/log4j.jar /usr/share/tomcat6/lib/
สังเกตว่า lib ของ tomcat อยู่ที่ /usr/share/tomcat6/lib/ แต่ตัว webapps อยู่ที่ /var/lib/tomcat6/webapps ระวัง: มีไดเร็กทอรี /usr/share/tomcat6/webapps แต่นั่นไม่ใช่ที่เก็บ war ไฟล์
แก้ config ต่าง ๆ ของ tomcat ตามเอกสาร
- หมายเหตุ ดูตัวอย่างได้จากส่วนถัดไป
โดยมากไพล์จะอยู่ที่ /etc/tomcat6
- แก้ permission เพื่อให้ log4j ทำงานได้ (TODO: ส่วนนี้ต้องปรับปรุงเพิ่มเติมให้ปลอดภัยกว่านี้)
- อ้างอิง [4]
- แก้ไฟล์ /etc/tomcat6/policy.d/04webapps.policy ตามตัวอย่างด้านล่าง
- แก้ให้ทำงานบนพอร์ต 8443 (https)
- สร้าง key ตามขั้นตอนในเอกสาร [5] อย่าลืมจำรหัสผ่านของ key store เมื่อตอนสร้างไว้ด้วย
- อย่าลืมคัดลอกไฟล์ marmosetKeystore ไปไว้ให้ถูกที่ด้วย
- ให้แก้ไฟล์ server.xml เพิ่มเติมดังตัวอย่างด้านล่าง ดูเอกสารอ้างอิง เอกสารของ tomcat หลัก ๆ คือ เปิด APR library และใส่ keystore ใน connector
- สร้าง key ตามขั้นตอนในเอกสาร [5] อย่าลืมจำรหัสผ่านของ key store เมื่อตอนสร้างไว้ด้วย
ตัวอย่าง diff ของ Config ของ tomcat ที่แก้
server.xml
--- server.xml 2010-08-19 22:45:13.000000000 +0700
+++ /etc/tomcat6/server.xml 2010-09-18 07:09:01.600653343 +0700
@@ -22,9 +22,9 @@
<Server port="8005" shutdown="SHUTDOWN">
<!--APR library loader. Documentation at /docs/apr.html -->
- <!--
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
- -->
+
+
<!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
<Listener className="org.apache.catalina.core.JasperListener" />
<!-- JMX Support for the Tomcat server. Documentation at /docs/non-existent.html -->
@@ -80,11 +80,12 @@
This connector uses the JSSE configuration, when using APR, the
connector should be using the OpenSSL style configuration
described in the APR documentation -->
- <!--
+
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
+ keystoreFile="/etc/tomcat6/ssl/marmosetKeystore"
+ keystorePass="PASSWORD"
clientAuth="false" sslProtocol="TLS" />
- -->
<!-- Define an AJP 1.3 Connector on port 8009 -->
<!--
@@ -131,6 +132,9 @@
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
+<Context path="" docBase="submitServer" debug="0"
+reloadable="true"/>
+
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
web.xml
แก้ตามในคู่มือ marmoset
--- web.xml 2009-05-14 06:15:14.000000000 +0700
+++ /etc/tomcat6/web.xml 2010-09-17 17:57:26.155673917 +0700
@@ -1191,4 +1191,26 @@
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
+
+<context-param>
+ <param-name>authentication.service</param-name>
+ <param-value>edu.umd.cs.submitServer.GenericStudentPasswordAuthenticationService</param-value>
+</context-param>
+<context-param>
+ <param-name>database.server.jdbc.url</param-name>
+ <param-value>jdbc:mysql://localhost/submitserver</param-value>
+</context-param>
+<context-param>
+ <param-name>database.user</param-name>
+ <param-value>MYSQLUSER</param-value>
+</context-param>
+<context-param>
+ <param-name>database.password</param-name>
+ <param-value>MYSQLPASSWORD</param-value>
+</context-param>
+<context-param>
+ <param-name>database.driver</param-name>
+ <param-value>com.mysql.jdbc.Driver</param-value>
+</context-param>
+
</web-app>
policy.d/04webapps.policy
ควรต้องตั้ง permission ให้ดีกว่านี้
--- policy.d/04webapps.policy 2010-08-19 22:45:11.000000000 +0700
+++ /etc/tomcat6/policy.d/04webapps.policy 2010-09-18 00:29:59.447935207 +0700
@@ -5,6 +5,9 @@
// In addition, a web application will be given a read FilePermission
// and JndiPermission for all files and directories in its document root.
grant {
+ // this is for testing
+ permission java.security.AllPermission;
+
// Required for JNDI lookup of named JDBC DataSource's and
// javamail named MimePart DataSource used to send mail
permission java.util.PropertyPermission "java.home", "read";
ขั้นตอนที่ต้องระวัง
- ต้องคัดลอกไฟล์ .war และ .jar เอง อย่าลืมคัดลือก log4j.jar ใส่ใน /usr/share/tomcat6/lib ด้วย
- เพื่อให้ log4j เก็บค่าได้ ต้องตั้ง permission
- ติดตั้ง SSL:
- ดูขั้นตอนเพิ่มเติมที่ http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html ใช้ APR
- mysql driver
BuildServer
- เอกสารอ้างอิงหลัก [6]
ติดตั้งซอฟต์แวร์ที่จำเป็น
ติดตั้ง java
sudo apt-get install openjdk-6-jdk openjdk-6-jre
ติดตั้ง ant
sudo apt-get install ant
ในคู่มือให้ติดตั้ง perl ด้วย แต่ใน ubuntu มี perl 5 มาให้อยู่แล้ว จึงไม่จำเป็น
ติดตั้ง BuildServer
- เอกสารหลัก [7]
- สร้างไดเร็กทอรี buildserver
- คัดลอก BuildServer จาก BuildServer/trunk และ SubmitServerModelClasses จาก SubmitServerModelClasses/trunk ลงใน buildserver
ใน directory BuildServer สั่ง
ant
เพื่อ compile จากนั้นสั่ง
./batch-install -h SUBMITSERVERHOST -c ioi -s fall2011 NUM
เพื่อติดตั้ง BuildServer NUM ตัว
สคริปต์จะสร้าง directory bsX.BUILDSERVERNAME สำหรับ BuildServer ตัวที่ X เช่น bs1.grader1 เป็นต้น
ติดตั้ง SSL Certificates
ทำตามข้อ 5.3 ใน คู่มือ
สร้างคีย์ไฟล์โดยใช้คำสั่ง
keytool -export -keystore marmosetKeystore -alias tomcat -file marmoset.cer
และนำเข้าคีย์ไฟล์โดยสั่ง
sudo keytool -import -alias tomcat -keystore $JAVA_HOME/jre/lib/security/cacerts -file marmoset.cer
ซึ่งถ้าเกิด Permission Denied ให้สั่ง
chmod u+w $JAVA_HOME/jre/lib/security/cacerts
ซึ่ง cacerts จะอยู่ใน /usr/lib/jvm/java-6-openjdk/jre/lib/security ซึ่งลิงค์ไปที่ /etc/ssl/certs/java/cacerts
ที่เครื่อง build server จะมีการถามรหัสผ่าน ให้พิมพ์ changeit
จากนั้นจะสามารถเรียก ./runBuildServer config.properties ที่ใน build server แต่ละอันได้
ติดตั้งฝั่ง Window
- สร้าง /server/box
- เปิด Permission ให้ /server
- กอป box สำหรับ unix มาไว้ที่ /server/box
- gcc boc.cc
- install samba
- สร้าง /server/cross-os
- สร้าง share ของ samba บน cross-os
- map z: ไปที่ \\UNIX_SERVER\cross-os
- โหลด Dev-cpp
- ชี้ Path ไปที่ C:\Dev-Cpp\bin
- make box ของ window
- เก็บ box ไว้ที่ c:\box\box.exe
- create server.xp
- run server.xp