mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-08 18:05:32 +00:00
117 lines
4.5 KiB
Markdown
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
|
|
```
|