Show More
Commit Description:
Merge pull request #12 from nattee/master...
Commit Description:
Merge pull request #12 from nattee/master
finalizing merge of nattee's master
References:
File last commit:
Show/Diff file:
Action:
installer/install.sh
| 180 lines
| 5.5 KiB
| application/x-sh
| BashLexer
|
|
r84 | #!/bin/sh | ||
echo "This script will install and configure Cafe grader." | ||||
r209 | RUBY_VERSION=2.1.2 | |||
|
r202 | echo "This will install Ruby $RUBY_VERSION under RVM" | ||
|
r141 | |||
echo "Installing required apts" | ||||
|
r84 | |||
|
r88 | sudo apt-get update | ||
|
r141 | sudo apt-get install mysql-server mysql-client \ | ||
g++ gcc apache2 libmysqlclient15-dev build-essential \ | ||||
git-core openssl libreadline6 libreadline6-dev \ | ||||
zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev \ | ||||
sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev \ | ||||
ncurses-dev automake libtool bison subversion \ | ||||
r192 | pkg-config curl nodejs unzip pyflakes ruby default-jdk | |||
|
r84 | |||
|
r141 | echo "Installing RVM" | ||
|
r144 | curl -k -L https://get.rvm.io | bash -s stable | ||
r190 | source ~/.rvm/scripts/rvm | |||
|
r84 | |||
|
r202 | echo "Installing Ruby $RUBY_VERSION in RVM" | ||
|
r141 | |||
|
r202 | rvm install $RUBY_VERSION | ||
rvm use $RUBY_VERSION | ||||
|
r84 | |||
echo "Fetching Cafe Grader from Git repositories" | ||||
echo "Fetching web interface" | ||||
mkdir cafe_grader | ||||
cd cafe_grader | ||||
|
r141 | git clone -q git://github.com/jittat/cafe-grader-web.git web | ||
|
r84 | |||
echo "Configuring rails app" | ||||
|
r141 | cp web/config/application.rb.SAMPLE web/config/application.rb | ||
cp web/config/initializers/cafe_grader_config.rb.SAMPLE web/config/initializers/cafe_grader_config.rb | ||||
|
r84 | |||
r183 | #replace UTC in application.rb with the system timezone | |||
timezone='UTC' | ||||
if [ -f '/etc/timezone' ]; then | ||||
timezone=\"`cat /etc/timezone`\" | ||||
else | ||||
if [ -f '/etc/sysconfig/clock' ]; then | ||||
timezone=`grep -e '^TIMEZONE' /etc/sysconfig/clock | grep -o -e '\".*\"'` | ||||
fi | ||||
fi | ||||
replace="s!'UTC'!$timezone!g" | ||||
sed -i $replace web/config/application.rb | ||||
|
r84 | echo "At this point we will need MySQL user and database." | ||
echo "Have you created MySQL user and database for Cafe grader? (Y/N) " | ||||
read ch | ||||
if [ "$ch" = "n" -o "$ch" = "N" ] | ||||
then | ||||
echo "Please open another terminal and create the user and database for Cafe grader." | ||||
|
r88 | echo "Don't forget to grant access to that database for the user." | ||
|
r84 | echo "Please have username, password, and database name ready before continue." | ||
|
r89 | echo | ||
echo "The following are instructions:" | ||||
echo "1. Run mysql:" | ||||
echo | ||||
echo " mysql -u root -p" | ||||
echo | ||||
echo " if you have just installed mysql, the root password is the one that you have just entered" | ||||
echo "2. Create a new database, a new user, and grant access to grader database:" | ||||
echo | ||||
echo " create user 'USERNAME'@'localhost' identified by 'PASSWORD';" | ||||
|
r97 | echo " create database \`DATABASENEME\`;" | ||
echo " grant all on \`DATABASENAME\`.* to 'USERNAME'@'localhost';" | ||||
|
r89 | echo | ||
echo " Replace USERNAME, PASSWORD, and DATABASENAME accordingly." | ||||
echo | ||||
|
r84 | echo "Hit enter when ready..." | ||
read dummy | ||||
fi | ||||
CAFE_PATH=`pwd` | ||||
cd web | ||||
echo "Please provide grader database:" | ||||
read database | ||||
echo "Please provide grader username:" | ||||
read username | ||||
echo "Please provide $username password:" | ||||
read password | ||||
echo "development:" > config/database.yml | ||||
|
r141 | echo " adapter: mysql2" >> config/database.yml | ||
echo " encoding: utf8" >> config/database.yml | ||||
echo " reconnect: false" >> config/database.yml | ||||
|
r84 | echo " database: $database" >> config/database.yml | ||
|
r141 | echo " pool: 5" >> config/database.yml | ||
|
r84 | echo " username: $username" >> config/database.yml | ||
echo " password: $password" >> config/database.yml | ||||
echo " host: localhost" >> config/database.yml | ||||
|
r141 | echo " socket: /var/run/mysqld/mysqld.sock" >> config/database.yml | ||
echo "" >> config/database.yml | ||||
echo "production:" >> config/database.yml | ||||
echo " adapter: mysql2" >> config/database.yml | ||||
echo " encoding: utf8" >> config/database.yml | ||||
echo " reconnect: false" >> config/database.yml | ||||
echo " database: $database" >> config/database.yml | ||||
echo " pool: 5" >> config/database.yml | ||||
echo " username: $username" >> config/database.yml | ||||
echo " password: $password" >> config/database.yml | ||||
echo " host: localhost" >> config/database.yml | ||||
echo " socket: /var/run/mysqld/mysqld.sock" >> config/database.yml | ||||
|
r84 | |||
|
r141 | echo "Object.instance_eval{remove_const :GRADER_ROOT_DIR}" >> config/initializers/cafe_grader_config.rb | ||
echo "Object.instance_eval{remove_const :GRADING_RESULT_DIR}" >> config/initializers/cafe_grader_config.rb | ||||
echo "GRADER_ROOT_DIR = '$CAFE_PATH/judge'" >> config/initializers/cafe_grader_config.rb | ||||
echo "GRADING_RESULT_DIR = '$CAFE_PATH/judge/result'" >> config/initializers/cafe_grader_config.rb | ||||
|
r84 | |||
echo "Installing required gems" | ||||
|
r142 | gem install bundler | ||
|
r141 | bundle install | ||
|
r84 | |||
echo "Running rake tasks to initialize database" | ||||
rake db:migrate | ||||
|
r87 | rake db:seed | ||
|
r84 | |||
r182 | echo "Running rake tasks to precompile the assets" | |||
rake assets:precompile | ||||
|
r84 | echo "Intalling web interface complete..." | ||
echo | ||||
echo "Fetching grader" | ||||
cd .. | ||||
mkdir judge | ||||
cd judge | ||||
|
r141 | git clone -q git://github.com/jittat/cafe-grader-judge-scripts.git scripts | ||
|
r84 | mkdir raw | ||
mkdir ev-exam | ||||
mkdir ev | ||||
mkdir result | ||||
mkdir log | ||||
echo "Configuring grader" | ||||
cp scripts/config/env_exam.rb.SAMPLE scripts/config/env_exam.rb | ||||
cp scripts/config/env_grading.rb.SAMPLE scripts/config/env_grading.rb | ||||
|
r85 | # create new environment.rb file | ||
echo "RAILS_ROOT = '$CAFE_PATH/web'" > scripts/config/environment.rb | ||||
echo "GRADER_ROOT = '$CAFE_PATH/judge/scripts'" >> scripts/config/environment.rb | ||||
echo "require File.join(File.dirname(__FILE__),'../lib/boot')" >> scripts/config/environment.rb | ||||
echo "require File.dirname(__FILE__) + \"/env_#{GRADER_ENV}.rb\"" >> scripts/config/environment.rb | ||||
|
r84 | |||
r193 | # compiling box | |||
MACHINE_TYPE=`uname -m` | ||||
if [ ${MACHINE_TYPE} == 'x86_64' ]; then | ||||
gcc -std=c99 -o scripts/std-script/box scripts/std-script/box64-new.c | ||||
else | ||||
g++ -o scripts/std-script/box scripts/std-script/box.cc | ||||
fi | ||||
|
r84 | cd .. | ||
echo "Now you are ready to run cafe grader...." | ||||
echo | ||||
echo "Try:" | ||||
|
r90 | echo | ||
|
r84 | echo " cd web" | ||
|
r141 | echo " rails s" | ||
|
r84 | echo | ||
echo "and access web at http://localhost:3000/" | ||||
|
r90 | echo "The root username is 'root', its password is 'ioionrails'." | ||
|
r84 | |||