graphile / graphile/graphile.github.io

Document How to Run in Azure VM

Abierto
#241 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
SCSS
Estrellas
27
Forks
126
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

### 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
```

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

No se nombra ningún archivo de documentación de destino. Empieza por encontrar la documentación existente del proyecto sobre deployment o hosting y, a continuación, compara sus convenciones con los pasos de Azure VM de este issue. Se considera terminado cuando una guía mantenible de Azure VM cubre PostgreSQL, el inicio de PostGraphile, el acceso externo, la verificación y la desconexión del proceso.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
azure, node.js, postgresql, shell, ubuntu
Área
cloud, databases, documentation, infrastructure
Tipo de issue
Documentación
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.