tree: 65c8dd70b475aa94196a233c5aca95faa7bae393 [path history] [tgz]
  1. BUILD.gn
  2. connection.cc
  3. connection.h
  4. http_request_parser.cc
  5. http_request_parser.h
  6. http_server_app.cc
  7. http_server_apptest.cc
  8. http_server_factory_impl.cc
  9. http_server_factory_impl.h
  10. http_server_impl.cc
  11. http_server_impl.h
  12. http_status_code_list.h
  13. README.md
services/http_server/README.md

How to run HTTP apps on GCE

These are the steps to create a Mojo app that handles some URLs and push it to run on Google Compute Engine.

Set up Google Cloud Platform

Install Google Cloud Platform SDK: https://cloud.google.com/sdk/

Authenticate

You‘ll need to set a project for the Google Cloud Platform scripts. If you’re a Googler, note that you shouldn't use a corporate card for this.

If you're on the Mojo team, ping blundell to get added to the “mojodemos” project first.

If you‘re not on Mojo team, then create a project on Google Compute Engine and replace “mojodemos” with your project-id below. Also make sure to enable the “Google Compute Engine” API" at your project’s console https://console.developers.google.com

gcloud auth login
gcloud config set project mojodemos

Create a VM

Now create a VM that‘ll run the binary. The Debian image doesn’t work because of some GLib dependencies in our binaries that we should remove (http://crbug.com/433886). Until then, you have to use the Ubuntu image:

gcloud compute instances create YOUR-VM-NAME-HERE --image ubuntu-1404-trusty-v20141031a  --image-project ubuntu-os-cloud --zone us-central1-a

Make note of the external IP address of this machine; you'll use this later to connect to the Mojo app.

Install some required packages:

gcloud compute ssh YOUR-VM-NAME-HERE --command "sudo apt-get install libgconf-2-4 -y" --zone us-central1-a
gcloud compute ssh YOUR-VM-NAME-HERE --command "sudo apt-get install libnss3 -y" --zone us-central1-a

If you're not using mojodemos project-id and created a new project, add a firewall rule to allow port 80:

gcloud compute firewall-rules create allow-http  --description "Incoming http allowed." --allow tcp:80

Push the Mojo binaries

Create a directory to hold the binaries:

gcloud compute ssh YOUR-VM-NAME-HERE --command "mkdir ~/mojo" --zone us-central1-a

For this example, we‘ll use the examples/http_handler binary which is a minimal Mojo HTTP app. Assuming you’ve built the release binary:

gcloud compute copy-files out/Release/http_handler.mojo out/Release/http_server.mojo out/Release/network_service.mojo out/Release/mojo_shell YOUR-VM-NAME-HERE:~/mojo --zone us-central1-a

Run the Mojo app

gcloud compute ssh YOUR-VM-NAME-HERE --command "sudo mojo/mojo_shell mojo://http_handler" --zone us-central1-a

Now you can visit the IP address from the previous step.

Delete the VM

Once you're not using the VM anymore:

gcloud compute instances delete YOUR-VM-NAME-HERE --zone us-central1-a