This commit is contained in:
Ray Elliott 2020-12-30 16:26:41 +00:00
parent 4c4a3d350c
commit 69dd1e066c
36 changed files with 121 additions and 696 deletions

2
install/.gitignore vendored
View File

@ -1,2 +0,0 @@
files/private
data/

View File

@ -1 +0,0 @@
Installation scripts for local/remote servers with development environment.

View File

@ -1,8 +0,0 @@
export mariadb_version='latest'
#mysql_version='latest'
export db_root_pass='9483ujtej0--=0FFFdl'
export db_name='wordpress'
export db_user='wordpress'
export db_pass='wordpress'

View File

@ -1,18 +0,0 @@
# local specific options
## export if using local development environment
export domain='thecampsitebible.home'
export url='http://thecampsitebible.home'
# set to anything other than the empty string to set up a dev environment
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 @@
## php configuration
#
## uncomment if using php
export php_version='latest'

View File

@ -1,18 +0,0 @@
export apache2_version='latest'
#export nginx_version='latest'
## specify specific version from latest, 54, 55, 56, 70, 71, 72, 73 or 74
#export litespeed_version='latest'
######################
# litespeed specific #
######################
## litespeed php version
#export ls_lsphp_version='73'
## https://openlitespeed.org/kb/1-click-install/
## password used to log into litespeed web interface
#export ls_webadmin_pass='admin'

View File

@ -1,19 +0,0 @@
## wordpress configuration - uncomment if using wordpress
export wp_user='admin'
export wp_pass='admin'
export wp_email='myemail@example.com'
export wp_version='latest'
export wp_path='/var/www/html/wordpress'
export wp_locale='en_GB'
export wp_title='The Campsite Bible'
## list of themes to install - first one will be activated
export wp_themes="twentytwenty"
## list of plugins to install
export wp_plugins="geodirectory"
## list of plugins to install and activate
export wp_plugins_active=""

View File

@ -1,8 +0,0 @@
# export mariadb_version='latest'
# export mysql_version='latest'
# export db_root_pass='9483ujtej0--=0FFFdl'
export db_name='mhhusspndh'
export db_user='mhhusspndh'
export db_pass='w9Chzh6fR4'

View File

@ -1,5 +0,0 @@
## php configuration
#
## uncomment if using php
#export php_version='latest'

View File

@ -1,15 +0,0 @@
# remote specific options
export domain='wordpress-453075-1468300.cloudwaysapps.com.example.com'
export url='https://wordpress-453075-1468300.cloudwaysapps.com.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,18 +0,0 @@
#export apache2_version='latest'
#export nginx_version='latest'
## specify specific version from latest, 54, 55, 56, 70, 71, 72, 73 or 74
#export litespeed_version='latest'
######################
# litespeed specific #
######################
## litespeed php version
#export ls_lsphp_version='73'
## https://openlitespeed.org/kb/1-click-install/
## password used to log into litespeed web interface
#export ls_webadmin_pass='admin'

View File

@ -1,19 +0,0 @@
## wordpress configuration - uncomment if using wordpress
export wp_user='cloudways@rayelliott.dev'
export wp_pass='McXNn4vgua'
export wp_email='myemail@example.com'
export wp_version='latest'
export wp_path='/home/453075.cloudwaysapps.com/mhhusspndh/public_html'
export wp_locale='en_GB'
export wp_title='The Campsite Bible'
## list of themes to install - first one will be activated
export wp_themes="twentytwenty"
## list of plugins to install
export wp_plugins="geodirectory breeze malcare-security"
## list of plugins to install and activate
# export wp_plugins_active=""

View File

@ -1 +0,0 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEwwL1J52P0IuAWa+Ar3tCFOmT3A+V4F6/nz3JwGozCGaPrIqyOW7R3R+Y9UZZrxHYT7pt71lhNDQdN4Elhiix6Zkzrf4ZJRDfcyGvg7ZQGOG2nODybmW0TilnELtfjmtiaJ/2wBxNCiwdZAzFCb0kNKyXsUqx3b4NA7nKoxlVEdK1SZyaqwpe4oO6eoj6Nl2fPpLJ7Xq7VX83UJJPofPs3qUYOB2ywhKMljjbHDbQrRr+7Z3vQwmSs8sGI6qh1OHR7HZ2x8kVK507uwKXKPBlLGVKT2RDTslQiooNuuInBD/+DDegme+2arfnHIKB+GWK4Sun6aeN8UcMqA03GsRj dev-scripts@dev

