Description:
Merge pull request #5 from nattee/master update install script
Commit status:
[Not Reviewed]
References:
merge default
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r199:eb52412d0a7d - - 1 file changed: 16 inserted, 0 deleted

@@ -1,154 +1,170
1 #!/bin/sh
1 #!/bin/sh
2
2
3 echo "This script will install and configure Cafe grader."
3 echo "This script will install and configure Cafe grader."
4
4
5 echo "This will install Ruby 2.1.2 under rvm"
5 echo "This will install Ruby 2.1.2 under rvm"
6
6
7 echo "Installing required apts"
7 echo "Installing required apts"
8
8
9 sudo apt-get update
9 sudo apt-get update
10 sudo apt-get install mysql-server mysql-client \
10 sudo apt-get install mysql-server mysql-client \
11 g++ gcc apache2 libmysqlclient15-dev build-essential \
11 g++ gcc apache2 libmysqlclient15-dev build-essential \
12 git-core openssl libreadline6 libreadline6-dev \
12 git-core openssl libreadline6 libreadline6-dev \
13 zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev \
13 zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev \
14 sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev \
14 sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev \
15 ncurses-dev automake libtool bison subversion \
15 ncurses-dev automake libtool bison subversion \
16 pkg-config curl nodejs unzip
16 pkg-config curl nodejs unzip
17
17
18 echo "Installing RVM"
18 echo "Installing RVM"
19 curl -k -L https://get.rvm.io | bash -s stable
19 curl -k -L https://get.rvm.io | bash -s stable
20 ~/.rvm/scripts/rvm
20 ~/.rvm/scripts/rvm
21
21
22 echo "Installing Ruby 2.1.2 in RVM"
22 echo "Installing Ruby 2.1.2 in RVM"
23
23
24 rvm install 2.1.2
24 rvm install 2.1.2
25 rvm use 2.1.2
25 rvm use 2.1.2
26
26
27 echo "Fetching Cafe Grader from Git repositories"
27 echo "Fetching Cafe Grader from Git repositories"
28
28
29 echo "Fetching web interface"
29 echo "Fetching web interface"
30
30
31 mkdir cafe_grader
31 mkdir cafe_grader
32 cd cafe_grader
32 cd cafe_grader
33 git clone -q git://github.com/jittat/cafe-grader-web.git web
33 git clone -q git://github.com/jittat/cafe-grader-web.git web
34
34
35 echo "Configuring rails app"
35 echo "Configuring rails app"
36
36
37 cp web/config/application.rb.SAMPLE web/config/application.rb
37 cp web/config/application.rb.SAMPLE web/config/application.rb
38 cp web/config/initializers/cafe_grader_config.rb.SAMPLE web/config/initializers/cafe_grader_config.rb
38 cp web/config/initializers/cafe_grader_config.rb.SAMPLE web/config/initializers/cafe_grader_config.rb
39
39
40 + #replace UTC in application.rb with the system timezone
41 + timezone='UTC'
42 + if [ -f '/etc/timezone' ]; then
43 + timezone=\"`cat /etc/timezone`\"
44 + else
45 + if [ -f '/etc/sysconfig/clock' ]; then
46 + timezone=`grep -e '^TIMEZONE' /etc/sysconfig/clock | grep -o -e '\".*\"'`
47 + fi
48 + fi
49 + replace="s!'UTC'!$timezone!g"
50 + sed -i $replace web/config/application.rb
51 +
40 echo "At this point we will need MySQL user and database."
52 echo "At this point we will need MySQL user and database."
41 echo "Have you created MySQL user and database for Cafe grader? (Y/N) "
53 echo "Have you created MySQL user and database for Cafe grader? (Y/N) "
42 read ch
54 read ch
43
55
44 if [ "$ch" = "n" -o "$ch" = "N" ]
56 if [ "$ch" = "n" -o "$ch" = "N" ]
45 then
57 then
46 echo "Please open another terminal and create the user and database for Cafe grader."
58 echo "Please open another terminal and create the user and database for Cafe grader."
47 echo "Don't forget to grant access to that database for the user."
59 echo "Don't forget to grant access to that database for the user."
48 echo "Please have username, password, and database name ready before continue."
60 echo "Please have username, password, and database name ready before continue."
49 echo
61 echo
50 echo "The following are instructions:"
62 echo "The following are instructions:"
51 echo "1. Run mysql:"
63 echo "1. Run mysql:"
52 echo
64 echo
53 echo " mysql -u root -p"
65 echo " mysql -u root -p"
54 echo
66 echo
55 echo " if you have just installed mysql, the root password is the one that you have just entered"
67 echo " if you have just installed mysql, the root password is the one that you have just entered"
56 echo "2. Create a new database, a new user, and grant access to grader database:"
68 echo "2. Create a new database, a new user, and grant access to grader database:"
57 echo
69 echo
58 echo " create user 'USERNAME'@'localhost' identified by 'PASSWORD';"
70 echo " create user 'USERNAME'@'localhost' identified by 'PASSWORD';"
59 echo " create database \`DATABASENEME\`;"
71 echo " create database \`DATABASENEME\`;"
60 echo " grant all on \`DATABASENAME\`.* to 'USERNAME'@'localhost';"
72 echo " grant all on \`DATABASENAME\`.* to 'USERNAME'@'localhost';"
61 echo
73 echo
62 echo " Replace USERNAME, PASSWORD, and DATABASENAME accordingly."
74 echo " Replace USERNAME, PASSWORD, and DATABASENAME accordingly."
63 echo
75 echo
64 echo "Hit enter when ready..."
76 echo "Hit enter when ready..."
65 read dummy
77 read dummy
66 fi
78 fi
67
79
68 CAFE_PATH=`pwd`
80 CAFE_PATH=`pwd`
69
81
70 cd web
82 cd web
71
83
72 echo "Please provide grader database:"
84 echo "Please provide grader database:"
73 read database
85 read database
74
86
75 echo "Please provide grader username:"
87 echo "Please provide grader username:"
76 read username
88 read username
77
89
78 echo "Please provide $username password:"
90 echo "Please provide $username password:"
79 read password
91 read password
80
92
81 echo "development:" > config/database.yml
93 echo "development:" > config/database.yml
82 echo " adapter: mysql2" >> config/database.yml
94 echo " adapter: mysql2" >> config/database.yml
83 echo " encoding: utf8" >> config/database.yml
95 echo " encoding: utf8" >> config/database.yml
84 echo " reconnect: false" >> config/database.yml
96 echo " reconnect: false" >> config/database.yml
85 echo " database: $database" >> config/database.yml
97 echo " database: $database" >> config/database.yml
86 echo " pool: 5" >> config/database.yml
98 echo " pool: 5" >> config/database.yml
87 echo " username: $username" >> config/database.yml
99 echo " username: $username" >> config/database.yml
88 echo " password: $password" >> config/database.yml
100 echo " password: $password" >> config/database.yml
89 echo " host: localhost" >> config/database.yml
101 echo " host: localhost" >> config/database.yml
90 echo " socket: /var/run/mysqld/mysqld.sock" >> config/database.yml
102 echo " socket: /var/run/mysqld/mysqld.sock" >> config/database.yml
91 echo "" >> config/database.yml
103 echo "" >> config/database.yml
92 echo "production:" >> config/database.yml
104 echo "production:" >> config/database.yml
93 echo " adapter: mysql2" >> config/database.yml
105 echo " adapter: mysql2" >> config/database.yml
94 echo " encoding: utf8" >> config/database.yml
106 echo " encoding: utf8" >> config/database.yml
95 echo " reconnect: false" >> config/database.yml
107 echo " reconnect: false" >> config/database.yml
96 echo " database: $database" >> config/database.yml
108 echo " database: $database" >> config/database.yml
97 echo " pool: 5" >> config/database.yml
109 echo " pool: 5" >> config/database.yml
98 echo " username: $username" >> config/database.yml
110 echo " username: $username" >> config/database.yml
99 echo " password: $password" >> config/database.yml
111 echo " password: $password" >> config/database.yml
100 echo " host: localhost" >> config/database.yml
112 echo " host: localhost" >> config/database.yml
101 echo " socket: /var/run/mysqld/mysqld.sock" >> config/database.yml
113 echo " socket: /var/run/mysqld/mysqld.sock" >> config/database.yml
102
114
103 echo "Object.instance_eval{remove_const :GRADER_ROOT_DIR}" >> config/initializers/cafe_grader_config.rb
115 echo "Object.instance_eval{remove_const :GRADER_ROOT_DIR}" >> config/initializers/cafe_grader_config.rb
104 echo "Object.instance_eval{remove_const :GRADING_RESULT_DIR}" >> config/initializers/cafe_grader_config.rb
116 echo "Object.instance_eval{remove_const :GRADING_RESULT_DIR}" >> config/initializers/cafe_grader_config.rb
105 echo "GRADER_ROOT_DIR = '$CAFE_PATH/judge'" >> config/initializers/cafe_grader_config.rb
117 echo "GRADER_ROOT_DIR = '$CAFE_PATH/judge'" >> config/initializers/cafe_grader_config.rb
106 echo "GRADING_RESULT_DIR = '$CAFE_PATH/judge/result'" >> config/initializers/cafe_grader_config.rb
118 echo "GRADING_RESULT_DIR = '$CAFE_PATH/judge/result'" >> config/initializers/cafe_grader_config.rb
107
119
108 echo "Installing required gems"
120 echo "Installing required gems"
109 gem install bundler
121 gem install bundler
110 bundle install
122 bundle install
111
123
112 echo "Running rake tasks to initialize database"
124 echo "Running rake tasks to initialize database"
113
125
114 rake db:migrate
126 rake db:migrate
115 rake db:seed
127 rake db:seed
116
128
129 + echo "Running rake tasks to precompile the assets"
130 +
131 + rake assets:precompile
132 +
117 echo "Intalling web interface complete..."
133 echo "Intalling web interface complete..."
118 echo
134 echo
119 echo "Fetching grader"
135 echo "Fetching grader"
120
136
121 cd ..
137 cd ..
122
138
123 mkdir judge
139 mkdir judge
124 cd judge
140 cd judge
125 git clone -q git://github.com/jittat/cafe-grader-judge-scripts.git scripts
141 git clone -q git://github.com/jittat/cafe-grader-judge-scripts.git scripts
126 mkdir raw
142 mkdir raw
127 mkdir ev-exam
143 mkdir ev-exam
128 mkdir ev
144 mkdir ev
129 mkdir result
145 mkdir result
130 mkdir log
146 mkdir log
131
147
132 echo "Configuring grader"
148 echo "Configuring grader"
133
149
134 cp scripts/config/env_exam.rb.SAMPLE scripts/config/env_exam.rb
150 cp scripts/config/env_exam.rb.SAMPLE scripts/config/env_exam.rb
135 cp scripts/config/env_grading.rb.SAMPLE scripts/config/env_grading.rb
151 cp scripts/config/env_grading.rb.SAMPLE scripts/config/env_grading.rb
136
152
137 # create new environment.rb file
153 # create new environment.rb file
138 echo "RAILS_ROOT = '$CAFE_PATH/web'" > scripts/config/environment.rb
154 echo "RAILS_ROOT = '$CAFE_PATH/web'" > scripts/config/environment.rb
139 echo "GRADER_ROOT = '$CAFE_PATH/judge/scripts'" >> scripts/config/environment.rb
155 echo "GRADER_ROOT = '$CAFE_PATH/judge/scripts'" >> scripts/config/environment.rb
140 echo "require File.join(File.dirname(__FILE__),'../lib/boot')" >> scripts/config/environment.rb
156 echo "require File.join(File.dirname(__FILE__),'../lib/boot')" >> scripts/config/environment.rb
141 echo "require File.dirname(__FILE__) + \"/env_#{GRADER_ENV}.rb\"" >> scripts/config/environment.rb
157 echo "require File.dirname(__FILE__) + \"/env_#{GRADER_ENV}.rb\"" >> scripts/config/environment.rb
142
158
143 cd ..
159 cd ..
144
160
145 echo "Now you are ready to run cafe grader...."
161 echo "Now you are ready to run cafe grader...."
146 echo
162 echo
147 echo "Try:"
163 echo "Try:"
148 echo
164 echo
149 echo " cd web"
165 echo " cd web"
150 echo " rails s"
166 echo " rails s"
151 echo
167 echo
152 echo "and access web at http://localhost:3000/"
168 echo "and access web at http://localhost:3000/"
153 echo "The root username is 'root', its password is 'ioionrails'."
169 echo "The root username is 'root', its password is 'ioionrails'."
154
170
You need to be logged in to leave comments. Login now