diff options
author | Joel Kronqvist <work.joelkronqvist@pm.me> | 2022-05-13 16:46:13 +0300 |
---|---|---|
committer | Joel Kronqvist <work.joelkronqvist@pm.me> | 2022-05-13 16:46:13 +0300 |
commit | 98a7a9947828514372d873b88fcdcdf44a358dd3 (patch) | |
tree | 53aef1f6e72087e40e8843c4684332424adfc7e7 | |
parent | 080c5819d87b933816d724a83f3bf4f1686770a7 (diff) | |
parent | b05d15e4e2771b31881fe8f0cf4c1deb8a2f4b58 (diff) | |
download | LYLLRuoka-98a7a9947828514372d873b88fcdcdf44a358dd3.tar.gz LYLLRuoka-98a7a9947828514372d873b88fcdcdf44a358dd3.zip |
Merge branch 'development'
-rw-r--r-- | README.md | 21 | ||||
-rwxr-xr-x | init.sh | 10 | ||||
-rw-r--r-- | server.js | 37 |
3 files changed, 35 insertions, 33 deletions
@@ -2,7 +2,7 @@ Follow these steps to install everything required for the project to run. ## Install the FoodJS repository -Just clone it from github. If you want the server to be able to update itself automatically without modifying `init.sh`, you will have to do this in your home folder. +Just clone it from github. ``` git clone "https://github.com/JoelHMikael/FoodJS.git" ``` @@ -142,19 +142,14 @@ INSERT INTO devs (name, description, contact) VALUES ('[name]', '[description]', > Insert the values in the quotation marks, don't change the text before the `VALUES` keyword. # Automatic server code updates -You can make the server update itself from github. To make this work, move `~/FoodJS/init.sh` to `~/init.sh`: -``` -mv ~/FoodJS/init.sh ~/init.sh -``` -> Note also that `init.sh` will update the server to `~/FoodJS`. If you want to keep the server somewhere elsewhere, you will have to modify the script a little bit. -This script should run at reboot, so next up you will have to set up some cronjobs: +You can make the server update itself from github. The code that updates everything is in the FoodJS folder (top-level of repository) in the file `init.sh`. It should run at reboot and it should have the environment variable PATH_TO_LYLLRUOKA set pointing to the FoodJS folder **without** a trailing backslash. -To your crontab: -``` -@reboot ~/init.sh -``` -To the crontab of **root** (you may have to update the shutdown path): +Add to **roots** crontab (run `sudo crontab -e`): ``` +@reboot PATH_TO_LYLLRUOKA=[the path] [the path]/init.sh +# For example: +# @reboot PATH_TO_LYLLRUOKA='/home/foobar/FoodJS' /home/foobar/FoodJS/init.sh + 0 0 * * 7 /sbin/shutdown -r ``` -If you need to troubleshoot the initialization, you can find both normal and error logs in /tmp/slogs (text file)
\ No newline at end of file +If you need to troubleshoot the initialization, you can find both normal and error logs in /tmp/slogs (text file) @@ -4,10 +4,8 @@ exec 2>>/tmp/slogs echo | date echo "Init running" -cd ~ - echo "Removing old packages..." -rm -rf ./FoodJS +rm -rf $PATH_TO_LYLLRUOKA echo "Waiting for connection..." while [ ! "$(ping 'www.github.com' -c 1)" ] @@ -15,9 +13,11 @@ do sleep 5 done +cd "${PATH_TO_LYLLRUOKA%%FoodJS}" + echo "Cloning new packages..." git clone "https://github.com/JoelHMikael/FoodJS.git" +cd $PATH_TO_LYLLRUOKA echo "Starting server..." -cd ~/FoodJS -node ./server.js +node server.js @@ -1,5 +1,6 @@ //const http = require("http"); const https = require("https"); +const http = require("http"); const url = require("url"); const food = require("./food.js"); const SQL_DBS = require("./database.js"); @@ -96,34 +97,40 @@ async function init() res.end(); } - // start server - const runningServer = https.createServer(httpsOpts, server).listen(8080); + // start servers + const httpsServer = https.createServer(httpsOpts, server).listen(443); + const httpServer = http.createServer(server).listen(80); // stop server - async function closeServer() { + async function closeServers() { console.log("Updating stats to DB...") const uptime = Math.ceil((((new Date()).getTime() - startDate.getTime()) / 1000) / (24 * 60 * 60)); const monthOfStart = `${startDate.getMonth() + 1}`.padStart(2, "0"); const monthDayOfStart = `${startDate.getDate()}`.padStart(2, "0"); - await SQLDB.query("INSERT INTO stats VALUES (?, ?, ?, ?)", [ - `${startDate.getFullYear()}-${monthOfStart}-${monthDayOfStart}`, - uptime, - visitorCount, - Math.round(visitorCount / uptime) - ]); + try { + await SQLDB.query("INSERT INTO stats VALUES (?, ?, ?, ?)", [ + `${startDate.getFullYear()}-${monthOfStart}-${monthDayOfStart}`, + uptime, + visitorCount, + Math.round(visitorCount / uptime) + ]); + } catch(e) { + console.log(`\nERROR! Probably because updating the statistics several times a day is not supported, at least yet. Here's the error:\n${e}\n`); + } console.log("Done. Shutting down..."); await SQLDB.close(); - console.log("MySQL closed"); - runningServer.close(); - console.log("Server shut down"); + console.log("MySQL connection closed"); + httpsServer.close(); + httpServer.close(); + console.log("Servers shut down"); console.log("Process exiting..."); process.exit(0); } - process.on("SIGINT", closeServer); - process.on("SIGQUIT", closeServer); - process.on("SIGTERM", closeServer); + process.on("SIGINT", closeServers); + process.on("SIGQUIT", closeServers); + process.on("SIGTERM", closeServers); } |