use user and root ssh where appropriate

This commit is contained in:
Ray Elliott 2020-09-08 18:59:02 +01:00
parent e3186d9cc9
commit bbc106c018
21 changed files with 95 additions and 72 deletions

View File

@ -1,9 +1,18 @@
# local specific options # local specific options
## export if using local development environment ## export if using local development environment
export domain='test123.home' export domain='thecampsitebible.home'
export url='http://test123.home' export url='http://thecampsitebible.home'
# set to anything other than the empty string to set up a dev environment # set to anything other than the empty string to set up a dev environment
export dev_env='true' export dev_env='true'
## user configuration
export user='ray'
export user_pass='ray'
export group='ray'
## ssh configuration
export ssh_root='root@thecampsitebible.home'
export ssh_user='ray@thecampsitebible.home'

View File

@ -1,5 +0,0 @@
## ssh configuration
## uncomment if connecting via ssh
export ssh='root@test123.home'

View File

@ -1,6 +0,0 @@
## user configuration
## uncomment to set user
export user='ray'
export user_pass='ray'
export group='ray'

View File

@ -1,6 +1,15 @@
# remote specific options # remote specific options
## export if using local development environment
#export domain='test123.example.com' #export domain='test123.example.com'
#export url='http://test123.example.com' #export url='http://test123.example.com'
## user configuration
## uncomment to set user
# export user='ray'
# export user_pass='ray'
# export group='ray'
## ssh configuration
# export ssh_root='root@wordpress-453075-1468300.cloudwaysapps.com' # we do not have root access
export ssh_user='test123@wordpress-453075-1468300.cloudwaysapps.com'

View File

@ -1,5 +0,0 @@
## ssh configuration
## uncomment if connecting via ssh
# export ssh='root@test123.isnet.uk'

View File

@ -1,6 +0,0 @@
## user configuration
## uncomment to set user
# export user='ray'
# export user_pass='ray'
# export group='ray'

View File

@ -30,11 +30,11 @@ fi
echo "Using Scripts in: $_script_dir" echo "Using Scripts in: $_script_dir"
# check we have ssh access # check we have ssh access
[ -z "$ssh" ] && echo "Error: no ssh configuration specified" && exit 5 [ -z "$ssh_root" ] && echo "Error: no root ssh configuration specified" && exit 5
# update # update
echo "Updating .." echo "Updating .."
ssh -T $ssh << EOSSH ssh -T $ssh_root << EOSSH
export DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive
apt-get -qq -y update && apt-get -qq -y upgrade apt-get -qq -y update && apt-get -qq -y upgrade
EOSSH EOSSH

View File

@ -7,7 +7,10 @@ fi
. ./"$1" . ./"$1"
ssh -T $ssh << EOSSH # check we have ssh access
[ -z "$ssh_root" ] && echo "Error: no root ssh configuration specified" && exit 5
ssh -T $ssh_root << EOSSH
ufw allow http && ufw allow https ufw allow http && ufw allow https

View File

