Zhixian's Tech Blog

2014-12-21

Google App Engine development on Ubuntu for Python (Part 2 of 2)

Filed under: web application development — Tags: , , , , , — Zhixian @ 23:46:12 pm

This blog post describes how to run Google App Engine (GAE for short) on Ubuntu.
This is the second part of a 2-part blog post.
This blog post focus on writing a simple (helloworld) application just to demonstrate that the setup works and that we can deploy our application.

Parts

  1. Setting up Google App Engine SDK
  2. Running Google App Engine (this article)

An aside related article, How to Add Google App Engine project to Google Developers Console.

Assumptions

This blog post builds on the previous blog post Setting up Google App Engine SDK and assumes that you have followed the instructions there.

This blog post also assumes you know how to register a Google App Engine project in the Google Developers Console.
If you need help with this, you can take a look at my blog post, How to Add Google App Engine project to Google Developers Console.

Part 2 Summary

  1. Create project folders (opinionated)
  2. Create request handler
  3. Create configuration file
  4. Test project
  5. Deploying project

Create Project Directory

(Opinionated) I usually store my projects in a Projects folder in my home folder.

zhixian_084

Inside this Projects folder, right-click the folder area to display the context menu.
Click Create Folder from the context menu.

zhixian@SARA: ~-Projects_085

Name the folder HelloWorld.
So your Projects folder, should look like the below.
The files (request handler and configuration) will be stored inside the HelloWorld folder that you have created.

Projects_086

Create Request Handler

Double-click the HelloWorld folder to open the folder.
Right-click in the folder area to display the context menu.
Click Empty File from the context menu.

HelloWorld_087

Name the file as

HelloWorld.py

Your HelloWorld folder should look like the below:

HelloWorld_088

Right-click the HelloWorld.py file that you just created to display its context menu.
Click Open with Text Editor from the context menu to edit the file.
This will open the file in your configured text editor. By default, this should be gedit.

HelloWorld_090

Copy and paste the below into the file.

import webapp2

class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.write('Hello, World!')

application = webapp2.WSGIApplication([
    ('/', MainPage),
], debug=True)

After you paste the above content into the file, it should look like the below.
Note the amount of space used for indentation.
This is important in Python as indentation is used to indicate code blocks.

Click on Save on the toolbar to save the file.

HelloWorld.py (~-Projects-HelloWorld) - gedit_092

Create Configuration File

In your HelloWorld folder, right-click in the folder area to display the context menu.
Click Empty File from the context menu.

HelloWorld_093

Name this file

app.yaml

HelloWorld_095

Right-click the app.yaml file that you just created to display its context menu.
Click Open with Text Editor from the context menu to edit the file.

HelloWorld_096

Copy and paste the below into the file, replacing the your-app-id with the project id that you defined in your Google Developers Console.

application: your-app-id
version: 1
runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /.*
  script: HelloWorld.application

Now, you are ready to test the project.

Test Project

To test your project, open a terminal session and go to the folder that holds your project folder.
For my example, my HelloWorld project is created in a folder call Projects in my home folder.
So I would type the following command after starting the terminal session.

cd Projects

If I list the contents of the Projects folder, it should look like the below:

zhixian@SARA: ~-Projects_105

To run the HelloWorld application,

  1. Enter the following at the command prompt:

    dev_appserver.py HelloWorld/

  2. You will be prompt to give permission for the dev_appserver script to check for updates on startup.
    Enter “n” to disallow this check. Leaving this as “Y” or blank will allow dev_appserver to check for updates.
  3. Note the url of the “default” module.
    This is the url that your application is being hosted at.
    By default it is:

    http://localhost:8080

  4. Note the url of the admin server.
    This is the url that of the local testing administration server to your application.
    By default it is:

    http://localhost:8000

zhixian@SARA: ~-Projects_104

