From f752df4bcaff914b4d0c7aa64a8471a6593e847b Mon Sep 17 00:00:00 2001 From: ntr Date: Mon, 15 Jul 2019 20:38:04 +1000 Subject: [PATCH 1/7] scripts --- Makefile | 12 ++- bin/clean.sh | 10 ++- bin/client.sh | 21 +++++ bin/install.sh | 80 +++++++++++++++++++ bin/{build.sh => server.sh} | 35 ++++---- client/package.json | 4 +- .../sites-available/mnml.gg.DEV.nginx.conf | 2 +- .../mnml.gg.PRODUCTION.nginx.conf | 53 ++++++------ etc/systemd/system/mnml.service | 8 +- server/src/main.rs | 4 +- 10 files changed, 176 insertions(+), 53 deletions(-) create mode 100755 bin/client.sh create mode 100755 bin/install.sh rename bin/{build.sh => server.sh} (72%) diff --git a/Makefile b/Makefile index 14271b1a..026a39d9 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ SHELL:=/bin/bash -all: mnml +all: install deps: ./bin/deps.sh @@ -8,8 +8,14 @@ deps: package: ./bin/package.sh -mnml: - ./bin/build.sh +install: + ./bin/install.sh + +server: + ./bin/server.sh + +client: + ./bin/client.sh clean: ./bin/clean.sh diff --git a/bin/clean.sh b/bin/clean.sh index 2ad64a89..c8f9bb95 100755 --- a/bin/clean.sh +++ b/bin/clean.sh @@ -4,5 +4,11 @@ DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) MNML_PATH=$(realpath "$DIR/../") -rm $MNML_PATH/etc/mnml.env -rm $MNML_PATH/server/.env +sudo rm -Rf /usr/local/mnml/ +sudo rm -Rf /var/lib/mnml/client +sudo rm -Rf /var/lib/mnml/public +sudo rm -Rf /etc/mnml/ +sudo rm -Rf /var/log/mnml + +sudo -u postgres dropdb mnml + diff --git a/bin/client.sh b/bin/client.sh new file mode 100755 index 00000000..0863ad08 --- /dev/null +++ b/bin/client.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# bless you chris and andy <3 +DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +MNML_PATH=$(realpath "$DIR/../") + +VERSION=$(<"$MNML_PATH/VERSION") + +echo "Building client version $VERSION" + +cd $MNML_PATH/client +rm -f "/var/lib/mnml/$VERSION" +rm -rf dist +npm run build + +echo "copying build to /var/lib/mnml/$VERSION" +cp -r dist "/var/lib/mnml/client/$VERSION" +echo "linking current version" +ln -nfs "/var/lib/mnml/client/$VERSION" /var/lib/mnml/public/current + +sudo service nginx restart diff --git a/bin/install.sh b/bin/install.sh new file mode 100755 index 00000000..8b98ee6f --- /dev/null +++ b/bin/install.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +# bless you chris and andy <3 +DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +MNML_PATH=$(realpath "$DIR/../") + +MNML_CONF="/etc/mnml/mnml.conf" + +if [ ! -f $MNML_CONF ]; then + echo "-----------------------------------------------" + echo "creating an env file in $MNML_CONF" + echo "-----------------------------------------------" + + sudo useradd mnml -U --password $(openssl rand -hex 16) + CURRENT_USER=$(whoami) + sudo usermod -aG mnml $CURRENT_USER + sudo mkdir -p /etc/mnml/ + echo "export MNML_USER=mnml" | sudo tee -a $MNML_CONF + echo "export MNML_PG_PASSWORD=\"$(openssl rand -hex 16)\"" | sudo tee -a $MNML_CONF + echo "export MNML_PG_HOST=\"localhost\"" | sudo tee -a $MNML_CONF + sudo chown -R mnml:mnml /etc/mnml/ +fi + +source $MNML_CONF + +# DIRECTORY SETUP + +# /var/lib/mnml +# contains img data, client builds +sudo mkdir -p /var/lib/mnml +sudo mkdir -p /var/lib/mnml/public/imgs +sudo mkdir -p /var/lib/mnml/client +sudo mkdir -p /var/lib/mnml/data + +sudo chmod -R g+w /var/lib/mnml +sudo chmod -R g+s /var/lib/mnml +sudo setfacl -d -m group:mnml:rwx /var/lib/mnml +sudo chown -R $MNML_USER:$MNML_USER /var/lib/mnml + +# /var/log/mnml +sudo mkdir -p /var/log/mnml +sudo chmod g+w /var/log/mnml +sudo chmod g+s /var/log/mnml +sudo setfacl -d -m group:mnml:rwx /var/log/mnml +sudo chown -R $MNML_USER:$MNML_USER /var/log/mnml + +# /usr/local/mnml +sudo mkdir -p /usr/local/mnml +sudo mkdir -p /usr/local/mnml + +sudo setfacl -d -m group:mnml:rwx /usr/local/mnml +sudo chmod -R g+w /usr/local/mnml +sudo chmod -R g+s /usr/local/mnml +sudo chown -R $MNML_USER:$MNML_USER /usr/local/mnml + +# SERVICES +sudo mkdir -p /usr/local/systemd/system/ +sudo cp $MNML_PATH/etc/systemd/system/mnml.service /usr/local/systemd/system/ + +# POSTGRES SETUP +sudo -u postgres createdb mnml +sudo -u postgres createuser --encrypted mnml + +echo "DATABASE_URL=postgres://mnml:$MNML_PG_PASSWORD@$MNML_PG_HOST/mnml" | sudo tee -a /etc/mnml/server.conf +sudo -u postgres psql -c "alter user mnml with encrypted password '$MNML_PG_PASSWORD';" + +cd $MNML_PATH/ops && npm run migrate + +# NGINX +if [ ! -f $MNML_PATH/etc/nginx/sites-available/mnml.gg.nginx.conf ]; then + echo "-----------------------------------------------" + echo "using development nginx config" + echo "$MNML_PATH/etc/nginx/sites-available/mnml.gg.nginx.conf" + echo "-----------------------------------------------" + + cp $MNML_PATH/etc/nginx/sites-available/mnml.gg.DEV.nginx.conf $MNML_PATH/etc/nginx/sites-available/mnml.gg.nginx.conf +fi + +sudo cp $MNML_PATH/etc/nginx/sites-available/mnml.gg.nginx.conf /etc/nginx/sites-available +sudo ln -nfs /etc/nginx/sites-available/mnml.gg.nginx.conf /etc/nginx/sites-enabled/mnml.gg.nginx.conf diff --git a/bin/build.sh b/bin/server.sh similarity index 72% rename from bin/build.sh rename to bin/server.sh index 9615431d..9dc1e06f 100755 --- a/bin/build.sh +++ b/bin/server.sh @@ -4,38 +4,46 @@ DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) MNML_PATH=$(realpath "$DIR/../") -if [ ! -f $MNML_PATH/etc/mnml.env ]; then +MNML_CONF="/etc/mnml/mnml.conf" + +if [ ! -f $MNML_CONF ]; then echo "-----------------------------------------------" - echo "creating an env file in $MNML_PATH/etc/mnml.env" + echo "creating an env file in $MNML_CONF" echo "-----------------------------------------------" - echo "export MNML_USER=\"$(whoami)\"" >> $MNML_PATH/etc/mnml.env - echo "export MNML_PG_PASSWORD=\"$(openssl rand -hex 16)\"" >> $MNML_PATH/etc/mnml.env - echo "export MNML_PG_HOST=\"localhost\"" >> $MNML_PATH/etc/mnml.env + sudo mkdir -p /etc/mnml/ + sudo chown mnml: + echo "export MNML_USER=mnml" >> $MNML_CONF + echo "export MNML_PG_PASSWORD=\"$(openssl rand -hex 16)\"" >> $MNML_CONF + echo "export MNML_PG_HOST=\"localhost\"" >> $MNML_CONF fi -source $MNML_PATH/etc/mnml.env +source $MNML_CONF + +sudo adduser $MNML_USER # DIRECTORY SETUP -sudo mkdir -p /opt/mnml -sudo chown $MNML_USER: /opt/mnml +# /var/lib/mnml +# contains img data, client builds sudo mkdir -p /var/lib/mnml -sudo chown $MNML_USER: /var/lib/mnml -mkdir -p /var/lib/mnml/public mkdir -p /var/lib/mnml/public/imgs mkdir -p /var/lib/mnml/data +sudo chown -R $MNML_USER: /var/lib/mnml +# /var/log/mnml sudo mkdir -p /var/log/mnml -sudo chown $MNML_USER: /var/log/mnml +sudo chown -R $MNML_USER: /var/log/mnml -sudo ln -nfs $MNML_PATH/current /opt/mnml +# /usr/local/mnml +sudo mkdir -p /usr/local/mnml +sudo mkdir -p /usr/local/mnml +sudo chown -R $MNML_USER: /usr/local/mnml # SERVICES sudo cp $MNML_PATH/etc/systemd/system/mnml.service /etc/systemd/system # POSTGRES SETUP -sudo -u postgres dropdb mnml sudo -u postgres createdb mnml sudo -u postgres createuser --encrypted mnml @@ -46,7 +54,6 @@ sudo -u postgres psql -c "alter user mnml with encrypted password '$MNML_PG_PASS cd $MNML_PATH/ops && npm run migrate # RUST SETUP -echo "DATABASE_URL=postgres://mnml:$MNML_PG_PASSWORD@$MNML_PG_HOST/mnml" > $MNML_PATH/server/.env # cargo build # cp -r $MNML_PATH/server/target/release /opt/mnml/bin diff --git a/client/package.json b/client/package.json index 4f9327d6..2182bf77 100644 --- a/client/package.json +++ b/client/package.json @@ -4,9 +4,9 @@ "description": "", "main": "index.js", "scripts": { - "start": "parcel watch index.html --out-dir /var/lib/mnml/public/dist", + "start": "parcel watch index.html --out-dir /var/lib/mnml/public/current", "anims": "parcel animations.html --host 0.0.0.0 --port 40080 --no-source-maps", - "build": "parcel build index.html --out-dir /var/lib/mnml/public/dist", + "build": "parcel build index.html", "scss": "node-sass --watch assets/scss -o assets/styles", "lint": "eslint --fix --ext .jsx src/", "test": "echo \"Error: no test specified\" && exit 1" diff --git a/etc/nginx/sites-available/mnml.gg.DEV.nginx.conf b/etc/nginx/sites-available/mnml.gg.DEV.nginx.conf index 19fe416b..dc7c219d 100644 --- a/etc/nginx/sites-available/mnml.gg.DEV.nginx.conf +++ b/etc/nginx/sites-available/mnml.gg.DEV.nginx.conf @@ -17,7 +17,7 @@ map $http_upgrade $connection_upgrade { # DEV server { location / { - root /var/lib/mnml/public/dist; + root /var/lib/mnml/public/current; index index.html; try_files $uri $uri/ index.html; } diff --git a/etc/nginx/sites-available/mnml.gg.PRODUCTION.nginx.conf b/etc/nginx/sites-available/mnml.gg.PRODUCTION.nginx.conf index f80ca78e..c0d87358 100644 --- a/etc/nginx/sites-available/mnml.gg.PRODUCTION.nginx.conf +++ b/etc/nginx/sites-available/mnml.gg.PRODUCTION.nginx.conf @@ -1,48 +1,51 @@ -error_log /var/log/mnml/nginx.error.log; -access_log /var/log/mnml/nginx.access.log; +error_log /var/log/mnml/nginx.log debug; -upstream mnml { +upstream mnml_http { server 127.0.0.1:40000; } +upstream mnml_ws { + server 127.0.0.1:40055; +} + + map $http_upgrade $connection_upgrade { default upgrade; '' close; } -# PRODUCTION +# DEV server { - root /var/lib/mnml/public/; - index index.html; - - server_name mnml.gg; # managed by Certbot - - if ($host = minimal.gg) { - return 301 https://mnml.gg$request_uri; - } # managed by Certbot - - if ($host = cryps.gg) { - return 301 https://mnml.gg$request_uri; - } # managed by Certbot - location / { + root /var/lib/mnml/public/current; + index index.html; + try_files $uri $uri/ index.html; + } + + location /imgs/ { + root /var/lib/mnml/public/; try_files $uri $uri/ =404; } + location /api/ws { + proxy_pass http://mnml_ws; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + proxy_read_timeout 600s; + } + + location /api/ { + proxy_pass http://mnml_http; + proxy_read_timeout 600s; + } + listen [::]:443 ssl ipv6only=on; # managed by Certbot listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/mnml.gg/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/mnml.gg/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot - - location /ws { - proxy_pass http://mnml; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $connection_upgrade; - proxy_read_timeout 600s; - } } # http -> https diff --git a/etc/systemd/system/mnml.service b/etc/systemd/system/mnml.service index f5f66fd2..1b60ed47 100644 --- a/etc/systemd/system/mnml.service +++ b/etc/systemd/system/mnml.service @@ -1,10 +1,10 @@ [Unit] -Description=OpenBSD Secure Shell server -After=network.target auditd.service -ConditionPathExists=!/etc/ssh/sshd_not_to_be_run +Description=mnml game server +After=postgresql +User=mnml [Service] -ExecStart=/opt/mnml/bin/mnml +ExecStart=/usr/local/mnml/bin/mnml KillMode=process Restart=on-failure RestartPreventExitStatus=255 diff --git a/server/src/main.rs b/server/src/main.rs index 47d2f8d1..22f0bf2c 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -52,7 +52,7 @@ mod ws; use std::thread::{sleep, spawn}; use std::time::{Duration}; -use dotenv::dotenv; +use std::path::{Path}; use pubsub::pg_listen; use warden::warden; @@ -78,7 +78,7 @@ fn setup_logger() -> Result<(), fern::InitError> { } fn main() { - dotenv().ok(); + dotenv::from_path(Path::new("/etc/mnml/server.conf")).ok(); setup_logger().unwrap(); let pool = pg::create_pool(); From b3c2093884d24ca8bb6749eef46c68c4803b1e83 Mon Sep 17 00:00:00 2001 From: ntr Date: Mon, 15 Jul 2019 20:51:35 +1000 Subject: [PATCH 2/7] server script --- bin/server.sh | 73 +++++---------------------------------------------- 1 file changed, 6 insertions(+), 67 deletions(-) diff --git a/bin/server.sh b/bin/server.sh index 9dc1e06f..6a015ac7 100755 --- a/bin/server.sh +++ b/bin/server.sh @@ -4,71 +4,10 @@ DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) MNML_PATH=$(realpath "$DIR/../") -MNML_CONF="/etc/mnml/mnml.conf" +cd $MNML_PATH/server +echo "building /usr/local/mnml/bin/$VERSION" +cargo build --release +cp -r target/release/mnml /usr/local/mnml/bin/$VERSION -if [ ! -f $MNML_CONF ]; then - echo "-----------------------------------------------" - echo "creating an env file in $MNML_CONF" - echo "-----------------------------------------------" - - sudo mkdir -p /etc/mnml/ - sudo chown mnml: - echo "export MNML_USER=mnml" >> $MNML_CONF - echo "export MNML_PG_PASSWORD=\"$(openssl rand -hex 16)\"" >> $MNML_CONF - echo "export MNML_PG_HOST=\"localhost\"" >> $MNML_CONF -fi - -source $MNML_CONF - -sudo adduser $MNML_USER - -# DIRECTORY SETUP - -# /var/lib/mnml -# contains img data, client builds -sudo mkdir -p /var/lib/mnml -mkdir -p /var/lib/mnml/public/imgs -mkdir -p /var/lib/mnml/data -sudo chown -R $MNML_USER: /var/lib/mnml - -# /var/log/mnml -sudo mkdir -p /var/log/mnml -sudo chown -R $MNML_USER: /var/log/mnml - -# /usr/local/mnml -sudo mkdir -p /usr/local/mnml -sudo mkdir -p /usr/local/mnml -sudo chown -R $MNML_USER: /usr/local/mnml - -# SERVICES -sudo cp $MNML_PATH/etc/systemd/system/mnml.service /etc/systemd/system - -# POSTGRES SETUP -sudo -u postgres createdb mnml -sudo -u postgres createuser --encrypted mnml - -echo "DATABASE_URL=postgres://mnml:$MNML_PG_PASSWORD@$MNML_PG_HOST/mnml" > $MNML_PATH/server/.env - -sudo -u postgres psql -c "alter user mnml with encrypted password '$MNML_PG_PASSWORD';" - -cd $MNML_PATH/ops && npm run migrate - -# RUST SETUP -# cargo build -# cp -r $MNML_PATH/server/target/release /opt/mnml/bin - -# NGINX -if [ ! -f $MNML_PATH/etc/nginx/sites-available/mnml.gg.nginx.conf ]; then - echo "-----------------------------------------------" - echo "using development nginx config" - echo "$MNML_PATH/etc/nginx/sites-available/mnml.gg.nginx.conf" - echo "-----------------------------------------------" - - cp $MNML_PATH/etc/nginx/sites-available/mnml.gg.DEV.nginx.conf $MNML_PATH/etc/nginx/sites-available/mnml.gg.nginx.conf -fi - -sudo cp $MNML_PATH/etc/nginx/sites-available/mnml.gg.nginx.conf /etc/nginx/sites-available -sudo ln -nfs /etc/nginx/sites-available/mnml.gg.nginx.conf /etc/nginx/sites-enabled/mnml.gg.nginx.conf -# cd $MNML_PATH/client && npm run build - -sudo service nginx restart +echo "linking current version" +ln -nfs "/usr/local/mnml/bin/$VERSION" /usr/local/mnml/bin/mnml From 35a9e4171aa1ca0d968c1a05bb7d2af36cd40ac4 Mon Sep 17 00:00:00 2001 From: ntr Date: Mon, 15 Jul 2019 21:12:51 +1000 Subject: [PATCH 3/7] client changes --- bin/client.sh | 1 + bin/install.sh | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/bin/client.sh b/bin/client.sh index 0863ad08..af03aff3 100755 --- a/bin/client.sh +++ b/bin/client.sh @@ -11,6 +11,7 @@ echo "Building client version $VERSION" cd $MNML_PATH/client rm -f "/var/lib/mnml/$VERSION" rm -rf dist +npm i npm run build echo "copying build to /var/lib/mnml/$VERSION" diff --git a/bin/install.sh b/bin/install.sh index 8b98ee6f..58621eaf 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -28,6 +28,7 @@ source $MNML_CONF # /var/lib/mnml # contains img data, client builds sudo mkdir -p /var/lib/mnml +sudo mkdir -p /var/lib/mnml/src sudo mkdir -p /var/lib/mnml/public/imgs sudo mkdir -p /var/lib/mnml/client sudo mkdir -p /var/lib/mnml/data @@ -45,8 +46,7 @@ sudo setfacl -d -m group:mnml:rwx /var/log/mnml sudo chown -R $MNML_USER:$MNML_USER /var/log/mnml # /usr/local/mnml -sudo mkdir -p /usr/local/mnml -sudo mkdir -p /usr/local/mnml +sudo mkdir -p /usr/local/mnml/bin sudo setfacl -d -m group:mnml:rwx /usr/local/mnml sudo chmod -R g+w /usr/local/mnml From 95ffc0d2e926bc1ef5df9b2684f9f09aa50ebd8f Mon Sep 17 00:00:00 2001 From: ntr Date: Tue, 16 Jul 2019 14:05:54 +1000 Subject: [PATCH 4/7] build stuff --- Makefile | 9 +++++-- WORKLOG.md | 2 ++ bin/client.sh | 8 ------ bin/install.sh | 23 +++++----------- bin/package.sh | 27 ------------------- bin/server.sh | 7 ++--- client/assets/styles/styles.css | 8 +++--- .../mnml.gg.PRODUCTION.nginx.conf | 2 +- server/Cargo.toml | 4 +-- 9 files changed, 23 insertions(+), 67 deletions(-) delete mode 100755 bin/package.sh diff --git a/Makefile b/Makefile index 026a39d9..86988f96 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,17 @@ SHELL:=/bin/bash +.PHONY: all deps build deploy install server client clean + all: install deps: ./bin/deps.sh -package: - ./bin/package.sh +build: + ./bin/build.sh + +deploy: + ./bin/deploy.sh install: ./bin/install.sh diff --git a/WORKLOG.md b/WORKLOG.md index ea2872e5..d12a7d2b 100644 --- a/WORKLOG.md +++ b/WORKLOG.md @@ -27,6 +27,8 @@ # WORK WORK ## NOW +*OPS* + *$$$* * rename costs 1cr * invader set diff --git a/bin/client.sh b/bin/client.sh index af03aff3..2faac662 100755 --- a/bin/client.sh +++ b/bin/client.sh @@ -9,14 +9,6 @@ VERSION=$(<"$MNML_PATH/VERSION") echo "Building client version $VERSION" cd $MNML_PATH/client -rm -f "/var/lib/mnml/$VERSION" rm -rf dist npm i npm run build - -echo "copying build to /var/lib/mnml/$VERSION" -cp -r dist "/var/lib/mnml/client/$VERSION" -echo "linking current version" -ln -nfs "/var/lib/mnml/client/$VERSION" /var/lib/mnml/public/current - -sudo service nginx restart diff --git a/bin/install.sh b/bin/install.sh index 58621eaf..c0a17bd0 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -11,46 +11,35 @@ if [ ! -f $MNML_CONF ]; then echo "creating an env file in $MNML_CONF" echo "-----------------------------------------------" - sudo useradd mnml -U --password $(openssl rand -hex 16) - CURRENT_USER=$(whoami) - sudo usermod -aG mnml $CURRENT_USER sudo mkdir -p /etc/mnml/ - echo "export MNML_USER=mnml" | sudo tee -a $MNML_CONF + echo "export MNML_USER=$(whoami)" | sudo tee -a $MNML_CONF echo "export MNML_PG_PASSWORD=\"$(openssl rand -hex 16)\"" | sudo tee -a $MNML_CONF echo "export MNML_PG_HOST=\"localhost\"" | sudo tee -a $MNML_CONF - sudo chown -R mnml:mnml /etc/mnml/ fi source $MNML_CONF # DIRECTORY SETUP +sudo chown -R $MNML_USER:$MNML_USER /etc/mnml/ + # /var/lib/mnml -# contains img data, client builds +# contains img data, builds sudo mkdir -p /var/lib/mnml -sudo mkdir -p /var/lib/mnml/src sudo mkdir -p /var/lib/mnml/public/imgs sudo mkdir -p /var/lib/mnml/client sudo mkdir -p /var/lib/mnml/data -sudo chmod -R g+w /var/lib/mnml -sudo chmod -R g+s /var/lib/mnml -sudo setfacl -d -m group:mnml:rwx /var/lib/mnml sudo chown -R $MNML_USER:$MNML_USER /var/lib/mnml # /var/log/mnml sudo mkdir -p /var/log/mnml -sudo chmod g+w /var/log/mnml -sudo chmod g+s /var/log/mnml -sudo setfacl -d -m group:mnml:rwx /var/log/mnml sudo chown -R $MNML_USER:$MNML_USER /var/log/mnml # /usr/local/mnml sudo mkdir -p /usr/local/mnml/bin - -sudo setfacl -d -m group:mnml:rwx /usr/local/mnml -sudo chmod -R g+w /usr/local/mnml -sudo chmod -R g+s /usr/local/mnml +sudo mkdir -p /usr/local/mnml/build/client +sudo mkdir -p /usr/local/mnml/build/server sudo chown -R $MNML_USER:$MNML_USER /usr/local/mnml # SERVICES diff --git a/bin/package.sh b/bin/package.sh deleted file mode 100755 index 02960166..00000000 --- a/bin/package.sh +++ /dev/null @@ -1,27 +0,0 @@ -# bless you chris and andy <3 - -# DOES NOT WORK AT MOMENT - -DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) -MNML_PATH=$(realpath "$DIR/../") -VERSION=$(<"$MNML_PATH/VERSION") - -# copy this dir to the tmp build directory and build it -[[ -n "$BUILD_DIR" ]] || BUILD_DIR="/tmp/mnml/$VERSION" -[[ -n "$BUILD_PREFIX" ]] || BUILD_PREFIX="/opt/mnml" -[[ -n "$REPO_DIR" ]] || REPO_DIR="$HOME/mnml" - -rm -rf "$BUILD_DIR" && mkdir -p "$BUILD_DIR/$BUILD_PREFIX" && cd "$BUILD_DIR/$BUILD_PREFIX" - -( - rsync -a --delete --delete-excluded \ - --exclude=".git/" \ - --exclude=".gitignore" \ - --exclude="packaging" \ - "$REPO_DIR/" "$BUILD_DIR/$BUILD_PREFIX/" - - rsync -a --delete --delete-excluded "$DIR/postinstall" "$BUILD_DIR/$BUILD_PREFIX/" - - cd "$BUILD_DIR/$BUILD_PREFIX" && - make -) diff --git a/bin/server.sh b/bin/server.sh index 6a015ac7..2e92f73d 100755 --- a/bin/server.sh +++ b/bin/server.sh @@ -3,11 +3,8 @@ # bless you chris and andy <3 DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) MNML_PATH=$(realpath "$DIR/../") +VERSION=$(<"$MNML_PATH/VERSION") cd $MNML_PATH/server -echo "building /usr/local/mnml/bin/$VERSION" +echo "building server $VERSION" cargo build --release -cp -r target/release/mnml /usr/local/mnml/bin/$VERSION - -echo "linking current version" -ln -nfs "/usr/local/mnml/bin/$VERSION" /usr/local/mnml/bin/mnml diff --git a/client/assets/styles/styles.css b/client/assets/styles/styles.css index 5e36a0f8..1ba2ee35 100644 --- a/client/assets/styles/styles.css +++ b/client/assets/styles/styles.css @@ -146,7 +146,7 @@ button, input { color: whitesmoke; height: auto; border-width: 2px; - border-color: #444; + border-color: #222; border-radius: 0; letter-spacing: 0.25em; box-sizing: border-box; @@ -299,13 +299,13 @@ button[disabled] { } #mnml input, #mnml select { - border-color: #444; - background-color: #333; + border-color: #222; + background-color: #222; border-radius: 0; } #mnml input:focus, #mnml select:focus { - border-color: whitesmoke; + border-color: #888; } /* diff --git a/etc/nginx/sites-available/mnml.gg.PRODUCTION.nginx.conf b/etc/nginx/sites-available/mnml.gg.PRODUCTION.nginx.conf index c0d87358..113a2b3c 100644 --- a/etc/nginx/sites-available/mnml.gg.PRODUCTION.nginx.conf +++ b/etc/nginx/sites-available/mnml.gg.PRODUCTION.nginx.conf @@ -1,4 +1,4 @@ -error_log /var/log/mnml/nginx.log debug; +error_log /var/log/mnml/nginx.log; upstream mnml_http { server 127.0.0.1:40000; diff --git a/server/Cargo.toml b/server/Cargo.toml index 9a167f4e..ef32077c 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -37,6 +37,4 @@ crossbeam-channel = "0.3" stripe-rust = { version = "0.10.4", features = ["webhooks"] } [patch.crates-io] -# stripe-rust = { git = "https://github.com/margh/stripe-rs.git" } - -stripe-rust = { git = "https://github.com/margh/stripe-rs.git" } +# stripe-rust = { git = "https://github.com/margh/stripe-rs.git" } \ No newline at end of file From 5ad0938a1343464fa076cb7802277e645fc871a7 Mon Sep 17 00:00:00 2001 From: ntr Date: Tue, 16 Jul 2019 14:06:59 +1000 Subject: [PATCH 5/7] missing files --- bin/build.sh | 14 ++++++++++++++ bin/deploy.sh | 12 ++++++++++++ 2 files changed, 26 insertions(+) create mode 100755 bin/build.sh create mode 100755 bin/deploy.sh diff --git a/bin/build.sh b/bin/build.sh new file mode 100755 index 00000000..0dd93153 --- /dev/null +++ b/bin/build.sh @@ -0,0 +1,14 @@ +# bless you chris and andy <3 + +# DOES NOT WORK AT MOMENT + +DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +MNML_PATH=$(realpath "$DIR/../") +VERSION=$(<"$MNML_PATH/VERSION") + +make server +cp -R "$MNML_PATH/server/target/release" "/usr/local/mnml/build/server/$VERSION" + +make client +cp -R "$MNML_PATH/client/dist" "/usr/local/mnml/build/client/$VERSION" + diff --git a/bin/deploy.sh b/bin/deploy.sh new file mode 100755 index 00000000..15d8a8fa --- /dev/null +++ b/bin/deploy.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# bless you chris and andy <3 +DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +MNML_PATH=$(realpath "$DIR/../") +VERSION=$(<"$MNML_PATH/VERSION") + +echo "syncing /usr/local/mnml/build/server/$VERSION" +rsync -a --delete --delete-excluded "/usr/local/mnml/build/server/$VERSION" mnml:"/usr/local/mnml/build/server/" + +echo "syncing /usr/local/mnml/build/client/$VERSION" +rsync -a --delete --delete-excluded "/usr/local/mnml/build/client/$VERSION" mnml:"/usr/local/mnml/build/client/" From 3573aeb405818972d0383e16d45b8ec75a8b6288 Mon Sep 17 00:00:00 2001 From: ntr Date: Tue, 16 Jul 2019 18:02:28 +1000 Subject: [PATCH 6/7] build scripts --- bin/build.sh | 3 --- bin/deploy.sh | 24 ++++++++++++++++++++---- etc/systemd/system/mnml.service | 1 - server/Cargo.toml | 10 +++++++++- 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/bin/build.sh b/bin/build.sh index 0dd93153..621d2817 100755 --- a/bin/build.sh +++ b/bin/build.sh @@ -7,8 +7,5 @@ MNML_PATH=$(realpath "$DIR/../") VERSION=$(<"$MNML_PATH/VERSION") make server -cp -R "$MNML_PATH/server/target/release" "/usr/local/mnml/build/server/$VERSION" - make client -cp -R "$MNML_PATH/client/dist" "/usr/local/mnml/build/client/$VERSION" diff --git a/bin/deploy.sh b/bin/deploy.sh index 15d8a8fa..9ae5875d 100755 --- a/bin/deploy.sh +++ b/bin/deploy.sh @@ -5,8 +5,24 @@ DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) MNML_PATH=$(realpath "$DIR/../") VERSION=$(<"$MNML_PATH/VERSION") -echo "syncing /usr/local/mnml/build/server/$VERSION" -rsync -a --delete --delete-excluded "/usr/local/mnml/build/server/$VERSION" mnml:"/usr/local/mnml/build/server/" +SERVER_BIN_DIR="/usr/local/mnml/bin" +CLIENT_DIST_DIR="/var/lib/mnml/client" +CLIENT_PUBLIC_DIR="/var/lib/mnml/public/current" -echo "syncing /usr/local/mnml/build/client/$VERSION" -rsync -a --delete --delete-excluded "/usr/local/mnml/build/client/$VERSION" mnml:"/usr/local/mnml/build/client/" +# server updates +echo "syncing server $VERSION " +rsync -a --delete --delete-excluded "$MNML_PATH/server/target/release/mnml" mnml:"$SERVER_BIN_DIR/$VERSION" +ssh -q mnml ln -nfs "$SERVER_BIN_DIR/$VERSION" "$SERVER_BIN_DIR/mnml" +ssh -q mnml ls -lah "$SERVER_BIN_DIR" + +# client updates +echo "syncing client $VERSION" +rsync -a --delete --delete-excluded "$MNML_PATH/client/dist" mnml:"$CLIENT_DIST_DIR/$VERSION" +ssh -q mnml ln -nfs "$CLIENT_DIST_DIR/$VERSION" "$CLIENT_PUBLIC_DIR" +ssh -q mnml ls -lah "/var/lib/mnml/public" + +echo "restarting mnml service" +ssh -q -t mnml sudo service mnml restart && sleep 1 && systemctl --no-pager status mnml + +echo "restarting nginx service" +ssh -q -t mnml sudo service nginx restart && sleep 1 && systemctl --no-pager status nginx diff --git a/etc/systemd/system/mnml.service b/etc/systemd/system/mnml.service index 1b60ed47..fd859f8d 100644 --- a/etc/systemd/system/mnml.service +++ b/etc/systemd/system/mnml.service @@ -8,7 +8,6 @@ ExecStart=/usr/local/mnml/bin/mnml KillMode=process Restart=on-failure RestartPreventExitStatus=255 -Type=notify [Install] WantedBy=multi-user.target diff --git a/server/Cargo.toml b/server/Cargo.toml index ef32077c..17bd6446 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -3,6 +3,13 @@ name = "mnml" version = "0.1.0" authors = ["ntr "] +# makes sure to include openssl links in runtime path +# [profile.release] +# rpath = true + +# [profile.dev] +# rpath = true + [dependencies] rand = "0.6" uuid = { version = "0.5", features = ["serde", "v4"] } @@ -37,4 +44,5 @@ crossbeam-channel = "0.3" stripe-rust = { version = "0.10.4", features = ["webhooks"] } [patch.crates-io] -# stripe-rust = { git = "https://github.com/margh/stripe-rs.git" } \ No newline at end of file +# stripe-rust = { git = "https://github.com/margh/stripe-rs.git" } + From ac3695de52541cc0b6522fef4b3adfc9f88e6ec3 Mon Sep 17 00:00:00 2001 From: ntr Date: Tue, 16 Jul 2019 18:07:44 +1000 Subject: [PATCH 7/7] install changes --- bin/install.sh | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/bin/install.sh b/bin/install.sh index c0a17bd0..e4b48bbe 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -19,27 +19,21 @@ fi source $MNML_CONF -# DIRECTORY SETUP - -sudo chown -R $MNML_USER:$MNML_USER /etc/mnml/ - # /var/lib/mnml # contains img data, builds -sudo mkdir -p /var/lib/mnml -sudo mkdir -p /var/lib/mnml/public/imgs sudo mkdir -p /var/lib/mnml/client sudo mkdir -p /var/lib/mnml/data - +sudo mkdir -p /var/lib/mnml/public/imgs sudo chown -R $MNML_USER:$MNML_USER /var/lib/mnml # /var/log/mnml +# log files sudo mkdir -p /var/log/mnml sudo chown -R $MNML_USER:$MNML_USER /var/log/mnml -# /usr/local/mnml +# /usr/local/mnml/bin +# server bin location sudo mkdir -p /usr/local/mnml/bin -sudo mkdir -p /usr/local/mnml/build/client -sudo mkdir -p /usr/local/mnml/build/server sudo chown -R $MNML_USER:$MNML_USER /usr/local/mnml # SERVICES