@ -16,7 +16,7 @@ for _file in ./config/$_target/* ; do
done done
# check we have ssh access # check we have ssh access
[ -z "$ssh" ] && echo "Error: no ssh configuration specified" && exit 5 [ -z "$ssh_user" ] && echo "Error: no user ssh configuration specified" && exit 5
if [ -n "$wp_user" ] ; then if [ -n "$wp_user" ] ; then
. ./scripts/export-wp.sh . ./scripts/export-wp.sh

View File

@ -29,9 +29,6 @@ fi
echo "Using Scripts in: $_script_dir" echo "Using Scripts in: $_script_dir"
# check we have ssh access
[ -z "$ssh" ] && echo "Error: no ssh configuration specified" && exit 5
if [ -n "$wp_user" ] ; then if [ -n "$wp_user" ] ; then
# TODO - confirmation prompt # TODO - confirmation prompt
echo "IMPORTANT - we need a confirmation prompt here" echo "IMPORTANT - we need a confirmation prompt here"

View File

@ -5,7 +5,10 @@ if [ "$apache2_version" != 'latest' ] ; then
exit 30 exit 30
fi fi
ssh -T $ssh << EOSSH # check we have ssh access
[ -z "$ssh_root" ] && echo "Error: no root ssh configuration specified" && exit 5
ssh -T $ssh_root << EOSSH
echo "Installing Apache2" echo "Installing Apache2"
export DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive
echo "Installing packages .." echo "Installing packages .."

View File

@ -1,6 +1,9 @@
#!/bin/sh #!/bin/sh
ssh -T $ssh << EOSSH # check we have ssh access
[ -z "$ssh_root" ] && echo "Error: no root ssh configuration specified" && exit 5
ssh -T $ssh_root << EOSSH
sed -i '/PubkeyAuthentication/c\PubkeyAuthentication yes' /etc/ssh/sshd_config sed -i '/PubkeyAuthentication/c\PubkeyAuthentication yes' /etc/ssh/sshd_config
sed -i '/PasswordAuthentication/c\PasswordAuthentication no' /etc/ssh/sshd_config sed -i '/PasswordAuthentication/c\PasswordAuthentication no' /etc/ssh/sshd_config

View File

@ -2,7 +2,10 @@
_home_dir="/home/$user" _home_dir="/home/$user"
ssh -T $ssh << EOSSH # check we have ssh access
[ -z "$ssh_user" ] || [ -z "$ssh_root" ] && echo "Error: user and root ssh configuration must be specified" && exit 5
ssh -T $ssh_root << EOSSH
echo "Installing packages .." echo "Installing packages .."
export DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive
@ -36,7 +39,7 @@ if command -v php ; then
fi fi
EOSSH EOSSH
ssh -T $ssh << EOSSH ssh -T $ssh_root << EOSSH
su "$user" su "$user"
@ -46,16 +49,14 @@ echo 'export NVM_DIR="\$HOME/.nvm"' >> "$_home_dir/.profile"
echo '[ -s "\$NVM_DIR/nvm.sh" ] && \. "\$NVM_DIR/nvm.sh"' >> "$_home_dir/.profile" echo '[ -s "\$NVM_DIR/nvm.sh" ] && \. "\$NVM_DIR/nvm.sh"' >> "$_home_dir/.profile"
EOSSH EOSSH
ssh -T $ssh << EOSSH ssh -T $ssh_root << EOSSH
su --login "$user" su --login "$user"
. ./.profile . ./.profile
nvm install --lts --latest-npm nvm install --lts --latest-npm
EOSSH EOSSH
ssh -T $ssh << EOSSH ssh -T $ssh_user << EOSSH
su --login "$user"
. ./.profile . ./.profile
echo "Configuring neovim ..." echo "Configuring neovim ..."
npm install -g neovim npm install -g neovim

View File

@ -5,9 +5,12 @@ if [ "$mariadb_version" != 'latest' ] ; then
exit 30 exit 30
fi fi
# check we have ssh access
[ -z "$ssh_root" ] && echo "Error: no root ssh configuration specified" && exit 5
_mysql_cmd="mysql -uroot -e " _mysql_cmd="mysql -uroot -e "
ssh -T $ssh << EOSSH ssh -T $ssh_root << EOSSH
if mysql --version ; then if mysql --version ; then
echo "ERROR: unable to install MariaDb, 'mysql' already installed - aborting install" echo "ERROR: unable to install MariaDb, 'mysql' already installed - aborting install"
exit 35 exit 35

View File

@ -5,9 +5,12 @@ if [ "$mysql_version" != 'latest' ] ; then
exit 30 exit 30
fi fi
# check we have ssh access
[ -z "$ssh_root" ] && echo "Error: no root ssh configuration specified" && exit 5
_mysql_cmd="mysql -uroot -e " _mysql_cmd="mysql -uroot -e "
ssh -T $ssh << EOSSH ssh -T $ssh_root << EOSSH
if mysql --version ; then if mysql --version ; then
echo "ERROR: unable to install MySQL, 'mysql' already installed - aborting install" echo "ERROR: unable to install MySQL, 'mysql' already installed - aborting install"
exit 35 exit 35

View File

@ -5,10 +5,13 @@ if [ "$php_version" != 'latest' ] ; then
exit 30 exit 30
fi fi
# check we have ssh access
[ -z "$ssh_root" ] && echo "Error: no root ssh configuration specified" && exit 5
if [ -n "$wp_user" ] ; then if [ -n "$wp_user" ] ; then
echo 'Installing PHP for WordPress ...' echo 'Installing PHP for WordPress ...'
ssh -T $ssh << 'EOSSH' ssh -T $ssh_root << 'EOSSH'
export DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive
echo "Installing packages .." echo "Installing packages .."
apt-get install -qq -y php libapache2-mod-php php-fpm php-bcmath php-curl php-gd php-imagick php-mbstring \ apt-get install -qq -y php libapache2-mod-php php-fpm php-bcmath php-curl php-gd php-imagick php-mbstring \
@ -25,7 +28,7 @@ EOSSH
else else
echo 'Installing default PHP ...' echo 'Installing default PHP ...'
ssh -T $ssh << EOSSH ssh -T $ssh_root << EOSSH
export DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive
echo "Installing packages .." echo "Installing packages .."
apt-get install -qq -y php libapache2-mod-php php-mysql apt-get install -qq -y php libapache2-mod-php php-mysql

View File

@ -1,8 +1,11 @@
#!/bin/sh #!/bin/sh
# check we have ssh access
[ -z "$ssh_root" ] && echo "Error: no root ssh configuration specified" && exit 5
_home_dir="/home/$user" _home_dir="/home/$user"
ssh -T $ssh << EOSSH ssh -T $ssh_root << EOSSH
echo "Creating user .." echo "Creating user .."
useradd -m -d "$_home_dir" "$user" useradd -m -d "$_home_dir" "$user"
echo "$user:$user_pass" | chpasswd echo "$user:$user_pass" | chpasswd
@ -11,12 +14,12 @@ EOSSH
echo "Configuring ssh .." echo "Configuring ssh .."
ssh $ssh mkdir -v -p "$_home_dir/.ssh" ssh $ssh_root mkdir -v -p "$_home_dir/.ssh"
scp files/private/id_rsa "$ssh:$_home_dir/.ssh/" scp files/private/id_rsa "$ssh_root:$_home_dir/.ssh/"
scp files/id_rsa.pub "$ssh:$_home_dir/.ssh/" scp files/id_rsa.pub "$ssh_root:$_home_dir/.ssh/"
scp files/known_hosts "$ssh:$_home_dir/.ssh/" scp files/known_hosts "$ssh_root:$_home_dir/.ssh/"
ssh -T $ssh << EOSSH ssh -T $ssh_root << EOSSH
cp -v /root/.ssh/authorized_keys "$_home_dir/.ssh/authorized_keys" cp -v /root/.ssh/authorized_keys "$_home_dir/.ssh/authorized_keys"
chown -v -R "$user:$group" "$_home_dir/.ssh" chown -v -R "$user:$group" "$_home_dir/.ssh"
@ -61,7 +64,7 @@ ssh -T $ssh << EOSSH
"$_home_dir/.config/zsh/install.sh" "$_home_dir/.config/zsh/install.sh"
EOSSH EOSSH
ssh -T $ssh << EOSSH ssh -T $ssh_root << EOSSH
chsh -s /usr/bin/zsh "$user" chsh -s /usr/bin/zsh "$user"
EOSSH EOSSH

View File

@ -1,15 +1,18 @@
echo "Installing WordPress .." echo "Installing WordPress .."
ssh -T $ssh << EOSSH # check we have ssh access
[ -z "$ssh_user" ] || [ -z "$ssh_root" ] && echo "Error: user and root ssh configuration must be specified" && exit 5
ssh -T $ssh_root << EOSSH
# install wp-cli first # install wp-cli first
if [ ! -f /usr/local/bin/wp ] ; then if [ ! -f /usr/local/bin/wp ] ; then
wget -nv -O /usr/local/bin/wp https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar \ wget -nv -O /usr/local/bin/wp https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar \
&& chmod +x /usr/local/bin/wp && chmod +x /usr/local/bin/wp
fi fi
EOSSH
su "$user" ssh -T $ssh_user << EOSSH
if wp core is-installed --quiet --path="$wp_path" ; then if wp core is-installed --quiet --path="$wp_path" ; then
echo "WordPress already installed" echo "WordPress already installed"
else else
@ -43,8 +46,7 @@ printf "\nInstalling themes ..."
option='--activate' option='--activate'
for theme in $wp_themes ; do for theme in $wp_themes ; do
echo " installing $theme ..." echo " installing $theme ..."
ssh -T $ssh << EOSSH ssh -T $ssh_user << EOSSH
su "$user"
wp theme install $theme "$option" --path="$wp_path" wp theme install $theme "$option" --path="$wp_path"
EOSSH EOSSH
option='' option=''
@ -55,8 +57,7 @@ if [ -n "$wp_plugins" ] ; then
printf "\nInstalling plugins ..." printf "\nInstalling plugins ..."
for plugin in $wp_plugins ; do for plugin in $wp_plugins ; do
echo " installing $plugin ..." echo " installing $plugin ..."
ssh -T $ssh << EOSSH ssh -T $ssh_user << EOSSH
su "$user"
wp plugin install $plugin --path="$wp_path" wp plugin install $plugin --path="$wp_path"
EOSSH EOSSH
done done
@ -66,8 +67,7 @@ if [ -n "$wp_plugins_active" ] ; then
printf "\nInstalling plugins to activate ..." printf "\nInstalling plugins to activate ..."
for plugin in $wp_plugins_active ; do for plugin in $wp_plugins_active ; do
echo " installing $plugin ..." echo " installing $plugin ..."
ssh -T $ssh << EOSSH ssh -T $ssh_user << EOSSH
su "$user"
wp plugin install $plugin --activate --path="$wp_path" wp plugin install $plugin --activate --path="$wp_path"
EOSSH EOSSH
done done
@ -77,8 +77,7 @@ if [ -n "$wp_plugins_active" ] ; then
printf "\nUninstalling plugins ..." printf "\nUninstalling plugins ..."
for plugin in $wp_plugins_uninstall ; do for plugin in $wp_plugins_uninstall ; do
echo " installing $plugin ..." echo " installing $plugin ..."
ssh -T $ssh << EOSSH ssh -T $ssh_user << EOSSH
su "$user"
wp plugin deactivate $plugin --path="$wp_path" wp plugin deactivate $plugin --path="$wp_path"
wp plugin uninstall $plugin --path="$wp_path" wp plugin uninstall $plugin --path="$wp_path"
EOSSH EOSSH
@ -86,7 +85,7 @@ EOSSH
fi fi
config_path='/etc/apache2/sites-available/wordpress.conf' config_path='/etc/apache2/sites-available/wordpress.conf'
ssh -T $ssh << EOSSH ssh -T $ssh_root << EOSSH
if [ -n "$apache2_version" ] ; then if [ -n "$apache2_version" ] ; then
mkdir -p /var/log/wordpress/ mkdir -p /var/log/wordpress/
cat << EOF > $config_path cat << EOF > $config_path

View File

@ -1,8 +1,11 @@
echo "Removing WordPress .." echo "Removing WordPress .."
_mysql_cmd="mysql -uroot -p$db_root_pass -e " # check we have ssh access
[ -z "$ssh_user" ] && echo "Error: no user ssh configuration specified" && exit 5
ssh -T $ssh << EOSSH _mysql_cmd="mysql -u$db_user -p$db_pass -e "
ssh -T $ssh_user << EOSSH
# remove database # remove database
if command -v mysql ; then if command -v mysql ; then
$_mysql_cmd "DROP DATABASE $db_name;" $_mysql_cmd "DROP DATABASE $db_name;"

View File

@ -7,7 +7,10 @@ _db_filename="wordpress-$_timestamp.db"
_archive_filename="wordpress-$_timestamp.tar.gz" _archive_filename="wordpress-$_timestamp.tar.gz"
_local_dest_dir="./data/$_target" _local_dest_dir="./data/$_target"
ssh -T $ssh << EOSSH # check we have ssh access
[ -z "$ssh_user" ] && echo "Error: no user ssh configuration specified" && exit 5
ssh -T $ssh_user << EOSSH
cd "$wp_path" cd "$wp_path"
wp db export \ wp db export \
--path="$wp_path" \ --path="$wp_path" \
@ -19,11 +22,11 @@ wp db export \
tar czf "/tmp/$_archive_filename" "$wp_path" tar czf "/tmp/$_archive_filename" "$wp_path"
EOSSH EOSSH
scp "$ssh:/tmp/$_archive_filename" "$_local_dest_dir/$_archive_filename" scp "$ssh_user:/tmp/$_archive_filename" "$_local_dest_dir/$_archive_filename"
scp "$ssh:/tmp/$_db_filename" "$_local_dest_dir/$_db_filename" scp "$ssh_user:/tmp/$_db_filename" "$_local_dest_dir/$_db_filename"
exit exit
ssh -T $ssh << EOSSH ssh -T $ssh_user << EOSSH
rm "/tmp/$_db_filename" rm "/tmp/$_db_filename"
rm "/tmp/$_archive_filename" rm "/tmp/$_archive_filename"
EOSSH EOSSH

View File

@ -1,14 +1,17 @@
echo "Removing WordPress .." echo "Removing WordPress .."
_mysql_cmd="mysql -uroot -p$db_root_pass -e " # check we have ssh access
[ -z "$ssh_user" ] && echo "Error: no user ssh configuration specified" && exit 5
ssh -T $ssh << EOSSH _mysql_cmd="mysql -u$db_user -p$db_pass -e "
ssh -T $ssh_user << EOSSH
# remove database # remove database
if command -v mysql ; then if command -v mysql ; then
$_mysql_cmd "DROP DATABASE $db_name;" $_mysql_cmd "DROP DATABASE $db_name;"
$_mysql_cmd "CREATE DATABASE $db_name;" $_mysql_cmd "CREATE DATABASE $db_name;"
else else
echo "ERROR: no installed database found - aborting WordPress removal" echo "ERROR: mysql not found - aborting WordPress removal"
exit 40 exit 40
fi fi
# remove files # remove files