Tool for managing a simple multi-site PHP web hosting environment. Meant to be used on a stack built with cfn-simple-webhost.
Download the tarball and unpack it to a directory. You can also build it like this:
shards install
crystal build --release -o wsman src/cli.cr
You might want to statically build it in some cases, for example when you're building it on Arch, but shipping it to Ubuntu bionic, which has older shared libraries:
With podman:
# Build container
podman build --tag=wsman-build .
# Install dependencies
podman run --rm -it -v $PWD:/app -w /app wsman-build shards install
# Build static binary
podman run --rm -it -v $PWD:/app -w /app wsman-build crystal build --static --release -o wsman src/cli.cr
# Run ameba - static code analysis
podman run --rm -it -v $PWD:/app -w /app wsman-build bin/ameba
or with docker:
# Build container
docker build --tag=wsman-build .
# Install dependencies
docker run -u $(id -u):$(id -g) --rm -it -v $PWD:/app -w /app wsman-build shards install
# Build static binary
docker run -u $(id -u):$(id -g) --rm -it -v $PWD:/app -w /app wsman-build crystal build --static --release -o wsman src/cli.cr
# Run ameba - static code analysis
docker run -u $(id -u):$(id -g) --rm -it -v $PWD:/app -w /app wsman-build bin/ameba
wsman [tool] [command] [arguments]
wsman site setup \<sitename\>
Generate site configurations for the given site.
Name | Definition |
---|---|
--skip-solr | Optional - Skip Solr core install, even if it's configured. (default:false) |
wsman site setup_all
Generate site configurations.
wsman site setup_solr \<sitename\>
Generate site's solr configurations for the given site.
wsman ci zipinstall -s \<sitename\> -z \<archive\>
Installs a zipped site artifact to the webroot.
Name | Definition |
---|---|
-f, --force | Optional - Overwrite target directory. (default:false) |
-s SITE, --site=SITE | Required - Main hostname of the site. This is also used as the directory name. |
-z ZIP, --zip ZIP | Required - Path to the archive. |
wsman ci cleanup -s \<sitename\>
Cleans up a site from the server.
wsman ci cleanup_solr -s \<sitename\>
Cleans up a site's solr core from the server.
Name | Definition |
---|---|
-s SITE, --site=SITE | Required - Main hostname of the site. This is also used as the directory name. |
The tool iterates over all directories in web_root_dir
(/srv/www
by default) and performs the following:
- Generates nginx configuration for each site from internal (see
fixtures/templates
) or site-specific template (<SITE_DIR>/templates
). Supports sites with and without TLS. - Generates
docker-compose.yml
for each site from internal or site-specific template. The purpose of this is to run each site's php-fpm daemon in a separate docker container. - Generates
awslogs
configuration for each site, so access and error logs are streamed to CloudWatch. - Generates a systemd service for the docker-based php-fpm daemon for each site.
- Creates MySQL database, user and password for each site
- Generates site-specific environment files, which are picked up by the systemd services and passed on to the PHP environment running in docker.
- Proper documentation. The tool is quite complex so currently the only way to figure out stuff is to read the source code.
- Design proper CLI interface.
- Clean up the code because it's quite messy.
- Write tests.