IV.1. Cài đặt SAKAI và công cụ CSLAB vào SAKAI Server
Trong giới hạn của luận văn này, SAKAI Server được chạy với hệ điều hành Windows. Tuy nhiên, ta vẫn có thể cài đặt công cụ CSLab vào SAKAI Server dùng hệ điều hành Linux mà không có bất cứ trở ngại nào
b. Cài đặt JDK
Tải phiên bản mới nhất của JDK ở trang web
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Cài đặt JDK với đường dẫn thư mục C:\java
Thiết lập các biến môi trường
• Vào Start -> Control Panel -> System -> Advanced -> Environment Variables
• Bấm chọn New ở phần System Vaiables
• Nhập tên biến “JAVA_HOME” và giá trị “C:\ java\jdk1.5.0_22” (không có dấu “” ở hai đầu)
c. Cài đặt Tomcat
Tải gói source Tomcat 5.5.26 từ
http://archive.apache.org/dist/tomcat/tomcat-5/v5.5.26/bin/apache-tomcat- 5.5.26.zip
Giải nén tập tin apache-tomcat-5.5.26.zip vào thư mục C:\tomcat
Thiết lập các biến môi trường cho Tomcat
• Biến môi trường mới với tên biến “CATALINA_HOME” và giá trị “C:\tomcat” (không có dấu “” ở hai đầu)
• Chỉnh sửa biến môi trường PATH của Windows: thêm vào “;C:\tomcat\bin” (không có dấu “” ở hai đầu)
Tạo tập tin setenv.bat có nội dung sau vào thư mục C:\tomcat\bin
set JAVA_OPTS=-server -XX:+UseParallelGC -Xmx768m -XX:MaxPermSize=160m -Djava.awt.headless=true}}
Thiết lập Tomcat thành một dịch vụ của Windows: gõ các dòng lệnh sau trong cmd
service.bat install
tomcat5 //US//Tomcat5 ++JvmOptions "-Xmx768m;-Xms768m;- XX:PermSize=128m;-XX:MaxPermSize=256m;- Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=fa lse" d. Cài đặt Maven Tải Maven 2.0.9 từ https://olex.openlogic.com/package_versions/download/6797? package_version_id=2027&path=openlogic%2Fmaven%2F2.0.9%2Fopenlogic-maven- 2.0.9-all-bin-1.zip
Giải nén tập tin openlogic-maven-2.0.9-all-bin-.zip vào thư mục C:\maven
Thiết lập các biến môi trường cho Maven
• Biến môi trường mới với tên biến “MAVEN_HOME” và giá trị “C:\maven” (không có dấu “” ở hai đầu)
• Biến môi trường mới với tên biến “MAVEN_OPTS” và giá trị “-Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m” (không có dấu “” ở
Tạo thư mục .m2 trong thư mục C:\Documents and Settings\Administrator
Tạo thư mục repository trong thư mục .m2 vừa tạo
Chú ý: Administrator có thể được thay thế bằng tên users dùng để cài đặt và thực thi chương trình Maven (người cài đặt Sakai)
Chép tập tin settings.xml có nội dung sau vào thư mục .m2 vừa tạo
<settings xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <profiles> <profile> <id>tomcat5x</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <appserver.id>tomcat5x</appserver.id> <appserver.home>c:\tomcat</appserver.home> <maven.tomcat.home>c:\tomcat</maven.tomcat.home> <sakai.appserver.home>c:\tomcat</sakai.appserver.home> <surefire.reportFormat>plain</surefire.reportFormat> <surefire.useFile>false</surefire.useFile> </properties> </profile> </profiles> </settings> e. Cài đặt SAKAI
Tải gói source SAKAI phiên bản 2.7.1:
http://source.sakaiproject.org/release/2.7.1/artifacts/sakai-src-2.7.1.zip
Giải nén tập tin sakai-src-2.7.1.zip vào thư mục C:\sakai-src-2.7.1
Tạo thư mục sakai trong thư mục C:\tomcat
Chép tập tin sakai.property trong thư mục C:\sakai-src-2.7.1\reference\docs vào thư mục sakai vừa tạo
cd c:\sakai-src-2.7.1\master mvn clean install
Deploy Sakai: gõ các dòng lệnh sau trong cmd
cd c:\sakai-src-2.7.1
mvn clean install sakai:deploy
Khởi động Tomcat: gõ dòng lệnh sau trong cmd
startup.bat
Tắt Tomcat: gõ dòng lệnh sau trong cmd
shutdown.bat
f. Cài đặt MySQL
Tải MySQL phiên bản mới nhất từ http://dev.mysql.com/downloads/mysql/
Cài đặt MySQL vào thư mục c:\mysql
Thiết lập các biến môi trường cho MySQL
• Biến môi trường mới với tên biến “MYSQL_HOME” và giá trị “C:\mysql” (không có dấu “” ở hai đầu)
• Chỉnh sửa biến môi trường PATH của Windows: thêm vào “;C:\mysql\bin” (không có dấu “” ở hai đầu)
Tải bản mới nhất về từ địa chỉ (ở đây ta dùng bản 5.0.8) http://dev.mysql.com/downloads/connector/j/
Sau khi donload xong, ta có tập tin mysql-connector-java-5.0.8.zip, giải nén ra và lấy tập tin mysql-connector-java-5.0.8-bin.jar trong đó rồi xóa tất cả thứ khác
Chép tập tin mysql-connector-java-5.0.8-bin.jar vào thư mục C:\tomcat\common\lib
Tạo username và password cho SAKAI trong database từ giao diện nhập dòng lệnh của MySQL
identified by 'sakaipwd';
mysql> grant all on sakai.* to sakaiuser@'127.0.0.1' identified by 'sakaipwd';
mysql> flush privileges;
Trong trường hợp này, chúng ta sử dụng username là sakaiuser và password là sakaipwd
Chỉnh sửa trong tập tin sakai.property • Tìm và chỉnh sửa 2 dòng sau:
Set username@javax.sql.BaseDataSource=sakaiuser Set password@javax.sql.BaseDataSource=sakaipwd
phần màu đỏ là phần username và password mà ta đã tạo ra trong database ở bước trên
Tìm và comment các thông số trong phần HSQLDB setting:
## HSQLDB settings - on by default #vendor@org.sakaiproject.service.framework.sql.SqlService=h sqldb #driverClassName@javax.sql.BaseDataSource=org.hsqldb.jdbcDr iver #hibernate.dialect=org.hibernate.dialect.HSQLDialect #validationQuery@javax.sql.BaseDataSource=select 1 from SYSTEM_USERS
# two hsqldb storage options: first for in-memory (no persistence between runs), second for disk based
#url@javax.sql.BaseDataSource=jdbc:hsqldb:. #url@javax.sql.BaseDataSource=jdbc:hsqldb:$ {sakai.home}/db/sakai.db
## MySQL settings - make sure to alter as appropriate vendor@org.sakaiproject.db.api.SqlService=mysql driverClassName@javax.sql.BaseDataSource=com.mysql.jdbc.Dri ver hibernate.dialect=org.hibernate.dialect.MySQLDialect url@javax.sql.BaseDataSource=jdbc:mysql://127.0.0.1:3306/sa kai?useUnicode=true&characterEncoding=UTF-8
validationQuery@javax.sql.BaseDataSource=select 1 from DUAL defaultTransactionIsolationString@javax.sql.BaseDataSource= TRANSACTION_READ_COMMITTED
Chú ý: phần màu xanh là địa chỉ máy cài MySQL trong trường hợp database của chúng ta được cài trong một máy khác
g. Cài đặt JsCH vào Maven Repository
Vào trang http://www.jcraft.com/jsch/ download tập tin jsch-0.1.44.jar
Vào folder chứa tập tin jsch-0.1.44.jar chạy command
mvn install:install-tập tin -DgroupId=jsch
-DartifactId=jsch -Dpackaging=jar -Dversion=0.1.44 -Dtập tin=jsch-0.1.44.jar -DgeneratePom=true
Vào thư mục .m2 trong protập tin của user, xác nhận thư mục jsch xuất hiện bên trong
h. Cài đặt CSLab vào SAKAI
Chép folder CSLab vào thư mục sakai-src-2.7.1
Vào folder CSLab trong thư mục sakai-src-2.7.1, mở tập tin CSLab\tool\src\webapp\WEB-INF\web.xml, tìm đến mục
<context-param>
<param-name>LABREPO</param-name> <param-value>E:/REPO/</param-value> </context-param>
Chỉnh sử param-value tùy ý, đây là thư mục gốc lưu trữ tất cả bài thực hành, metadata, submission…
Trong folder CSLab, chạy command
a. Đối với Test Server chạy hệ điều hành Windows
Ta có thể sử dụng gói cài đặt OpenSSH cho Windows, tải tại địa chỉ
http://sourceforge.net/projects/sshwindows/files/OpenSSH%20for%20Windows %20-%20Release/3.8p1-1%2020040709%20Build/setupssh381-
20040709.zip/download
Sau khi tải về, giải nén để lấy được tập tin setupssh.exe
Cài đặt bình thường vào thư mục C:\Program Files\OpenSSH
Dừng dịch vụ SSH
Vào command line của Windows, chuyển đường dẫn đến thư mục C:\Program Files\OpenSSH\bin
Thực thi các câu lệnh sau đối với máy chỉ dùng các tài khoản trên máy
mkgroup -l >> ..\etc\group
mkpasswd -l [-u <username>] >> ..\etc\passwd
Nếu máy dùng các tài khoản domain thì ta thực thi tiếp các câu lênh sau
mkgroup -d >> ..\etc\group (domain groups) mkpasswd -d [-u <username>] >> ..\etc\passwd Khởi động lại dịch vụ SSH
Chú ý là OpenSSH cho Windows phiên bản mới nhất là 4.7 chưa hỗ trợ hơn 10 kết nối từ một máy khách (ở đây là SAKAI Server)
b. Đối với Test Server chạy hệ điều hành Linux
Mặc định, OpenSSH đã được cài đặt vào các hệ điều hành Linux để chạy như một dịch vụ SSH. Tuy nhiên, đa số các phiên bản của OpenSSH được cài đặt sẵn thường là phiên bản 4.3, khá cũ so với phiên bản mới nhật hiện nay của OpenSSH là 5.6 và không hỗ trợ mở nhiều hơn 10 kết nối từ một máy khách đến máy chủ SSH. Vì thế, công việc cần làm của chúng ta là update phiên bản OpenSSH trên Test Server đến phiên bản mới nhất có thể.
Quá trình update OpenSSH được phân chia dựa theo dòng của hệ điều hành Linux trên Test Server
Quá trình update trên máy chủ Linux dòng Debian: cụ thể là hệ điều hành Ubuntu
SAKAI Server)
Quá trình update trên máy chủ Linux dòng Fedora: cụ thể là hệ điều hành CentOS
• Tạo tập tin /etc/yum.repos.d/centalt.repo có nội dung
[CentALT]
name=CentALT Packages for Enterprise Linux 5 - $basearch baseurl=http://centos.alt.ru/repository/centos/5/$basearch/ enabled=1
gpgcheck=0
• Tải tập tin libedit*.rpm phù hợp với hệ điều hành từ địa chỉ sau về và cài đặt
http://www.rpmfind.net/linux/rpm2html/search.php?query=libedit.so.0
• Thực thi lệnh upgrade
yum upgrade openssh
• Khởi động lại dịch vụ SSH và kiểm tra phiên bản của OpenSSH
$ /etc/init.d/sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
$ ssh -v
OpenSSH_5.5p1, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
IV.3. Cấu hình cho Test Server
a. Tạo multiple user
Đối với Test Server chạy hệ điều hành Windows • Tạo 1 file user.txt với cấu trúc sau
<username>:<password>
• Tạo file adduser.bat với nội dung sau
For /f “TOKEN=1,2* DELIMS=:” %%1 in (user.txt) do net user %%1 “% %2” /add
• Chú ý:
(i) Các ký tự đặc biệt ở đây thường bị sai do format trong MS Word. Do đó, không nên copy các dòng lệnh trên mà nên gõ trực tiếp trên hệ thống (ii) Các user được tạo sẽ không có thư mục local profile cho đến khi user đăng nhập trực tiếp vào hệ thống lần đầu
Đối với Test Server chạy hệ điều hành Linux • Tạo 1 group mặc định cho user
groupadd test
• Tạo 1 file adduser.srpt có nội dung sau:
for i in $(seq -w 1 300) do
echo user$i:password >> user.rsl; useradd user$i –g 501;
done
password là password mặc định cho tất cả user
501 là groupid của group test vừa tạo ở bước 1 • Đổi quyền thực thi cho file adduser.srpt
chmod 711 ./adduser.srpt
• Tạo file user.rsl
touch user.rsl
• Thực thi script tạo user
./adduser.srpt
• Tạo password cho các user vừa tạo
cat user.rsl | chpasswd
IV.4. Các lưu ý khi sử dụng
a. Hiện tại, công cụ chỉ phân biệt user với 2 quyền cơ bản của SAKAI
Quyền update – có thể thay đổi nội dung site: admin, giảng viên,…
Quyền không update: student
b. Các command thực thi trong tập tin script được thực thi riêng lẻ nhau, phân cách bằng dấu xuống dòng hay dấu “;”. Điều đó có nghĩa là công cụ chỉ hỗ trợ thực hiện các câu lệnh đơn trong hệ điều hành mà không thể thực hiện được một các câu lệnh phức tạp như for, while,… Tuy nhiên, giảng viên có thể thực thi các lệnh for,
while… trên bằng cách viết thành 1 tập tin script đặt sẵn trên Test Server và thực thi câu lệnh gọi tập tin script đó.
c. Vị trí con trỏ hiện hành khi thực thi câu lệnh luôn là thư mục home của user, không thể thay đổi vị trí này bằng các câu lệnh cd được. Để tách biệt môi trường các user, giảng viên nên dùng các đường dẫn tương đối tính từ thư mục home của user (các đường dẫn nên dùng có dạng ./folder1/folder2, trong đó dấu “.” đại biểu cho thư mục home của user).
d. Các chương trình của user bị loop vô tận trên Test Server sẽ bị kill tự động khi quá thời gian timeout. Tuy nhiên, trên hệ điều hành Linux, đôi khi một control terminal cho process đang chạy bị lack và không thể tự động kill chương trình được. Vì thế, trong các tập tin script, giảng viên nên thêm một câu lệnh kill process đã gọi. e. Threshold là thông số giới hạn connection tối đa từ một bài thực hành đến Test Server. Chú ý là khi SAKAI đang có nhiềi bài thực hành sử dụng 1 Test Server thì số connection tối đa vào Test Server đó sẽ là tổng số threshold của các bài thực hành. Thông số này được sử dụng để tránh bị dịch vụ SSH ở Test Server hiểu lầm SAKAI Server đang thực hiện một cuộc tấn công DOS vào Test Server. Các phiên bản OpenSSH trước 5.1 chỉ cho phép 10 connection đồng thời được mở từ một địa chỉ IP. Các phiên bản sau 5.1 cho phép chỉnh sửa số connection tối đa này trong thông số MaxSessions. Tuy nhiên, đối với các connection thứ 11 trở lên,tính sẵn sàng của dịch vụ là không cao.
CHƯƠNG V. TỔNG KẾT V.1. Các kết quả đạt được
a. Hiểu được mô hình xây dựng một Tool trên Sakai:
Các dependency cần thiết.
Các tập tin config cần thiết (pom.xml, web.xml, tool.xml …)
Các dịch vụ chung có thể thềm vào và sử dụng thông qua các tập tin xml trong tomcat/component và Api Component Manager của Sakai.
b. Sử dụng Maven để quản lí thư viện một cách hiệu quả:
Hiểu cách mà các project định nghĩa thông cua tập tin pom.xml, cơ chế quản lí project với nhiều module là các project khác.
Cài đặt dependency vào repository, cách xác định dependency và sử dụng m2eclipse để đính kèm thư viện vào project, các attribute khi khai báo
dependency.
Hiểu được các cơ chế transitive dependency, exclude dependency… c. Hiểu được cơ chế hoạt động và sử dụng JSF Framework
JSF Lifecycle
Các taglib của JSF
Các component trong JSF
d. Hiểu được giao thức SSH và cách sử dụng thư viện JSCH cho lập trình SSH trong Java