Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document How to Run in Azure VM #241

Open
davihar opened this issue Sep 14, 2020 · 1 comment
Open

Document How to Run in Azure VM #241

davihar opened this issue Sep 14, 2020 · 1 comment

Comments

@davihar
Copy link

davihar commented Sep 14, 2020

Feature description

Document how to run in Azure on a VM.

Motivating example

I wanted to host in Azure and followed the steps below.


Steps that enabled me to host in an Azure VM:

Using Graphile over PostgreSQL 12

Created Ubuntu 20.04 Gen1 VM in Azure using static IP address

Connect using OSX Terminal SSH command

Launchpad
Terminal

ssh {vm_username}@{ip_address}

Create database user

sudo adduser {database_username}

Install PostgreSQL

sudo apt-get update
sudo apt-get install postgresql-12
CREATE ROLE {datebase_username} WITH LOGIN CREATEDB ENCRYPTED PASSWORD '{database_user_password}';
CREATE DATABASE {database_name};
GRANT ALL PRIVILEGES ON DATABASE {database_name} to {database_username};
\q
su {database_username}
psql -d {database_name}
CREATE TABLE testtable(
  ID INT PRIMARY KEY NOT NULL,
  NAME TEXT NOT NULL
);
\d

psql "postgres://{database_username}:{database_user_password}@localhost/{database_name}"

Note: connection strings require URL encoding.

Steps above were adapted from https://tecadmin.net/install-postgresql-server-on-ubuntu/

PostgreSQL Adding GUID (UUID) Support:

sudo su postgres
psql {database_name}
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
SELECT uuid_generate_v4();

Steps above were adapted from https://www.postgresqltutorial.com/postgresql-uuid/#:~:text=The%20Basics%20Of%20PostgreSQL%20UUID,table%20with%20UUID%20column.

Install NPM

sudo apt install npm

Install Yarn

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update && sudo apt install yarn

Install PostGraphile

yarn add postgraphile

Install Optional Plugins

yarn add @graphile-contrib/pg-simplify-inflector

Start Graphile with:

npx postgraphile \
  --subscriptions \
  --watch \
  --dynamic-json \
  --no-setof-functions-contain-nulls \
  --no-ignore-rbac \
  --no-ignore-indexes \
  --show-error-stack=json \
  --extended-errors hint,detail,errcode \
  --append-plugins @graphile-contrib/pg-simplify-inflector \
  --export-schema-graphql schema.graphql \
  --graphiql "/graphiql" \
  --enhance-graphiql \
  --allow-explain \
  --enable-query-batching \
  --legacy-relations omit \
  --connection postgres://{database_username}:{database_user_password}@localhost/{database_name} \
  --owner-connection postgres://postgres:{postgress_password}@localhost/{database_name} \
  --schema public \
  --host 0.0.0.0

Documentation: CLI Usage: https://www.graphile.org/postgraphile/usage-cli/

Note: By default only localhost works but the --host 0.0.0.0 argument enables access from outside the server.

Note: sudo tcpdump port 5000 can be used to debug network issues to determine if traffic is hitting the server.

Verify Server is Working:

curl http://{vm_ip_address}:5000/graphiql

Disconnect Graphile execution from SSH window:

# Press <ctrl+z>
bg
disown -h
@benjie
Copy link
Member

benjie commented Sep 15, 2020

Thanks for this contribution @davihar! I've edited the text of your issue to improve formatting, but I don't fully understand the very beginning of this:

Screenshot_20200915_121355

What is Launchpad Terminal - are those things you need to press in a GUI? Are they command line utilities? Where do you find them? I have zero familiarity with Azure.

I think with a little more work this could be an excellent guide in the docs, are you interested in helping it reach this goal?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants