skia2/experimental/webtry
commit-bot@chromium.org 1e2a0cba37 Fix history on workspaces, where you couldn't click on old tries.
Also allow editing the first and last line because you might need
to do that to fix "old" tries that are already stored in the database.
By "old" I mean yesterday.

BUG=skia:
R=fmalita@google.com, fmalita@chromium.org

Author: jcgregorio@google.com

Review URL: https://codereview.chromium.org/264833004

git-svn-id: http://skia.googlecode.com/svn/trunk@14516 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-05-01 20:17:18 +00:00
..
res Fix history on workspaces, where you couldn't click on old tries. 2014-05-01 20:17:18 +00:00
setup Run Squid as a reverse caching proxy on port 80 and proxy the requests 2014-05-01 20:10:03 +00:00
sys Run Squid as a reverse caching proxy on port 80 and proxy the requests 2014-05-01 20:10:03 +00:00
templates Move to a theme that more closely matches what was there before. 2014-05-01 19:21:33 +00:00
DESIGN.md Run Squid as a reverse caching proxy on port 80 and proxy the requests 2014-05-01 20:10:03 +00:00
main.cpp First pass at workspaces. 2014-04-19 13:55:50 +00:00
README.md Run Squid as a reverse caching proxy on port 80 and proxy the requests 2014-05-01 20:10:03 +00:00
result.cpp Initial code for webtry, a web application for allowing users to try out Skia. 2014-04-09 18:59:44 +00:00
safec++ Set ulimits for the compile stage. 2014-04-30 19:38:51 +00:00
seccomp_bpf.h Sanitizing source files in Housekeeper-Nightly 2014-04-10 03:05:44 +00:00
TODO.md Factor out common template code. Send stdout back to web page. 2014-04-22 21:13:45 +00:00
webtry.go Use CodeMirror for WebTry snippets. 2014-05-01 15:14:56 +00:00

WebTry

Allows trying out Skia code in the browser. Run a local webserver and from the pages it serves try out Skia code and see the results immediately. To make sandboxing easier this must be built w/GPU off.

Running Locally

$ GYP_GENERATORS=ninja  ./gyp_skia  gyp/webtry.gyp gyp/most.gyp -Dskia_gpu=0
$ ninja -C out/Debug webtry
$ cd experimental/webtry
$ go build webtry.go
$ ./webtry

Then visit http://localhost:8000 in your browser.

Only tested under linux, doubtful it will work on other platforms.

Full Server Setup

Create a GCE instance:

gcutil --project=google.com:skia-buildbots addinstance skia-webtry-b \
  --zone=us-central2-b --external_ip_address=108.170.220.126 \
  --service_account=default \
  --service_account_scopes="https://www.googleapis.com/auth/devstorage.full_control" \
  --network=default --machine_type=n1-standard-1 --image=backports-debian-7-wheezy-v20140331 \
  --persistent_boot_disk

Make sure port 80 is accessible externally for the above instance.

SSH into the instance:

gcutil --project=google.com:skia-buildbots ssh --ssh_user=default skia-webtry-b

Do once

The following things only need to be done once

  1. sudo apt-get install git schroot debootstrap

  2. git clone https://skia.googlesource.com/skia

  3. Add the following to /etc/fstab and reboot:

    none /dev/shm tmpfs rw,nosuid,nodev,noexec 0 0

The above will allow ninja to run. See http://stackoverflow.com/questions/2009278/python-multiprocessing-permission-denied

  1. Add the following to the /etc/schroot/minimal/fstab:

    /home/webtry/inout /inout none rw,bind 0 0

  2. Change /etc/monit/monitrc to:

    set daemon 2

then run the following so it applies:

sudo /etc/init.d/monit restart

This means that monit will poll every two seconds that our application is up and running.

  1. Set the TCP keepalive. For more info see: https://developers.google.com/cloud-sql/docs/gce-access

    sudo bash -c 'echo 60 > /proc/sys/net/ipv4/tcp_keepalive_time'

Do the first time

Do the following the first time you setup a machine, and each time you want to update the code running on the server

cd ~/skia/experimental/webtry/setup
./webtry_setup.sh

Once, after setup

Do this step only once, but only after running webtry_setup.sh the first time

sudo debootstrap --variant=minbase wheezy /srv/chroot/webtry