View File

@ -1,2 +0,0 @@
|1|3oVXnt29xONh6+jmV3anxv2jUlE=|6FMJKCQKcgMN0RKsZPt4QcX/Dcw= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEon87+GR5+/I0SwUrsf7TlKQFXkgyYxqnHC4YyZ2i9LbuCrGi3hPibV1tZL4FTyqrI87+uxnZRDznXY2lpLP8Y=
|1|3oVXnt29xONh6+jmV3anxv2jUlE=|6FMJKCQKcgMN0RKsZPt4QcX/Dcw= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEon87+GR5+/I0SwUrsf7TlKQFXkgyYxqnHC4YyZ2i9LbuCrGi3hPibV1tZL4FTyqrI87+uxnZRDznXY2lpLP8Y=

View File

@ -1,3 +0,0 @@
Files in here are not kept under version control.
Sensitive files should be kept in here.

View File

@ -1,72 +0,0 @@
#!/bin/sh
_target="$1"
_target_os="$2"
# default scripts to use
_script_dir='./scripts/debian10'
if ! [ "$_target" = local ] && ! [ "$_target" = remote ] ; then
echo "Error: must specify 'local' or 'remote' target"
exit 1
fi
echo "Loading $_target configuration"
# source our config files
for _file in ./config/$_target/* ; do
[ -e "$_file" ] || continue
. "$_file"
done
# source script files
if [ -n "$_target_os" ] ; then
_script_dir="./scripts/$_target_os"
if ! [ -d "$_script_dir" ] ; then
echo "Error: script directory not found '$_script_dir'"
exit 1
fi
fi
echo "Using Scripts in: $_script_dir"
# check we have ssh access
[ -z "$ssh_root" ] && echo "Error: no root ssh configuration specified" && exit 5
# update
echo "Updating .."
ssh -T $ssh_root << EOSSH
export DEBIAN_FRONTEND=noninteractive
apt-get -qq -y update && apt-get -qq -y upgrade
EOSSH
echo "Update complete"
. "$_script_dir/install-user.sh"
# . "$_script_dir/install-base.sh"
#
# if [ -n "$php_version" ] ; then
# . "$_script_dir/install-php.sh"
# fi
#
# if [ -n "$mariadb_version" ] ; then
# . "$_script_dir/install-mariadb.sh"
# elif [ -n "$mysql_version" ] ; then
# . "$_script_dir/install-mysql.sh"
# fi
#
# if [ -n "$apache2_version" ] ; then
# . "$_script_dir/install-apache2.sh"
# elif [ -n "$nginx_version" ] ; then
# # TODO nginx install script
# echo 'TODO - nginx install script'
# elif [ -n "$litespeed_version" ] ; then
# # TODO
# echo 'TODO litespeed install script'
# fi
#
# if [ -n "$wp_user" ] ; then
# . "$_script_dir/install-wordpress.sh"
# fi
#
# if [ -n "$dev_env" ] ; then
# . "$_script_dir/install-dev-base.sh"
# fi

View File

@ -1,39 +0,0 @@
#!/bin/sh
_target="$1"
_target_os="$2"
# default scripts to use
_script_dir='./scripts/debian10'
if ! [ "$_target" = local ] && ! [ "$_target" = remote ] ; then
echo "Error: must specify 'local' or 'remote' target"
exit 1
fi
echo "Loading $_target configuration"
# source our config files
for _file in ./config/$_target/* ; do
[ -e "$_file" ] || continue
. "$_file"
done
# source script files
if [ -n "$_target_os" ] ; then
_script_dir="./scripts/$_target_os"
if ! [ -d "$_script_dir" ] ; then
echo "Error: script directory not found '$_script_dir'"
exit 1
fi
fi
echo "Using Scripts in: $_script_dir"
if [ -n "$wp_user" ] ; then
# TODO - confirmation prompt
echo "IMPORTANT - we need a confirmation prompt here"
echo "You are about to reinstall the $_target WordPress installation"
echo "Reinstall WordPress (y/N): "
. "./scripts/reset-wordpress.sh"
. "$_script_dir/install-wordpress.sh"
fi

View File

@ -1,26 +0,0 @@
#!/bin/sh
if [ "$apache2_version" != 'latest' ] ; then
echo 'ERROR: unable to install Apache2 - only '"'latest'"' version currently supported'
exit 30
fi
# 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"
export DEBIAN_FRONTEND=noninteractive
echo "Installing packages .."
apt-get install -qq -y apache2
echo "Packages installed"
ufw allow in "WWW Full"
sed -i '/export APACHE_RUN_USER=/c\export APACHE_RUN_USER='"$user" /etc/apache2/envvars
sed -i '/export APACHE_RUN_GROUP=/c\export APACHE_RUN_GROUP='"$group" /etc/apache2/envvars
chown -R "$user:$group" "/var/www/html"
echo "Nothing here ..." > /var/www/html/index.html
systemctl restart apache2
EOSSH

View File

@ -1,21 +0,0 @@
#!/bin/sh
# 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 '/PasswordAuthentication/c\PasswordAuthentication no' /etc/ssh/sshd_config
sed -i '/PermitRootLogin/c\PermitRootLogin prohibit-password' /etc/ssh/sshd_config
systemctl restart sshd
export DEBIAN_FRONTEND=noninteractive
echo "Installing packages .."
apt-get install -qq -y ufw || (echo "ERROR while installing ufw" ; exit 15)
echo "Packages installed"
ufw allow ssh || (echo "Error while configuring ufw to allow ssh" ; exit 20 )
yes | ufw enable
EOSSH

View File

@ -1,79 +0,0 @@
#!/bin/sh
_home_dir="/home/$user"
# 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 .."
export DEBIAN_FRONTEND=noninteractive
echo "Installing packages .."
apt-get -qq -y install curl gnupg2 ninja-build gettext libtool libtool-bin autoconf automake cmake g++ pkg-config unzip python-pip python3-pip fzf vim ctags
echo "Packages installed"
echo "Installing lazygit .."
curl -fsSL https://github.com/jesseduffield/lazygit/releases/download/v0.22.1/lazygit_0.22.1_Linux_x86_64.tar.gz --output /tmp/lazygit.tar.gz
tar xf /tmp/lazygit.tar.gz -C /usr/local/bin/
rm -v /tmp/lazygit.tar.gz
echo "Installing lf ..."
curl -fsSL https://github.com/gokcehan/lf/releases/download/r16/lf-linux-amd64.tar.gz --output /tmp/lf.tar.gz
tar xf /tmp/lf.tar.gz -C /usr/local/bin/
rm -v /tmp/lf.tar.gz
echo "Installing neovim ..."
git clone https://github.com/neovim/neovim /tmp/neovim
cd /tmp/neovim
make -s CMAKE_BUILD_TYPE=Release
make -s install
echo "Neovim installed"
if command -v php ; then
echo "Installing composer .."
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '8a6138e2a05a8c28539c9f0fb361159823655d7ad2deecb371b04a83966c61223adc522b0189079e3e9e277cd72b8897') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php --filename=composer --install-dir=/usr/local/bin
php -r "unlink('composer-setup.php');"
fi
EOSSH
ssh -T $ssh_root << EOSSH
su "$user"
echo "Installing nvm ..."
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
echo 'export NVM_DIR="\$HOME/.nvm"' >> "$_home_dir/.profile"
echo '[ -s "\$NVM_DIR/nvm.sh" ] && \. "\$NVM_DIR/nvm.sh"' >> "$_home_dir/.profile"
EOSSH
ssh -T $ssh_root << EOSSH
su --login "$user"
. ./.profile
nvm install --lts --latest-npm
EOSSH
ssh -T $ssh_user << EOSSH
. ./.profile
echo "Configuring neovim ..."
npm install -g neovim
python2 -m pip install --user --upgrade pynvim
python3 -m pip install --user --upgrade pynvim
python3 -m pip install --user --upgrade neovim-remote
git clone ssh://git@git.rayelliott.dev:3222/dots/nvim.git $_home_dir/.config/nvim
curl -fLo $_home_dir/.config/nvim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
nvim --headless +PlugInstall +qall
echo "Configuring lf .."
lf config
if [ -e "$_home_dir/.config/lf" ] ; then
mv -v "$_home_dir/.config/lf" "$_home_dir/.config/lf-original-$(date +%s)"
fi
git clone ssh://git@git.rayelliott.dev:3222/dots/lf.git "$_home_dir/.config/lf"
EOSSH

View File

@ -1,36 +0,0 @@
#!/bin/sh
if [ "$mariadb_version" != 'latest' ] ; then
echo 'ERROR: unable to install MariaDB - only '"'latest'"' version currently supported'
exit 30
fi
# check we have ssh access
[ -z "$ssh_root" ] && echo "Error: no root ssh configuration specified" && exit 5
_mysql_cmd="mysql -uroot -e "
ssh -T $ssh_root << EOSSH
if mysql --version ; then
echo "ERROR: unable to install MariaDb, 'mysql' already installed - aborting install"
exit 35
fi
echo "Installing MariaDB"
export DEBIAN_FRONTEND=noninteractive
echo "Installing packages .."
apt-get install -qq -y mariadb-server
echo "Packages installed"
$_mysql_cmd "DELETE FROM mysql.user WHERE User='';"
$_mysql_cmd "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');"
$_mysql_cmd "DROP DATABASE IF EXISTS test;"
$_mysql_cmd "DELETE FROM mysql.db WHERE Db='test' OR Db='"'test\\_%'"'"
$_mysql_cmd "CREATE DATABASE $db_name;"
$_mysql_cmd "GRANT ALL PRIVILEGES ON $db_name.* TO '$db_user'@'localhost' IDENTIFIED BY '$db_pass';"
$_mysql_cmd "FLUSH PRIVILEGES;"
mysqladmin --user=root password "$db_root_pass"
mysqladmin --user=root --password="$db_root_pass" flush-privileges
EOSSH

View File

@ -1,36 +0,0 @@
#!/bin/sh
if [ "$mysql_version" != 'latest' ] ; then
echo 'ERROR: unable to install MySQL - only '"'latest'"' version currently supported'
exit 30
fi
# check we have ssh access
[ -z "$ssh_root" ] && echo "Error: no root ssh configuration specified" && exit 5
_mysql_cmd="mysql -uroot -e "
ssh -T $ssh_root << EOSSH
if mysql --version ; then
echo "ERROR: unable to install MySQL, 'mysql' already installed - aborting install"
exit 35
fi
echo "Installing MySQL"
export DEBIAN_FRONTEND=noninteractive
echo "Installing packages .."
apt-get install -qq -y mysql-server
echo "Packages installed"
$_mysql_cmd "DELETE FROM mysql.user WHERE User='';"
$_mysql_cmd "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');"
$_mysql_cmd "DROP DATABASE IF EXISTS test;"
$_mysql_cmd "DELETE FROM mysql.db WHERE Db='test' OR Db='"'test\\_%'"'"
$_mysql_cmd "CREATE DATABASE $db_name;"
$_mysql_cmd "GRANT ALL PRIVILEGES ON $db_name.* TO '$db_user'@'localhost' IDENTIFIED BY '$db_pass';"
$_mysql_cmd "FLUSH PRIVILEGES;"
mysqladmin --user=root password "$db_root_pass"
mysqladmin --user=root --password="$db_root_pass" flush-privileges
EOSSH

View File

@ -1,37 +0,0 @@
#!/bin/sh
if [ "$php_version" != 'latest' ] ; then
echo 'ERROR: unable to install PHP - only '"'latest'"' version currently supported'
exit 30
fi
# check we have ssh access
[ -z "$ssh_root" ] && echo "Error: no root ssh configuration specified" && exit 5
if [ -n "$wp_user" ] ; then
echo 'Installing PHP for WordPress ...'
ssh -T $ssh_root << 'EOSSH'
export DEBIAN_FRONTEND=noninteractive
echo "Installing packages .."
apt-get install -qq -y php libapache2-mod-php php-fpm php-bcmath php-curl php-gd php-imagick php-mbstring \
php-mysql php-soap php-xml php-zip
echo "Packages installed"
_php_config_file=$(php --ini | grep Loaded | awk '{ print $4 }')
sed -i '/memory_limit/c\memory_limit = 256M' "$_php_config_file"
sed -i '/upload_max_filesize/c\upload_max_filesize = 64M' "$_php_config_file"
sed -i '/post_max_size/c\post_max_size = 64M' "$_php_config_file"
sed -i '/max_execution_time/c\max_execution_time = 300M' "$_php_config_file"
sed -i '/max_input_time/c\max_input_time = 1000' "$_php_config_file"
EOSSH
else
echo 'Installing default PHP ...'
ssh -T $ssh_root << EOSSH
export DEBIAN_FRONTEND=noninteractive
echo "Installing packages .."
apt-get install -qq -y php libapache2-mod-php php-mysql
echo "Packages installed"
EOSSH
fi

View File

@ -1,73 +0,0 @@
#!/bin/sh
# check we have ssh access
[ -z "$ssh_root" ] && echo "Error: no root ssh configuration specified" && exit 5
_home_dir="/home/$user"
ssh -T $ssh_root << EOSSH
echo "Creating user .."
useradd -m -d "$_home_dir" "$user"
echo "$user:$user_pass" | chpasswd
usermod -aG sudo "$user"
EOSSH
echo "Configuring ssh .."
ssh $ssh_root mkdir -v -p "$_home_dir/.ssh"
scp files/private/id_rsa "$ssh_root:$_home_dir/.ssh/"
scp files/id_rsa.pub "$ssh_root:$_home_dir/.ssh/"
scp files/known_hosts "$ssh_root:$_home_dir/.ssh/"
ssh -T $ssh_root << EOSSH
cp -v /root/.ssh/authorized_keys "$_home_dir/.ssh/authorized_keys"
chown -v -R "$user:$group" "$_home_dir/.ssh"
echo "Adding user: $user"
if [ -f /etc/locale.gen ] && command -v locale-gen ; then
echo 'en_GB.UTF-8 UTF-8' > /etc/locale.gen
locale-gen
echo 'LANG="en_GB.UTF-8"' > /etc/default/locale
else
echo 'Warning: cannot set locale'
fi
echo "Installing required packages .."
export DEBIAN_FRONTEND=noninteractive
echo "Installing packages .."
apt-get -qq -y install sudo git tmux zsh curl
echo "Packages installed"
echo "Cloning configuration files .."
su --login "$user"
git config --global user.name rayelliott
git config --global user.email dev@rayelliott.dev
mkdir -v -p "$_home_dir/.config"
if [ -e "$_home_dir/.config/profile" ] ; then
mv -v "$_home_dir/.config/profile" "$_home_dir/.config/profile-original-$(date +%s)"
fi
git clone ssh://git@git.rayelliott.dev:3222/dots/profile.git "$_home_dir/.config/profile"
"$_home_dir/.config/profile/install.sh"
if [ -e "$_home_dir/.config/tmux" ] ; then
mv -v "$_home_dir/.config/tmux" "$_home_dir/.config/tmux-original-$(date +%s)"
fi
git clone ssh://git@git.rayelliott.dev:3222/dots/tmux.git "$_home_dir/.config/tmux"
"$_home_dir/.config/tmux/install.sh"
if [ -e "$_home_dir/.config/zsh" ] ; then
mv -v "$_home_dir/.config/zsh" "$_home_dir/.config/zsh-original-$(date +%s)"
fi
git clone ssh://git@git.rayelliott.dev:3222/dots/zsh.git "$_home_dir/.config/zsh"
"$_home_dir/.config/zsh/install.sh"
EOSSH
ssh -T $ssh_root << EOSSH
chsh -s /usr/bin/zsh "$user"
EOSSH
echo "Configuring wakatime plugin .."
pwd
scp files/private/wakatime.cfg "$user@$domain:/home/$user/.wakatime.cfg"

View File

@ -1,114 +0,0 @@
echo "Installing WordPress .."
# 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
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 \
&& chmod +x /usr/local/bin/wp
fi
EOSSH
ssh -T $ssh_user << EOSSH
if wp core is-installed --quiet --path="$wp_path" ; then
echo "WordPress already installed"
else
echo "wp core download \
--version=$wp_version \
--path=$wp_path \
--skip-content \
--locale=$wp_locale"
wp core download \
--version="$wp_version" \
--path="$wp_path" \
--skip-content \
--locale="$wp_locale"
wp config create \
--path="$wp_path" \
--dbname="$db_name" \
--dbuser="$db_user" \
--dbpass="$db_pass" \
--locale="$wp_locale" \
--extra-php <<PHP
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
PHP
wp core install \
--path="$wp_path" \
--url="$domain" \
--title="$wp_title" \
--admin_user="$wp_user" \
--admin_password="$wp_pass" \
--admin_email="$wp_email"
fi
EOSSH
if [ -n "$wp_themes" ] ; then
printf "\nInstalling themes ..."
option='--activate'
for theme in $wp_themes ; do
echo " installing $theme ..."
ssh -T $ssh_user << EOSSH
wp theme install $theme "$option" --path="$wp_path"
EOSSH
option=''
done
fi
if [ -n "$wp_plugins" ] ; then
printf "\nInstalling plugins ..."
for plugin in $wp_plugins ; do
echo " installing $plugin ..."
ssh -T $ssh_user << EOSSH
wp plugin install $plugin --path="$wp_path"
EOSSH
done
fi
if [ -n "$wp_plugins_active" ] ; then
printf "\nInstalling plugins to activate ..."
for plugin in $wp_plugins_active ; do
echo " installing $plugin ..."
ssh -T $ssh_user << EOSSH
wp plugin install $plugin --activate --path="$wp_path"
EOSSH
done
fi
if [ -n "$_apache2_version" ] ; then
ssh -T $ssh_root << EOSSH
if [ -n "$apache2_version" ] ; then
mkdir -p /var/log/wordpress/
cat << EOF > /etc/apache2/sites-available/wordpress.conf
<VirtualHost *:80>
ServerName $domain
DocumentRoot $wp_path
ErrorLog /var/log/wordpress/error.log
CustomLog /var/log/wordpress/access.log combined
<Directory $wp_path/>
AllowOverride All
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
</Directory>
</VirtualHost>
EOF
a2enmod rewrite
a2ensite wordpress
a2dissite 000-default
systemctl reload apache2
elif [ -n "nginx_version" ] ; then
echo "TODO - nginx wordpress config"
elif [ -n "litespeed_version" ] ; then
echo "TODO - litespeed wordpress config"
else
echo "Warning: no webserver configuration found"
fi
EOSSH
fi

View File

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

60
scripts/install-dev-env.sh Executable file
View File

@ -0,0 +1,60 @@
#!/bin/sh
_user="www-data"
_home_dir="/home/$_user"
echo "Installing packages .."
export DEBIAN_FRONTEND=noninteractive
echo "Installing packages .."
apt-get -qq -y install curl gnupg2 ninja-build gettext libtool libtool-bin autoconf automake cmake g++ pkg-config unzip python-pip python3-pip fzf vim ctags git
echo "----------------------------------------------------------------------------"
echo "Installing lazygit .."
curl -fsSL https://github.com/jesseduffield/lazygit/releases/download/v0.22.1/lazygit_0.22.1_Linux_x86_64.tar.gz --output /tmp/lazygit.tar.gz
tar xf /tmp/lazygit.tar.gz -C /usr/local/bin/
rm -v /tmp/lazygit.tar.gz
echo "----------------------------------------------------------------------------"
echo "Installing lf ..."
curl -fsSL https://github.com/gokcehan/lf/releases/download/r16/lf-linux-amd64.tar.gz --output /tmp/lf.tar.gz
tar xf /tmp/lf.tar.gz -C /usr/local/bin/
rm -v /tmp/lf.tar.gz
echo "----------------------------------------------------------------------------"
echo "Installing neovim ..."
git clone https://github.com/neovim/neovim /tmp/neovim
cd /tmp/neovim
make -s CMAKE_BUILD_TYPE=Release
make -s install
if command -v php ; then
echo "Installing composer .."
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# php -r "if (hash_file('sha384', 'composer-setup.php') === '8a6138e2a05a8c28539c9f0fb361159823655d7ad2deecb371b04a83966c61223adc522b0189079e3e9e277cd72b8897') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php --filename=composer --install-dir=/usr/local/bin
php -r "unlink('composer-setup.php');"
fi
echo "----------------------------------------------------------------------------"
echo "Installing nvm ..."
su --login "$_user" -c 'curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash'
echo 'export NVM_DIR="$HOME/.nvm"' >> "$_home_dir/.profile"
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >> "$_home_dir/.profile"
su --login "$_user" -c 'nvm install --lts --latest-npm'
echo "----------------------------------------------------------------------------"
echo "Configuring neovim ..."
su --login "$_user" -c 'npm install -g neovim \
&& python2 -m pip install --user --upgrade pynvim \
&& python3 -m pip install --user --upgrade pynvim \
&& python3 -m pip install --user --upgrade neovim-remote'
su --login "$_user" -c 'git clone https://git.rayelliott.dev/dots/nvim.git "$HOME"/.config/nvim \
&& curl -fLo "$HOME"/.config/nvim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim \
&& nvim --headless +PlugInstall +qall'
echo "----------------------------------------------------------------------------"
echo "Configuring lf .."
su --login "$_user" -c 'git clone https://git.rayelliott.dev/dots/lf.git "$HOME"/.config/lf'

View File

@ -0,0 +1,9 @@
#!/bin/sh
_remote_mysql_user='qfyjgprzay'
_remote_mysql_pass='XgxJ5vTbz2'
_remote_mysql_db='qfyjgprzay'
ssh octobercms@staging.rayelliott.dev "mysqldump -u$_remote_mysql_user -p$_remote_mysql_pass $_remote_mysql_db | gzip -9" > dbremote.sql.gz
gunzip dbremote.sql.gz
mysql -uroot october < dbremote.sql

View File

@ -0,0 +1,6 @@
#!/bin/sh
_remote_base_dir='public_html'
_remote_ssh='octobercms@staging.rayelliott.dev'
rsync -azP "$_remote_ssh:$_remote_base_dir/storage $_remote_base_dir/themes $_remote_base_dir/plugins" /srv/octobercms/ --delete-before

View File

@ -0,0 +1,46 @@
#!/bin/sh
# NOTE - if changing the user, then the will need to edit apache config also
_user="www-data"
sudo apt install -y php php-ctype php-fileinfo php-sqlite3 php-cli php-mysql php-zip php-json php-gd php-mbstring php-curl php-xml php-pear php-bcmath php-pdo openssl mariadb-server vim unzip curl
sudo mysql -uroot << EOSQL
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE User = 'root';
CREATE USER 'october'@'localhost' IDENTIFIED BY 'october';
CREATE DATABASE october;
GRANT ALL ON october.* TO 'october'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EOSQL
sudo apt -y install apache2 libapache2-mod-php
mkdir /srv/octobercms && cd /srv/octobercms
php -r "eval('?>'.file_get_contents('https://octobercms.com/api/installer'));"
sudo chown -R "$_user":"$_user" /srv/octobercms
sudo -u "$_user" php artisan october:install
cat << 'EOF' > octobercms.conf
<VirtualHost *:80>
DocumentRoot /srv/octobercms/
ServerName october.home
ServerAlias october.home
<Directory /srv/octobercms/>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/octobercms-error.log
CustomLog /var/log/apache2/octobercms-access.log combined
</VirtualHost>
EOF
sudo mv octobercms.conf /etc/apache2/sites-enabled/
sudo chown root:root /etc/apache2/sites-enabled/octobercms.conf
sudo rm /etc/apache2/sites-available/000-default.conf
sudo a2enmod rewrite
sudo systemctl restart apache2
echo "Now open 'http://localhost/backend/'"