1.5 Getting Started: Server (Cloud) Installation
This section contains instructions for installing the Canopy Cloud Service
(CCS) from source on a fresh Ubuntu 14.04 LTS machine. This is typically
installed on a cloud server, such as a VM from AWS.
Hosting
The Canopy team provides free and premium hosting of the Canopy Cloud Service.
If you plan on using our hosted services (which we recommend) you can
skip this section.
If instead you plan to install and operate the Canopy Cloud Service
yourself, then read on.
Installing Dependencies
Canopy requires Cassandra, Oracle Java 1.7, and Go-lang in order to run.
Install Cassandra
Using the text editor of your choice, edit
/etc/apt/sources.list.d/cassandra.sources.list
:
sudo vim /etc/apt/sources.list.d/cassandra.sources.list
Add the following line:
deb http://debian.datastax.com/community stable main
Save and exit. Then run:
curl -L http://debian.datastax.com/debian/repo_key | sudo apt-key add -
sudo apt-get update
sudo apt-get install -y cassandra=2.0.7
Install Oracle Java 1.7
Run:
sudo apt-get install software-properties-common python-software-properties
sudo add-apt-repository ppa:webupd8team/java
Press ENTER when prompted. Then run:
sudo apt-get update
sudo apt-get install -y oracle-java7-installer
When prompted, press ENTER. Then select "Yes" and press ENTER.
Install Go-lang
Run:
sudo apt-get install -y golang git make mercurial
Installing Canopy Cloud Service
Clone the repository:
git clone https://github.com/canopy-project/canopy-cloud
Build the project:
cd canopy-cloud
make
You should see this output:
make -C src/canopy go_get_deps
make[1]: Entering directory `/home/ubuntu/canopy-cloud/src/canopy'
mkdir -p ~/.canopy/golang
GOPATH=$(cd ~/.canopy/golang; pwd):$(cd ../../; pwd) go get code.google.com/p/go.net/websocket
GOPATH=$(cd ~/.canopy/golang; pwd):$(cd ../../; pwd) go get github.com/gocql/gocql
GOPATH=$(cd ~/.canopy/golang; pwd):$(cd ../../; pwd) go get github.com/gorilla/sessions
GOPATH=$(cd ~/.canopy/golang; pwd):$(cd ../../; pwd) go get github.com/gorilla/context
GOPATH=$(cd ~/.canopy/golang; pwd):$(cd ../../; pwd) go get github.com/gorilla/mux
GOPATH=$(cd ~/.canopy/golang; pwd):$(cd ../../; pwd) go get github.com/sendgrid/sendgrid-go
GOPATH=$(cd ~/.canopy/golang; pwd):$(cd ../../; pwd) go get code.google.com/p/go.crypto/bcrypt
make[1]: Leaving directory `/home/ubuntu/canopy-cloud/src/canopy'
make -C src/canopy all
make[1]: Entering directory `/home/ubuntu/canopy-cloud/src/canopy'
mkdir -p ~/.canopy/golang
GOPATH=$(cd ~/.canopy/golang; pwd):$(cd ../../; pwd) go build canopy-cloud-service.go canopy_cloud.go canopy_json.go
mkdir -p build/
mv canopy-cloud-service build/
mkdir -p ~/.canopy/golang
GOPATH=$(cd ~/.canopy/golang; pwd):$(cd ../../; pwd) go build canopy_cmd.go
mkdir -p build/
mv canopy_cmd build/canodevtool
make[1]: Leaving directory `/home/ubuntu/canopy-cloud/src/canopy'
Install it:
sudo make install
You should see this output:
src/canopy install
make[1]: Entering directory `/home/ubuntu/canopy-cloud/src/canopy'
cp build/canopy-cloud-service build/canodevtool /usr/local/bin
cp ../../scripts/canopy-cloud-service /etc/init.d
mkdir -p /etc/canopy
cp ../../scripts/ccs-env.sh /etc/canopy
../../scripts/create-canopy-group-user.sh
id: canopy: no such user
Adding group `canopy' (GID 114) ...
Done.
id: canopy: no such user
Adding system user `canopy' (UID 108) ...
Adding new user `canopy' (UID 108) with group `canopy' ...
Not creating home directory `/home/canopy'.
mkdir -p /var/log/canopy
touch /var/log/canopy/ccs.log
touch /var/log/canopy/ccs-errors.log
chown canopy /var/log/canopy
chgrp canopy /var/log/canopy
chown canopy /var/log/canopy/ccs.log
chgrp canopy /var/log/canopy/ccs.log
chown canopy /var/log/canopy/ccs-errors.log
chgrp canopy /var/log/canopy/ccs-errors.log
make[1]: Leaving directory `/home/ubuntu/canopy-cloud/src/canopy'
Start Cassandra running:
sudo cassandra
You should see a bunch of text scroll, ending with:
INFO 17:24:59,576 Completed flushing /var/lib/cassandra/data/system/local/system-local-jb-3-Data.db (114 bytes) for commitlog position ReplayPosition(segmentId=1410197098396, position=91604)
INFO 17:24:59,644 CFS(Keyspace='system', ColumnFamily='local') liveRatio is 27.44988344988345 (just-counted was 3.515151515151515). calculation took 5ms for 257 cells
INFO 17:24:59,644 Enqueuing flush of Memtable-local@414544706(10098/277188 serialized/live bytes, 259 ops)
INFO 17:24:59,645 Writing Memtable-local@414544706(10098/277188 serialized/live bytes, 259 ops)
INFO 17:24:59,677 Completed flushing /var/lib/cassandra/data/system/local/system-local-jb-4-Data.db (5275 bytes) for commitlog position ReplayPosition(segmentId=1410197098396, position=103603)
INFO 17:24:59,693 Compacting [SSTableReader(path='/var/lib/cassandra/data/system/local/system-local-jb-1-Data.db'), SSTableReader(path='/var/lib/cassandra/data/system/local/system-local-jb-3-Data.db'), SSTableReader(path='/var/lib/cassandra/data/system/local/system-local-jb-4-Data.db'), SSTableReader(path='/var/lib/cassandra/data/system/local/system-local-jb-2-Data.db')]
INFO 17:24:59,780 Node localhost/127.0.0.1 state jump to normal
Press ENTER to return to the command-line.
Create the database:
canodevtool create-db
Don't worry if there are errors. You should see this output:
Error opening file /var/log/canopy/ccs.log: open /var/log/canopy/ccs.log: permission denied
Falling back to STDOUT for logging
WARN 2014/09/08 17:28:24 cass_datalayer.go:340: (IGNORED) line 6:19 mismatched input '(' expecting ')'
Configuring and Running
Configuring CCS
One last step before running the Canopy Cloud Service. We must configure it.
Edit the file /etc/canopy/ccs-env.sh
CCS_ALLOW_ORIGIN=http://devel.canopy.link
CCS_HOSTNAME=54.68.36.105
CCS_DEFAULT_PROXY_TARGET=http://74.93.13.249:8080
Change the CCS_HOSTNAME
to match the IP address or hostname of your server.
Starting the Canopy Cloud Service
Now, you can start the Canopy Cloud Service
sudo /etc/init.d/canopy-cloud-service start
To check that it is working, go to http://<ip_address>/api/info
in your web browser. You
should see something like the following response:
{
"service-name" : "Canopy Cloud Service",
"version" : "0.9.0-beta"
}
If you see anything other than that, there was most likely a problem. You
can view the log file by typing:
cat /var/log/canopy/ccs.log