-
Notifications
You must be signed in to change notification settings - Fork 61
Bootstrap
Note: Please email dhovemey@ycp.edu if you have any questions about installing CloudCoder.
This document describes how to "bootstrap" a new CloudCoder installation. The good news is that CloudCoder is fairly easy to install, as long as you are comfortable running Linux commands using ssh.
You will need two (or more) servers running Ubuntu Linux.
The webapp server will host the CloudCoder web application. This server should have 512M or more of RAM and 2G or more of disk space. Ideally, it should be accessible via the public internet. Cloud hosting services such as Amazon EC2 are an excellent option. (CloudCoder runs well on an EC2 micro instance.) Other cloud hosting services should work well, too. Make sure you choose Ubuntu Linux as the OS. (Ubuntu Server 12.04.1 LTS works well.)
The builder is a server that builds and tests student submissions. It does not need to be accessible via the internet, so if you have a spare PC that you can install Linux on, that can be your builder. The builder (or builders - you can have more than one) should have sufficient CPU power and RAM for compiling and testing student submissions: a multi-core CPU is desirable.
Use ssh to log into the server on which you will run the webapp.
Log into an account that has permission to use sudo to run
commands as the superuser: for example, on Amazon EC2 Ubuntu Server, this is the
ubuntu account.
Once you have logged in, run the following commands:
wget https://s3.amazonaws.com/cloudcoder-binaries/bootstrap.pl
chmod a+x bootstrap.pl
./bootstrap.plYou will be prompted for some configuration information. Here is an example transcript:
Welcome to the CloudCoder bootstrap script.
By running this script, you will create a basic CloudCoder
installation on a server running Ubuntu Linux.
Make sure to run this script from a user account that has
permission to run the "sudo" command. If you see the
following prompt:
sudo password>>
then you will need to type the account password and press
enter. On some Ubuntu systems, such as Ubuntu server on
Amazon EC2, no password is required for sudo, so don't be
concerned if you don't see the prompt.
Ready to start? (yes/no)
==> yes
First, please enter some configuration information...
What username do you want for your CloudCoder account?
==> dhovemey
What password do you want for your CloudCoder account?
==> hax0r4lif3
What is your first name?
==> David
What is your last name?
==> Hovemeyer
What is your email address?
==> dhovemey@ycp.edu
What is the URL of your personal website?
==> http://faculty.ycp.edu/~dhovemey
What is the name of your institution?
==> York College of Pennsylvania
What password do you want for the MySQL root user?
==> fr0b0zz
What password do you want for the MySQL cloudcoder user?
==> wurbl3
What is the hostname of this server?
==> ec2-107-22-92-250.compute-1.amazonaws.com
Are you ready to start the installation? (yes/no)
==>
The personal information is for your user account. The MySQL passwords are used for access to the MySQL database CloudCoder will use to store exercises and student work.
In the example above, the hostname I entered identifies an Amazon EC2 server I used to install CloudCoder: you should enter the hostname of your webapp server. If you have a DNS name for your server (something like cloudcoder.yourschool.edu), use that instead.
After entering this information, the script will install and configure CloudCoder and the other software it requires. If everything is successful, you should see a message similar to the following:
########################################################################
>>> CloudCoder installation successful! <<<
########################################################################
It looks like CloudCoder was installed successfully.
You should be able to test your new installation by opening the
following web page:
https://ec2-107-22-92-250.compute-1.amazonaws.com/cloudcoder
Note that no builders are running, so you won't be able to
test submissions yet. The builder jar file (cloudcoderBuilder-0.0.0.jar)
is in the /home/ubuntu directory: you will need to copy
it to the server(s) which will be responsible for building
and testing submissions.
You should be able to open the URL in your web browser and log in using the username and password you chose earlier. Note that you will receive a security warning because the server will be using a self-signed certificate. You can install a real (trusted) certificate later: see PostInstall.
The bootstrap.pl script will leave the configured builder jar file
in the home directory of the account from which you ran the script.
However, you will need to install this jar file on the build server(s).
This section explains how to install the jar file on a build server.
This section is a bit complicated because there are three computers involved:
- Your local machine (the one you are physically using), which we'll call
localmachine. - The webapp server, which we'll call
webappserver. - The server you will run the builder on, which we'll call
buildserver.
Substitute the hostnames of the webapp and build servers for webappserver
and buildserver as appropriate.
These instructions assume that you have an ssh keyfile that allows you to log into
accounts on both webappserver and buildserver that have permission to run
the sudo command. We'll refer to this as keyfile.
(If you're using Amazon EC2, it will probably have a .pem file extension.)
We'll refer to the accounts on each server
as waccount and baccount ("webapp" and "builder" accounts).
These might be the same (for example, ubuntu if you're using Amazon EC2).
waccount should be the account you used to run the bootstrap.pl script.
First, run the following commands on localmachine to copy the configured
builder jar file from webappserver to buildserver:
scp -i keyfile waccount@webappserver:'cloudcoderBuilder-*.jar' .
scp -i keyfile cloudcoderBuilder-*.jar baccount@buildserver:Next, log into the build server. Make sure you log into an account
that has permission to run sudo.
Then, install software needed by the builder:
sudo apt-get update
sudo apt-get install openjdk-6-jre-headless gcc g++Next, create a builder user account:
sudo adduser --disabled-password --home /home/builder --gecos '' builderCopy the builder jarfile to the home directory of the builder account:
sudo cp cloudcoderBuilder-*.jar /home/builder
sudo chown builder /home/builder/cloudcoderBuilder-*.jarNext, start a shell running as the builder user:
sudo -u builder bashNow you're ready to install and start the builder jar file:
cd /home/builder
mkdir -p builder
mv cloudcoderBuilder-*.jar builder
cd builder
java -jar cloudcoderBuilder-*.jar start
lsThe last command (ls) should show a directory listing which includes
files called instance.pid and instance-NNNN.fifo, where NNNN is a
process id. If you see these files, then the builder should be running.
You can use multiple builder servers, so you can repeat this procedure on other machines if you choose to.
To test your new installation, log into the web app, choose the "CloudCoder demo course", choose the "hello" problem, and click "Load Problem". Add the code
printf("Hello, world\n");to the code you see and click "Submit!". If you see the message "You rock" and a green bar, then everything is working. Congratulations.
For more info (demo server, exercise repository, contributing to cloudcoder, etc): cloudcoder.org
