graphile / graphile/graphile.github.io
Document How to Run in Azure VM
- Dominant language
- SCSS
- Stars
- 27
- Forks
- 126
- PR merge metrics
- No merged PRs in 30d
Description
### 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
```bash
ssh {vm_username}@{ip_address}
```
### Create database user
```bash
sudo adduser {database_username}
```
### Install PostgreSQL
```bash
sudo apt-get update
sudo apt-get install postgresql-12
```
```sql
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
```
```bash
su {database_username}
psql -d {database_name}
```
```sql
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:
```bash
sudo su postgres
psql {database_name}
```
```sql
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
```bash
sudo apt install npm
```
### Install Yarn
```bash
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
```bash
yarn add postgraphile
```
### Install Optional Plugins
```bash
yarn add @graphile-contrib/pg-simplify-inflector
```
### Start Graphile with:
```bash
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:
```bash
curl http://{vm_ip_address}:5000/graphiql
```
### Disconnect Graphile execution from SSH window:
```bash
# Press
bg
disown -h
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.