---
title: "Web Server Using Compute Engine"
description: "Basic example of a Google Cloud web server accessible over HTTP"
url: "https://www.pulumi.com/dev/examples/gcp-py-webserver/"
image: "https://www.pulumi.com/assets/og/dev/examples/gcp-py-webserver.png"
---

# Web Server Using Compute Engine

Basic example of a Google Cloud web server accessible over HTTP

- Source on GitHub: https://github.com/pulumi/examples/tree/master/gcp-py-webserver
- Deploy with Pulumi: https://app.pulumi.com/new?template=https%3A%2F%2Fgithub.com%2Fpulumi%2Fexamples%2Ftree%2Fmaster%2Fgcp-py-webserver

## Get started with this example

This example lives in the [pulumi/examples](https://github.com/pulumi/examples/tree/master/gcp-py-webserver) repo. Pull down just this directory to follow along:

```bash
git clone --filter=blob:none --sparse https://github.com/pulumi/examples pulumi-examples
git -C pulumi-examples sparse-checkout set gcp-py-webserver
cd pulumi-examples/gcp-py-webserver
```

Starting point for building the Pulumi web server sample in Google Cloud.

This example deploys a Google Compute Engine virtual machine — together with a network and firewall rule that allows SSH and HTTP access — and runs a simple HTTP server on it that responds with `Hello, World!`.

## Running the App

1.  Create a new stack:

    ```
    $ pulumi stack init dev
    ```

1.  Configure the project:

    ```
    $ pulumi config set gcp:project YOURGOOGLECLOUDPROJECT
    $ pulumi config set gcp:zone us-central1-a
    ```

1.  Run `pulumi up` to preview and deploy changes:

    ```
    $ pulumi up -y
    Previewing update (dev):
        Type                     Name                  Plan       Info
    +   pulumi:pulumi:Stack      gcp-py-webserver-dev  create
    +   ├─ gcp:compute:Address   address               create
    +   ├─ gcp:compute:Network   network               create
    +   ├─ gcp:compute:Firewall  firewall              create
    +   └─ gcp:compute:Instance  instance              create

    Updating (dev):
        Type                     Name                  Status      Info
    +   pulumi:pulumi:Stack      gcp-py-webserver-dev  created
    +   ├─ gcp:compute:Address   address               created
    +   ├─ gcp:compute:Network   network               created
    +   ├─ gcp:compute:Firewall  firewall              created
    +   └─ gcp:compute:Instance  instance              created

    Outputs:
        instanceIP  : "35.188.118.61"
        instanceName: "instance-91b70e1"

    Resources:
        + 5 created

    Duration: 1m51s
    ```

1.  Curl the HTTP server:

    ```
    $ curl $(pulumi stack output instanceIP)
    Hello, World!
    ```

1.  SSH into the server:

    ```
    $ gcloud compute ssh $(pulumi stack output instanceName)
    Warning: Permanently added 'compute.967481934451185713' (ECDSA) to the list of known hosts.

    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.

    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    user@instance-8ad9bd8:~$
    ```

1. Cleanup

    ```
    $ pulumi destroy
    $ pulumi stack rm
    ```
