Labyrinth ========= ## About *Labyrinth* is a web API to navigate through a maze. # How to run ## Install Install `typescript` and `tslint` globally, if you haven't aready. ```bash npm install -g typescript tslint ``` Local dependencies: ```bash npm install ``` ## Build Compile TypeScript to JavaScript. ```bash tsc ``` Executing this in the application's root folder will apply the settings from `tsconfig.json`. ## Run Run the application. ```bash node dist/app.js ``` ## Execute tests ```bash npm test ``` # Deploy ## Prepare app 1. Copy all js files from the *dist* folder to ther server in */var/www/labyrinth* 2. Copy *package.json* and *package-lock.json* too. 3. Run `npm install` to get the depencencies. 4. Change the owner to *www-data* ## Apache Add the following part to the available site in apache to route requests. ``` ProxyPass /labyrinth http://localhost:8085 ProxyPassReverse /labyrinth http://localhost:8085 ``` This routing is purely internal. Then after each change reload apache to let the changes take effect. ```bash service apache2 reload ``` ## Run service with SystemD Create the following */etc/systemd/system/labyrinth.service*. ``` [Unit] Description=A good description [Service] PIDFile=/tmp/labyrinth.pid User=www-data Group=www-data Restart=always KillSignal=SIGQUIT WorkingDirectory=/var/www/labyrinth/ ExecStart=/usr/bin/node /var/www/labyrinth/app.js [Install] WantedBy=multi-user.target ``` After each change run ```bash systemctl enable labyrinth.service ``` You can start/stop/show status with ```bash systemctl start/stop/status labyrinth.service ```