If you open your browser and navigate to the url of the “default” module (http://localhost:8080), you should see:

Firefox Developer Edition_107

If you open your browser and navigate to the url of the admin server (http://localhost:8000), you should see:

Instances - Firefox Developer Edition_108

To stop the test server, press <Control>-<C> keys combination.

zhixian@SARA: ~-Projects_109

Deploy Project

To upload the project to Google:

  1. Enter the following command at the command prompt:

    appcfg.py update HelloWorld/

  2. Enter your Google (gmail) account.
  3. Enter the password to your account.
  4. After the update has complete, you should see “Deployment Success”, somewhere near the end.

zhixian@SARA: ~-Projects_110

After you have deployed the application, you can access it at:

http://<project-id>.appspot.com/

Firefox Developer Edition_111

Reference

  1. Hello, World! – Python – Google Cloud Platform
  2. Uploading Your Application – Python – Google Cloud Platform
Advertisements

How to Add Google App Engine project to Google Developers Console

This blog post describes how to create add Google App Engine project.

Assumption

You have a Google account.

Summary

  1. Log in to Google Developers Console
  2. Create Project

Log in to Google Developers Console

In your web browser, navigate to Google Developers Console (https://console.developers.google.com/)

Google Developers Console - Firefox Developer Edition_097

After you logged in, you should be redirected to your project page.

Create Project

Click Create Project to display the new project.

Google Developers Console - Firefox Developer Edition_098

On the New Project dialog, enter:

  1. A name for your project.
    For example, I am naming my hello world project as zx-helloworld.
  2. An id for your project.
    Important This id will be used for the deployment of your project.
    For example, I am naming my hello world id as zx-helloworld.
  3. Click Create to add the project.

Note

The project id needs meet the follow criteria:

  1. Starts with a lower-case letter (a-z)
  2. May contains lower-case letters, digits (0-9) or hyphen (-)

Google Developers Console - Firefox Developer Edition_099

After you clicked Create, the dialog will close.
You should see a small popup at the lower right-hand corner of the page.

Google Developers Console - Firefox Developer Edition_100

The popup should indicate that its creating the project.

Google Developers Console - Firefox Developer Edition_100

After the project is created, it should redirect you to the project dashboard.

Google Developers Console - Firefox Developer Edition_101

The popup in the lower right corner of the page, should have a green checkbox.

Google Developers Console - Firefox Developer Edition_102

With this, your Google App Engine project can be deployed using the project id that you defined.

2014-12-04

Google App Engine development on Ubuntu for Python (Part 1 of 2)

Filed under: development — Tags: , , , , , , , , , , , — Zhixian @ 12:21:12 pm

This blog post describes how to run Google App Engine (GAE for short) on Ubuntu.
This is a 2-part blog post.

Parts

  1. Setting up Google App Engine SDK (this article)
  2. Running Google App Engine

An aside related article, How to Add Google App Engine project to Google Developers Console.

Part 1 Summary

  1. Introduction
  2. Assumptions
  3. Python Version
  4. Installing Google App Engine

1. Introduction

Google App Engine is a PaaS (Platform as a Service) provided by Google.
Currently, GAE supports 4 programming languages.
I will be using Python as programming language of choice for this blog post.

2. Assumptions

In following this blog post, I assume:

  1. you have a working Google account
  2. you know how to start a terminal session and enter commands into it.
  3. you know how to use a browser to download files
  4. you know how to extract files from archives

Note: It may be obvious, but any time you see my name “zhixian” in any of screen shots or commands, you can safely assume that its should be referring to your username in your context.

3. Python Version

By default, Python is installed on Ubuntu.

The version of Python that I am using for this blog post is 2.7.6.
To check which version of Python you are running, typed the following command in a terminal session:

python –version

zhixian@SARA: ~_022

4. Installing Google App Engine

2 steps:

  1. Getting Google App Engine SDK (Software Development Kit)
  2. Extracting files from Google App Engine SDK
  3. (Optional) Move extracted files out of Downloads folder
  4. (Optional) Add location of extracted files to PATH environment variable

4.1 Getting Google App Engine SDK (Software Development Kit)

You can download the Google App Engine SDK at https://cloud.google.com/appengine/downloads

Steps:

  1. Enter the url https://cloud.google.com/appengine/downloads in your browser navigation bar.
  2. On the download page, click on the button “Google App Engine SDK for Python” to display the available download options
  3. Pick the link “google_appengine_1.9.15.zip” under package column for “Linux/Other Platforms” row to download the zip file.

Download the Google App Engine SDK - Google App Engine — Google Cloud Platform - Mozilla Firefox_023

4.2 Extracting files from Google App Engine SDK

After you have download the zip file, you should see the zip file in your download folder.

Downloads_025

Right-click on the zip file to display it’s context menu.
From the context menu, select “Extract Here”.

Downloads_026

After you extracted the files, you should see:

Downloads_027

I will refer to the location of google_appengine folder as GAE home directory for the rest of this blog post.

4.3 (Optional) Move extracted files out of Downloads folder

This step is optional and is entirely opinionated. It may not be appropriate for enterprise deployment.

The files that we extracted are in the default “Download” folder.
This folder may get cluttered over time.
My preference is to create a “Apps” directory and move the extracted files into this folder.
So, my final setup is something like the below:

Apps_028

google_appengine_030

4.4 (Optional) Add location of extracted files to PATH environment variable

This step is intended to provide convenience. It is not essential.

The location of the extracted files is dependent on whether you performed the previous step.

If you performed the previous step and moved the folder to an Apps folder, the location should be:
~/Apps/google_appengine

If you did not do the step, the location should be:
~/Downloads/google_appengine

As such, type the following:

export PATH=$PATH:<location_of_google_appengine>

Before you enter the following command, to examine the contents of your current PATH environment variable:

echo $PATH

zhixian@SARA: ~_032

After you enter the export PATH command, you should see a result like the below:

zhixian@SARA: ~_033

Note: Performing this command only affects the PATH environment variable for this session.
This means that every time you start a new terminal session, you have to do the same thing.
You may want to consider putting this in your .bashrc file.

I’m kind of lazy to explain what is the .bashrc file. So I’m just going to paste the screenshots of the steps for editing the .bashrc file with annotations:

At the command-line type the following command to edit the file:

pico ~/.bashrc

zhixian@SARA: ~_044

Note: pico is an alias for nano, a text-editor.

zhixian@SARA: ~_045

After you have opened the file for editing, scroll to the end of the file using the down arrow or page down key:

zhixian@SARA: ~_046

At the end of the file, enter the export PATH command.
Then press the <CTRL>-X key combination on your keyboard to exit the editor.

zhixian@SARA: ~_047

Because we did not save changes when we exit the editor, there will be a prompt asking if you want to save changes.
Press the Y key on your keyboard to save changes.

zhixian@SARA: ~_048

After you enter Y, there will be another prompt for the file to save the changes.
Press the Enter key on your keyboard to accept the default (the name of the file you are editing).

zhixian@SARA: ~_049

After you hit the Enter key, you should be back at the command-line.

To test the changes are effective, start another terminal session.
At the command-line, enter dev_a followed by the Tab key on your keyboard:

dev_a<tab>

The terminal session should automatically auto-complete your input into dev_appserver.py.

zhixian@SARA: ~_051

I will continue on how you get your first application running on Google App Engine in my next blog-post.

Create a free website or blog at WordPress.com.