diff --git a/README.md b/README.md index 1a7abff..e17367f 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,10 @@ Installation We're still in a stage where the installation generally requires many manual steps. +``bash +curl https://git.daplie.com/Daplie/walnut.js/raw/v1.2/installer/get.sh | bash +``` + See [INSTALL.md](/INSTALL.md) Usage diff --git a/install.sh b/install.sh deleted file mode 100644 index fbbb931..0000000 --- a/install.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -curl -fsSL https://git.daplie.com/Daplie/walnut.js/raw/master/installer/install.sh -o walnut-installer.sh -bash walnut-installer.sh diff --git a/installer/get.sh b/installer/get.sh new file mode 100644 index 0000000..4f2e01d --- /dev/null +++ b/installer/get.sh @@ -0,0 +1,20 @@ +set -e +set -u + +my_name=walnut +# TODO provide an option to supply my_ver and my_tmp +my_ver=master +my_tmp=$(mktemp -d) + +mkdir -p $my_tmp/opt/$my_name/lib/node_modules/$my_name +git clone https://git.daplie.com/Daplie/walnut.js.git $my_tmp/opt/$my_name/core + +echo "Installing to $my_tmp (will be moved after install)" +pushd $my_tmp/opt/$my_name/core + git checkout $my_ver + source ./installer/install.sh +popd + +echo "Installation successful, now cleaning up $my_tmp ..." +rm -rf $my_tmp +echo "Done" diff --git a/installer/install.sh b/installer/install.sh index d81bcc0..54fe028 100644 --- a/installer/install.sh +++ b/installer/install.sh @@ -3,9 +3,24 @@ set -e set -u -my_tmp=$(mktemp -d) -my_app_name=walnut +### IMPORTANT ### +### VERSION ### +my_name=walnut my_app_pkg_name=com.daplie.walnut.web +#my_app_ver="v1.1" +my_app_ver="installer-v2" +my_azp_oauth3_ver="v1.2" +export NODE_VERSION="v8.9.0" + +if [ -z "${my_tmp-}" ]; then + my_tmp="$(mktemp -d)" + mkdir -p $my_tmp/opt/$my_name/lib/node_modules/$my_name + echo "Installing to $my_tmp (will be moved after install)" + git clone ./ $my_tmp/opt/$my_name/lib/node_modules/$my_name + pushd $my_tmp/opt/$my_name/lib/node_modules/$my_name +fi + +################# ### IMPORTANT ### ### VERSION ### @@ -26,146 +41,137 @@ my_npm="$NPM_CONFIG_PREFIX/bin/npm" -my_app_dir=$my_tmp # TODO un-hardcode core at al #my_app_dist=$my_tmp/opt/$my_app_name/lib/node_modules/$my_app_name/dist my_app_dist=$my_tmp/opt/$my_app_name/core/dist -git_base="https://git.daplie.com/Daplie/walnut.js.git" -installer_base="https://git.daplie.com/Daplie/walnut.js/raw/$my_app_ver" +installer_base="https://git.daplie.com/Daplie/goldilocks.js/raw/$my_app_ver" + +# Backwards compat +# some scripts still use the old names +my_app_dir=$my_tmp +my_app_name=$my_name + + + +git checkout $my_app_ver + +mkdir -p $my_tmp/{etc,opt,srv,var}/$my_app_name +mkdir -p "$my_tmp/var/log/$my_app_name" +mkdir -p "$my_tmp/opt/$my_app_name"/{bin,config,core,etc,lib,node_modules,var} +ln -s ../core/bin/$my_app_name.js $my_tmp/opt/$my_app_name/bin/$my_app_name +ln -s ../core/bin/$my_app_name.js $my_tmp/opt/$my_app_name/bin/$my_app_name.js +#ln -s ../lib/node_modules/$my_app_name/bin/$my_app_name.js $my_tmp/opt/$my_app_name/bin/$my_app_name +#ln -s ../lib/node_modules/$my_app_name/bin/$my_app_name.js $my_tmp/opt/$my_app_name/bin/$my_app_name.js +mkdir -p "$my_tmp/opt/$my_app_name"/packages/{api,pages,rest,services} +mkdir -p "$my_tmp/opt/$my_app_name"/etc/client-api-grants +# TODO move packages and sites to /srv, grants to /etc +ln -s ../etc/client-api-grants "$my_tmp/opt/$my_app_name"/packages/client-api-grants +mkdir -p "$my_tmp/opt/$my_app_name"/var/sites +ln -s ../var/sites "$my_tmp/opt/$my_app_name"/packages/sites +mkdir -p "$my_tmp/etc/$my_app_name" +chmod 775 "$my_tmp/etc/$my_app_name" +cat "$my_app_dist/etc/$my_app_name/$my_app_name.example.yml" > "$my_tmp/etc/$my_app_name/$my_app_name.example.yml" +chmod 664 "$my_tmp/etc/$my_app_name/$my_app_name.example.yml" +mkdir -p $my_tmp/var/log/$my_app_name # -# Install to tmp location, then move to /opt +# Helpers # -echo "Installing to $my_tmp (will be moved after install)" -#mkdir -p $my_tmp/opt/$my_app_name/lib/node_modules/$my_app_name -mkdir -p $my_tmp/opt/$my_app_name/lib/node_modules/$my_app_name -#git clone $git_base $my_tmp/opt/$my_app_name/lib/node_modules/$my_app_name -git clone $git_base $my_tmp/opt/$my_app_name/core +source ./installer/sudo-cmd.sh +source ./installer/http-get.sh + + + +# +# Dependencies +# +echo $NODE_VERSION > /tmp/NODEJS_VER +# This will read the NODE_* and PATH variables set previously, as well as /tmp/NODEJS_VER +http_bash "https://git.coolaj86.com/coolaj86/node-installer.sh/raw/v1.1/install.sh" +$my_npm install -g npm@4 +$my_npm install -g bower +touch $my_tmp/opt/$my_app_name/.bowerrc +echo '{ "allow_root": true }' > $my_tmp/opt/$my_app_name/.bowerrc + #pushd $my_tmp/opt/$my_app_name/lib/node_modules/$my_app_name pushd $my_tmp/opt/$my_app_name/core - git checkout $my_app_ver + mkdir -p ../node_modules + ln -s ../node_modules node_modules + $my_npm install +popd - mkdir -p $my_tmp/{etc,opt,srv,var}/$my_app_name - mkdir -p "$my_tmp/var/log/$my_app_name" - mkdir -p "$my_tmp/opt/$my_app_name"/{bin,config,core,etc,lib,node_modules,var} - ln -s ../core/bin/$my_app_name.js $my_tmp/opt/$my_app_name/bin/$my_app_name - ln -s ../core/bin/$my_app_name.js $my_tmp/opt/$my_app_name/bin/$my_app_name.js - #ln -s ../lib/node_modules/$my_app_name/bin/$my_app_name.js $my_tmp/opt/$my_app_name/bin/$my_app_name - #ln -s ../lib/node_modules/$my_app_name/bin/$my_app_name.js $my_tmp/opt/$my_app_name/bin/$my_app_name.js - mkdir -p "$my_tmp/opt/$my_app_name"/packages/{api,pages,rest,services} - mkdir -p "$my_tmp/opt/$my_app_name"/etc/client-api-grants - # TODO move packages and sites to /srv, grants to /etc - ln -s ../etc/client-api-grants "$my_tmp/opt/$my_app_name"/packages/client-api-grants - mkdir -p "$my_tmp/opt/$my_app_name"/var/sites - ln -s ../var/sites "$my_tmp/opt/$my_app_name"/packages/sites - mkdir -p "$my_tmp/etc/$my_app_name" - chmod 775 "$my_tmp/etc/$my_app_name" - cat "$my_app_dist/etc/$my_app_name/$my_app_name.example.yml" > "$my_tmp/etc/$my_app_name/$my_app_name.example.yml" - chmod 664 "$my_tmp/etc/$my_app_name/$my_app_name.example.yml" - mkdir -p $my_tmp/var/log/$my_app_name +git clone https://git.daplie.com/Daplie/walnut_launchpad.git $my_tmp/opt/$my_app_name/core/lib/walnut@daplie.com/setup +pushd $my_tmp/opt/$my_app_name/core/lib/walnut@daplie.com/setup + git pull + git checkout $my_launchpad_ver + git clone https://git.daplie.com/OAuth3/oauth3.js.git ./assets/oauth3.org + pushd assets/oauth3.org + git checkout $my_azp_oauth3_ver + popd +popd - - # - # Helpers - # - source ./installer/sudo-cmd.sh - source ./installer/http-get.sh - - - - # - # Dependencies - # - echo $NODE_VERSION > /tmp/NODEJS_VER - # This will read the NODE_* and PATH variables set previously, as well as /tmp/NODEJS_VER - http_bash "https://git.coolaj86.com/coolaj86/node-installer.sh/raw/v1.1/install.sh" - $my_npm install -g npm@4 - $my_npm install -g bower - touch $my_tmp/opt/$my_app_name/.bowerrc - echo '{ "allow_root": true }' > $my_tmp/opt/$my_app_name/.bowerrc - - #pushd $my_tmp/opt/$my_app_name/lib/node_modules/$my_app_name - pushd $my_tmp/opt/$my_app_name/core - mkdir -p ../node_modules - ln -s ../node_modules node_modules - $my_npm install +pushd $my_tmp/opt/$my_app_name/packages + git clone https://git.daplie.com/OAuth3/issuer_oauth3.org.git rest/issuer@oauth3.org + pushd rest/issuer@oauth3.org/ + git checkout $my_iss_oauth3_rest_ver + $my_npm install popd - git clone https://git.daplie.com/Daplie/walnut_launchpad.git $my_tmp/opt/$my_app_name/core/lib/walnut@daplie.com/setup - pushd $my_tmp/opt/$my_app_name/core/lib/walnut@daplie.com/setup - git pull - git checkout $my_launchpad_ver + git clone https://git.daplie.com/OAuth3/org.oauth3.git pages/issuer@oauth3.org + pushd pages/issuer@oauth3.org + git checkout $my_iss_oauth3_pages_ver + bash ./install.sh - git clone https://git.daplie.com/OAuth3/oauth3.js.git ./assets/oauth3.org - pushd assets/oauth3.org + pushd ./assets/oauth3.org git checkout $my_azp_oauth3_ver popd popd - pushd $my_tmp/opt/$my_app_name/packages - git clone https://git.daplie.com/OAuth3/issuer_oauth3.org.git rest/issuer@oauth3.org - pushd rest/issuer@oauth3.org/ - git checkout $my_iss_oauth3_rest_ver - $my_npm install - popd - - git clone https://git.daplie.com/OAuth3/org.oauth3.git pages/issuer@oauth3.org - pushd pages/issuer@oauth3.org - git checkout $my_iss_oauth3_pages_ver - bash ./install.sh - - pushd ./assets/oauth3.org - git checkout $my_azp_oauth3_ver - popd - popd - - git clone https://git.daplie.com/Daplie/walnut_rest_www_daplie.com.git rest/www@daplie.com - pushd rest/www@daplie.com - git checkout $my_www_daplie_ver - $my_npm install - popd + git clone https://git.daplie.com/Daplie/walnut_rest_www_daplie.com.git rest/www@daplie.com + pushd rest/www@daplie.com + git checkout $my_www_daplie_ver + $my_npm install popd - - - - # - # System Service - # - source ./installer/my-root.sh - echo "Pre-installation to $my_tmp complete, now installing to $my_root/ ..." - set +e - if type -p tree >/dev/null 2>/dev/null; then - #tree -I "node_modules|include|share" $my_tmp - tree -L 6 -I "include|share|npm" $my_tmp - else - ls $my_tmp - fi - set -e - - source ./installer/my-user-my-group.sh - echo "User $my_user Group $my_group" - - $sudo_cmd chown -R $my_user:$my_group $my_tmp - rsync -a $my_tmp/ $my_root/ - rsync -a --ignore-existing $my_app_dist/etc/$my_app_name/$my_app_name.yml $my_root/etc/$my_app_name/$my_app_name.yml - source ./installer/install-system-service.sh - - # Change to admin perms - $sudo_cmd chown -R $my_user:$my_group $my_root/opt/$my_app_name - $sudo_cmd chown -R $my_user:$my_group $my_root/var/www $my_root/srv/www - - # make sure the files are all read/write for the owner and group, and then set - # the setuid and setgid bits so that any files/directories created inside these - # directories have the same owner and group. - $sudo_cmd chmod -R ug+rwX /opt/$my_app_name - find /opt/$my_app_name -type d -exec $sudo_cmd chmod ug+s {} \; popd -rm -rf $my_tmp + +# +# System Service +# +source ./installer/my-root.sh +echo "Pre-installation to $my_tmp complete, now installing to $my_root/ ..." +set +e +if type -p tree >/dev/null 2>/dev/null; then + #tree -I "node_modules|include|share" $my_tmp + tree -L 6 -I "include|share|npm" $my_tmp +else + ls $my_tmp +fi +set -e + +source ./installer/my-user-my-group.sh +echo "User $my_user Group $my_group" + +$sudo_cmd chown -R $my_user:$my_group $my_tmp +rsync -a $my_tmp/ $my_root/ +rsync -a --ignore-existing $my_app_dist/etc/$my_app_name/$my_app_name.yml $my_root/etc/$my_app_name/$my_app_name.yml +source ./installer/install-system-service.sh + +# Change to admin perms +$sudo_cmd chown -R $my_user:$my_group $my_root/opt/$my_app_name +$sudo_cmd chown -R $my_user:$my_group $my_root/var/www $my_root/srv/www + +# make sure the files are all read/write for the owner and group, and then set +# the setuid and setgid bits so that any files/directories created inside these +# directories have the same owner and group. +$sudo_cmd chmod -R ug+rwX $my_root/opt/$my_app_name +find $my_root/opt/$my_app_name -type d -exec $sudo_cmd chmod ug+s {} \; + + echo "" echo "You must have some set of domain set up to properly use goldilocks+walnut:" @@ -180,3 +186,7 @@ echo "" echo "Check the WALNUT README.md for more info and how to set up /etc/goldilocks/goldilocks.yml" echo "" echo "Unistall: rm -rf /srv/walnut/ /var/walnut/ /etc/walnut/ /opt/walnut/ /var/log/walnut/ /etc/systemd/system/walnut.service" + + + +rm -rf $my_tmp