]> git.cworth.org Git - empires-server/blobdiff - README
Add a README file for the lmno-server repository
[empires-server] / README
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..d6b1de1
--- /dev/null
+++ b/README
@@ -0,0 +1,94 @@
+Server-side implementation for LMNO games.
+
+This repository contains the server-side implementation for a number
+of games that are hosted at the https://lmno.games/ website.
+
+Deployment
+----------
+
+The initial deployment of the LMNO server requires configuring a web
+server. Instructions are provided below for any web server, along with
+specific configuration examples for Apache. If you are using a
+non-Apache server (such as nginx) the general concepts will still
+apply, but the syntax of the configuration will be different.
+
+First, you need to configure your web server to serve the static
+content of the LMNO implementation. This static content is actually in
+a separate git repository (lmno.games) which you should be able to
+find near where you found the current repository (lmno-server).
+
+So, first, copy the static files from the lmno.games repository to
+your server (there's a "make deploy" target in the lmno.games
+repository's Makefile that can help with this).
+
+Then, configure your web server to serve the content that you have
+deployed. Specifically, you want the server to match the path from the
+request to the local filesystem and serve the local file whenever
+there is a match. The syntax for this with Apache is as follows
+(substitute the path you chose if anything other than
+"/srv/lmno.games/www"):
+
+        DocumentRoot /srv/lmno.games/www
+        <Directory /srv/lmno.games/www>
+                Options Indexes
+        </Directory>
+
+       <Location />
+               Require all granted
+       </Location>
+
+       RewriteEngine on
+
+       # Any static files (or directories) that exist within the
+       # DocumentRoot are served directly by Apache as a first priority.
+       RewriteCond %{DOCUMENT_ROOT}/$1 -f [OR]
+       RewriteCond %{DOCUMENT_ROOT}/$1 -d
+       RewriteRule (.*) - [L]
+
+Note: The above configuration requires both the "rewrite" and "proxy"
+and "proxy_http" Apache modules to be installed and enabled. On some
+operating systems this can be achieved with the following commands:
+
+       sudo a2enmod rewrite
+       sudo a2enmod proxy
+       sudo a2enmod proxy_http
+
+Also, you will need to configure Apache to proxy to the node server
+any requests that _don't_ match a static file. Assuming you're running
+the LMNO node server on port 4000 (which the code currently defaults
+to) you would add the following Apache configuration just after the
+block above:
+
+       # Otherwise, for any path that does not exist in the filesystem
+       # we proxy to the dynamic web app to let it serve the resource.
+       RewriteRule ^/(.*)$ http://localhost:4000/$1 [P]
+       ProxyPassReverse / http://localhost:4000
+
+And, of course, after changing Apache configuration, you'll need to
+restart the Apache service.
+
+Finally, you'll need to arrange to start the node process on port 4000
+that will serve the dynamic LMNO content. This is as simple as
+running:
+
+       node lmno
+
+Which must be run from the directory containing the lmno.js file. And
+of course, this could be wired into an lmno service to enable this to
+be started each time the machine boots.
+
+Once this configuration is complete and working, any updates to the
+code will simply requiring terminating the node process and then
+starting it up again.
+
+Development
+-----------
+
+For testing changes to the implementation locally, we recommend doing
+the exact same deployment described above on a local machine, (that
+is, configure a web server to serve static content from the lmno.games
+repository and to proxy dynamic content to the node process). You
+might simply configure and access this at http://localhost/ if you're
+not already using a local web server for any other purpose. Otherwise,
+configure your webserver with whatever hostname and top-level path you
+prefer.