spiegel-keyman/docs/websites/README.md
2023-01-20 13:42:07 +07:00

117 lines
4.5 KiB
Markdown

# How to Set Up a Local Web Server for the Keyman Web Pages
Currently, most of the Keyman websites are running via IIS. Refer to the Keyman [wiki](https://github.com/keymanapp/keyman/wiki/How-to-set-up-a-local-web-server-for-the-Keyman-web-pages) for setting that up on Windows 10.
To make IIS redirects compatible with the Docker sites below, see
https://github.com/keymanapp/keyman.com/issues/337#issuecomment-1336339387
As the websites get migrated to Apache via Docker, follow the installation steps below:
## Pre-requisite Installs
* [Docker Desktop](https://www.docker.com/products/docker-desktop/)
On Windows, Docker will need either:
* Hyper-V or
* WSL 2.0 - Install with this guide:
https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-containers
* WSL will then need a Linux image (e.g. Ubuntu app) from the Microsoft Store
#### Other Docker Notes
Docker tends to throttle Docker image downloads, so some developer offices may want to set up a proxy server. If the proxy server is set up, carefully edit the JSON file per in Docker Settings -> Docker Engine https://docs.docker.com/registry/recipes/mirror/#configure-the-docker-daemon and click 'Apply & Restart'. Note the example (lingnet) is for running inside the Linguistics Institute (Chiang Mai)
```
"registry-mirrors": ["https://docker.io.registry.lingnet/"],
"insecure-registries" : [
"docker.io.registry.lingnet",
"registry.lingnet"
]
```
## Builder BASH Script Actions
#### Stop the Docker container
1. Run `./build.sh stop`
This stops the Docker container for the site.
#### Build the Docker image
1. Run `./build.sh build`.
This downloads and builds the Docker images needed for the site.
#### Configure
1. Run `./build.sh configure`.
This step is currently not needed
#### Start the Docker container
1. Run `./build.sh start`.
This maps the local directory to the the Docker image.
Then, it creates a link of the PHP dependencies in Docker image from /var/www/vendor/ to /var/www/html/vendor.
The link file also appears locally.
After this, you can access the website at the following ports:
| Website | URL |
|--------------|-----------------------|
|help.keyman | http://localhost:8055 |
|keymanweb.com | http://localhost:8057 |
#### Remove the Docker container and image
1. Run `./build.sh clean`.
#### Running tests
Checks for broken links
1. Run `./build.sh test`
---------
## Kubernetes Deployment
For production, the websites are deployed with Kubernetes.
### How to run help.keyman.com locally with Docker Desktop's Kubernetes singlenode cluster
For testing Kubernetes deployment, there are yaml files under the corresponding website's repo: `/resources/kubectl`, that cover local developer testing.
### Pre-requisites
On the host machine, install [Docker](https://docs.docker.com/get-docker/), then enable Kubernetes in the settings. Ensure you have built a help-keyman-app Docker image, and either tag it `docker.dallas.languagetechnology.org/keyman/help-keyman-app` or modify the `app-php` containers `image:` value to match you local copy's name.
### Deploying to a desktop cluster
To deploy the dev version to the cluster do the following:
1. Ensure your `kubectl` context is set to `docker-desktop`, though the Docker Desktop systray icon or by running:
```bash
$> kubectl config use-context docker-desktop
```
2. Create a keyman namespace if it does not already exist:
```bash
$> kubectl create ns keyman
```
3. Apply the configs for the resources and start the pod:
```bash
$> kubectl --namespace keyman apply \
-f resources/kubectl/help-kubectl-dev.yaml \
-f resources/kubectl/help-kubectl.yaml
```
### Testing the site and `/api/deploy` webhook endpoint
The site can be reached on http://localhost:30080/ via web browser, and the deploy api is on http://localhost:30900/api/deploy, and can be activated like so:
```bash
$> curl -v --request POST \
-H "Content-Type: application/json" \
-H "X-Hub-Signature-256: sha256=49af8531106a369bfee369f91dadec597e8ea3992ec2802bbe655be0ece17f15" \
--data '{"action":"push","ref":"refs/heads/staging"}' \
http://localhost:30900/api/deploy
```
This simulates enough of a GitHub webhook push event to pass validation on the responder.
### Clean up after testing
To remove the k8s pod and resources, and delete everything do:
```bash
$> kubectl --namespace=keyman delete {pod,cm,svc,secret,pvc}/help-keyman-com
```
Or just delete the pod and keep the resources for further testing:
```bash
$> kubectl --namespace=keyman delete pod/help-keyman-com
```