diff --git a/toolbox/clone b/toolbox/clone new file mode 100755 index 0000000..8ba73ea --- /dev/null +++ b/toolbox/clone @@ -0,0 +1,102 @@ +#$/bin/bash +# +# needs +# +# 1. database dump +# 2. settings.php +# +# 1. clone drupal files from git +# 2. install drupal +# 3. create database +# 4. create database user +# + +RED="\e[0;31m" +GRN="\e[0;32m" +BLU="\e[0;34m" +WHT="\e[0;97m" +BOLDRED="\e[1;31m" +BOLDGRN="\e[1;32m" +BOLDBLU="\e[1;34m" +BOLDWHT="\e[1;97m" +END="\e[00m" + +BITBUCKET_USER='stevaidis' +BITBUCKET_PASS='ATBBTztz2mBYTYyy88WhGZUGNQmS712ED6FC' +REPO="bitbucket.org/dotsoft-sa/$1.git" +NAME=$2 + +DBUSER="root" +DBPASS="1234" + +# ./clone.sh https://stevaidis@bitbucket.org/dotsoft-sa/goint-backend.git +function ok() { + echo -e "${BOLDGRN}[ OK ]${END}" +} + +function fail() { + echo -e "${BOLDRED}[FAIL]${EMD}" + exit +} + +echo + +if [ ! -f $NAME.sql ]; then + echo -e "\n 😿 Database dump file ${BOLDBLU}$NAME.sql${END} does not exist here \n" + exit +fi + +if [ ! -f $NAME.settings.php ]; then + echo -e "\n 😿 Settings file ${BOLDBLU}$NAME.settings.php${END} does not exist here \n" + exit +fi + +git ls-remote --quiet https://${BITBUCKET_USER}:${BITBUCKET_PASS}@${REPO} > /dev/null +if [ $? -ne 0 ]; then + echo -e "\n 😿 Cant access this repository in bitbucket \n" + exit +fi + +echo -ne " 🍄 Clone repo to dir: $NAME ..." +git clone --quiet https://${BITBUCKET_USER}:${BITBUCKET_PASS}@${REPO} ${NAME} > /dev/null +if [ $? = 0 ]; then ok; else fail; fi + +echo "`date +'%d/%m/%Y %H:%M:%S'` Fresh clone" > $NAME.copy.log +cd $NAME +cp ../$NAME.settings.php sites/default/settings.php + +echo -ne " 🍒 Switch to new branch $NAME ..." +git checkout --quiet -b $2 > /dev/null +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🐬 Create database user $NAME with password '${DBPASS}' ..." +mysql -u${DBUSER} -p${DBPASS} -e "CREATE USER $NAME@localhost IDENTIFIED BY \"${DBPASS}\"" +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🐬 Create database $NAME ..." +mysql -u${DBUSER} -p${DBPASS} -e "CREATE DATABASE $NAME" +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🐬 Grand user ${NAME} permissions database ${NAME} ..." +mysql -u${DBUSER} -p${DBPASS} -e "GRANT ALL ON $NAME.* TO $NAME@localhost" +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🐬 Flush privilages ..." +mysql -u${DBUSER} -p${DBPASS} -e "FLUSH PRIVILEGES" +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🐬 Import $NAME.sql ..." +mysql -u${DBUSER} -p${DBPASS} $NAME < ../$NAME.sql +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🧰 Composer install ... " +COMPOSER_ALLOW_SUPERUSER=1 composer install > ../$NAME.composer.log 2>&1 +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🐷 Change files owner to user ${BOLDWHT}apache${END}" +chown apache:apache * -R +if [ $? = 0 ]; then ok; else fail; fi + +echo -e " 🚀 Ready to go!" +echo + diff --git a/toolbox/copy b/toolbox/copy new file mode 100755 index 0000000..0d8110d --- /dev/null +++ b/toolbox/copy @@ -0,0 +1,89 @@ +#!/bin/bash + +RED="\e[0;31m" +GRN="\e[0;32m" +BLU="\e[0;34m" +WHT="\e[0;97m" +BOLDRED="\e[1;31m" +BOLDGRN="\e[1;32m" +BOLDBLU="\e[1;34m" +BOLDWHT="\e[1;97m" +END="\e[00m" + +DBUSER="root" +DBPASS="1234" + +SRC=$1 +DST=$2 + +function ok() { + echo -e "${BOLDGRN} [ OK ]${END}" +} + +function fail() { + echo -e "${BOLDRED} [FAIL]${END}" + exit +} + +echo +read -p "Note for destination $DST.log: " NOTE +echo + +echo -ne " 🍄 Copy files from $SRC to $DST" +cp -rp $SRC $DST +cp $SRC.copy.log $DST.copy.log +echo >> $DST.copy.log +echo "`date +'%d/%m/%Y %H:%M:%S'` Copy from $SRC" >> $DST.copy.log +echo $NOTE >> $DST.copy.log +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🐬 Export old database $SRC" +mysqldump -u${DBUSER} -p${DBPASS} $SRC > $SRC.sql +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🐬 Create new database $DST" +mysql -u${DBUSER} -p${DBPASS} -e "create database $DST" +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🐬 Create database user $DST with password '1234' ..." +mysql -uroot -p1234 -e "CREATE USER $DST@localhost IDENTIFIED BY \"1234\"" +mysql -uroot -p1234 -e "GRANT ALL ON $DST.* TO $DST@localhost" +mysql -uroot -p1234 -e "FLUSH PRIVILEGES" +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🐬 Import old database $SRC to new $DST" +mysql -u${DBUSER} -p${DBPASS} $DST < $SRC.sql +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🍒 Drupal settings.php" +cd $DST +sed -i "s/$SRC/$DST/g" sites/default/settings.php +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🍒 link html to $DST" +unlink /var/www/html +ln -s /var/www/sites/$DST /var/www/html +if [ $? = 0 ]; then ok; else fail; fi + +echo +ls -l --color=auto /var/www/html +echo + +echo -ne " 🌈 Restart httpd " +systemctl restart httpd +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🌈 Restart php " +systemctl restart php-fpm +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🌈 Restart mysql " +systemctl restart mysql +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🚀 Drupal clear cache " +drush cr 2> /dev/null +if [ $? = 0 ]; then ok; else fail; fi + +echo + diff --git a/toolbox/db b/toolbox/db new file mode 100755 index 0000000..8ca5bae --- /dev/null +++ b/toolbox/db @@ -0,0 +1,164 @@ +#!/bin/bash + +RED="\e[0;31m" +GRN="\e[0;32m" +BLU="\e[0;34m" +WHT="\e[0;97m" +BOLDRED="\e[1;31m" +BOLDGRN="\e[1;32m" +BOLDBLU="\e[1;34m" +BOLDWHT="\e[1;97m" +END="\e[00m" + +DBUSER="root" +DBPASS="1234" + +function usage() { + echo + echo -e " ${BOLDWHT}db${END} v1.0 is a simple MySQL tool" + echo + echo -e " 🌈 \e[1mList\e[0m" + echo -e "${WHT}./db ${BOLDBLU}-lu${END} List users" + echo -e "${WHT}./db ${BOLDBLU}-ld${END} List databases" + echo -e "${WHT}./db ${BOLDBLU}-lt${BLU} dbname${END} List tables from dbname" + echo + echo -e " 🔥 \e[1mDelete\e[0m" + echo -e "${WHT}./db ${BOLDRED}-d${RED} xzy${END} Delete user & database" + echo -e "${WHT}./db ${BOLDRED}-du${RED} xzy${END} Delete user" + echo -e "${WHT}./db ${BOLDRED}-dd${RED} xzy${END} Delete database" + echo + echo -e " 🌱 \e[1mCreate\e[0m" + echo -e "${WHT}./db ${BOLDGRN}-c${GRN} xzy${END} Create user & database" + echo -e "${WHT}./db ${BOLDGRN}-cu${GRN} xzy${END} Create user" + echo -e "${WHT}./db ${BOLDGRN}-cd${GRN} xzy${END} Create database" + echo + echo -e " 🛟 \e[1mBackup\e[0m" + echo -e "${WHT}./db ${BOLDBLU}-e${BLU} dbname${END} Export database to dbname.sql" + echo -e "${WHT}./db ${BOLDBLU}-i${BLU} dbname dump.sql${END} Import dump.sql into dbname" + echo + exit +} + +# List + +function list_databases() { + mysql -u${DBUSER} -p${DBPASS} -Nse 'show databases' | grep -Ev '(information_schema|mysql|performance_schema)' +} + +function list_users() { + mysql -u${DBUSER} -p${DBPASS} -Nse "SELECT user FROM mysql.user WHERE user NOT IN ('root','mysql','mariadb.sys','mysql.sys')" +} + +function list_tables() { + echo -e "Database ${BOLDBLU}${1}${END} contains ${BOLDWHT}$(mysql -u${DBUSER} -p${DBPASS} -Nse "use $1; show tables;" | wc -l)${END} tables" +} + +# DELETE + +function delete_database() { + mysql -u${DBUSER} -p${DBPASS} -e "drop database $1" + list_databases | grep -e "^$1$" +} + +function delete_user() { + mysql -u${DBUSER} -p${DBPASS} -e "DROP USER '$1'@'localhost'" + list_users | grep -e "^$1$" +} + +function delete_all() { + delete_user $1 + delete_database $1 +} + + +# CREATE + +function create_database() { + mysql -u${DBUSER} -p${DBPASS} -e "create database $1" + echo -e "Database created: ${BOLDGRN}$(list_databases | grep $1)${END}" +} + +function create_user() { + mysql -u${DBUSER} -p${DBPASS} -e "CREATE USER $1@localhost IDENTIFIED BY '1234'" + mysql -u${DBUSER} -p${DBPASS} -e "GRANT ALL ON $1.* TO $1@localhost" + echo -e "User created: ${BOLDGRN}$(list_users | grep $1)${END}" +} + +function create_all() { + create_database $1 + create_user $1 +} + +# BACKUP + +function export_database() { + mysqldump -u${DBUSER} -p${DBPASS} $1 > $1.sql + ls -l $1.sql +} + +function import_database() { + echo -e "Before import database ${BOLDBLU}${1}${END} contains ${BOLDWHT}$(mysql -u${DBUSER} -p${DBPASS} -Nse "use $1; show tables;" | wc -l)${END} tables" + mysql -u${DBUSER} -p${DBPASS} $1 < $2 + echo -e "After import database ${BOLDBLU}${1}${END} contains ${BOLDWHT}$(mysql -u${DBUSER} -p${DBPASS} -Nse "use $1; show tables;" | wc -l)${END} tables" + systemctl restart mysql +} + +for i in "$@" +do + case $i in + -h) + usage + exit + ;; + -lu) + list_users + exit + ;; + -ld) + list_databases + exit + ;; + -lt) + list_tables $2 + exit + ;; + -dd) + delete_database $2 + exit + ;; + -du) + delete_user $2 + exit + ;; + -d) + delete_all $2 + exit + ;; + -cd) + create_database $2 + exit + ;; + -cu) + create_user $2 + exit + ;; + -c) + create_all $2 + exit + ;; + -e) + export_database $2 + exit + ;; + -i) + import_database $2 $3 + exit + ;; + *) + usage + exit + ;; + esac +done + +usage diff --git a/toolbox/db.png b/toolbox/db.png new file mode 100644 index 0000000..7b8d0a6 Binary files /dev/null and b/toolbox/db.png differ diff --git a/toolbox/delete b/toolbox/delete new file mode 100755 index 0000000..fbacd15 --- /dev/null +++ b/toolbox/delete @@ -0,0 +1,10 @@ +#!/bin/bash + +rm -rf $1 +rm -r $1.sql +rm -r $1.copy.log +rm -r $1.composer.log + +db -du $1 +db -dd $1 + diff --git a/toolbox/html b/toolbox/html new file mode 100755 index 0000000..c5922f5 --- /dev/null +++ b/toolbox/html @@ -0,0 +1,59 @@ +#!/bin/bash + +RED="\e[0;31m" +GRN="\e[0;32m" +BLU="\e[0;34m" +WHT="\e[0;97m" +BOLDRED="\e[1;31m" +BOLDGRN="\e[1;32m" +BOLDBLU="\e[1;34m" +BOLDWHT="\e[1;97m" +END="\e[00m" + +BASE_PATH="/var/www" + +function ok() { + echo -e "${BOLDGRN}[ OK ]${END}" +} + +function fail() { + echo -e "${BOLDRED}[FAIL]${END}" + exit +} + +if [ $# -eq 0 ]; then + echo + ls --color=auto -l $BASE_PATH/html + echo + exit +fi + +unlink $BASE_PATH/html +ln -s $BASE_PATH/sites/$1 $BASE_PATH/html +chown apache:apache $BASE_PATH/html -R + +echo +ls -l --color=auto $BASE_PATH/html +echo + +echo -ne " 🍄 Restart httpd " +systemctl restart httpd +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🍒 Restart php " +systemctl restart php-fpm +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🐬 Restart mysql " +systemctl restart mysql +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🐬 Drupal clear cache " +cd $1 && drush cr 2> /dev/null +if [ $? = 0 ]; then ok; else fail; fi + +echo +cd .. +tail -n 10 $1.copy.log +echo + diff --git a/toolbox/new b/toolbox/new new file mode 100755 index 0000000..e244588 --- /dev/null +++ b/toolbox/new @@ -0,0 +1,144 @@ +#!/bin/bash +# +# Create new Drupal installation +# + database +# + database user +# + +RED="\e[0;31m" +GRN="\e[0;32m" +BLU="\e[0;34m" +WHT="\e[0;97m" +BOLDRED="\e[1;31m" +BOLDGRN="\e[1;32m" +BOLDBLU="\e[1;34m" +BOLDWHT="\e[1;97m" +END="\e[00m" + +DBUSER="root" +DBPASS="1234" + +NAME=$1 + +function ok() { + echo -e "${BOLDGRN} [ OK ]${END}" +} + +function fail() { + echo -e "${BOLDRED} [FAIL]${END}" + echo + exit +} + +echo +echo -ne " 💧 Create new drupal in dir ${WHT}$NAME${END} ..." +CMD="composer --no-interaction create-project drupal/recommended-project:9.3.12 $NAME > /dev/null 2>&1" +CMD="composer create-project drupal/recommended-project:9 $NAME" +sudo su -l apache -s /bin/bash -c "cd $PWD; $CMD" +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🐬 Create database ${WHT}$NAME${END} ..." +mysql -uroot -p1234 -e "CREATE DATABASE $NAME" +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🐬 Create database user ${WHT}$NAME${END} with password '1234' ..." +mysql -uroot -p1234 -e "CREATE USER $NAME@localhost IDENTIFIED BY \"1234\"" +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🐬 Grand user ${WHT}${NAME}${END} permissions to database ${WHT}${NAME}${END} ..." +mysql -uroot -p1234 -e "GRANT ALL ON $NAME.* TO $NAME@localhost" +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🐬 Flush privilages ..." +mysql -uroot -p1234 -e "FLUSH PRIVILEGES" +if [ $? = 0 ]; then ok; else fail; fi + +# echo -ne " 🍒 Drupal settings.php" +# cd $NAME/web +# cp sites/default/default.settings.php sites/default/settings.php +# cat >> sites/default/settings.php < '$NAME', +# 'username' => '$NAME', +# 'password' => '1234', +# 'prefix' => '', +# 'host' => 'localhost', +# 'port' => '3306', +# 'namespace' => 'Drupal\\\\mysql\\\\Driver\\\\Database\\\\mysql', +# 'driver' => 'mysql', +# 'autoload' => 'core/modules/mysql/src/Driver/Database/mysql/', +# ); + +# EOL +# if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🐷 Change files owner to user ${WHT}apache${END}" +cd $NAME/web +mkdir sites/default/files +cd ../.. +chown apache:apache $NAME -R +find $NAME -type d -exec chmod 755 {} \; +find $NAME -type f -exec chmod 644 {} \; +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🍒 link html to ${WHT}$NAME${END}" +unlink /var/www/html +ln -s /var/www/sites/$NAME/web /var/www/html +if [ $? = 0 ]; then ok; else fail; fi + +echo +ls -l --color=auto /var/www/html +echo + +echo -ne " 🌈 Restart httpd " +systemctl restart httpd +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🌈 Restart php " +systemctl restart php-fpm +if [ $? = 0 ]; then ok; else fail; fi + +echo -ne " 🌈 Restart mysql " +systemctl restart mysql +if [ $? = 0 ]; then ok; else fail; fi + +echo +echo -e "Finish the installation..." +echo +echo -e "URL : http://192.168.56.101" +echo -e "Database: ${NAME}" +echo -e "Username: ${NAME}" +echo -e "Password: 1234" +echo +read -p "...and press [ENTER] to continue installing extra modules" +echo +exit + +echo -e "🍓" + +# Headless backend rest api server +drush en serialization +drush en rest +drush en jsonapi +drush cr + +composer require 'drupal/rest_views:^2.0' +drush en rest_views + +composer require 'drupal/restui:^1.21' +drush en restui + +composer require 'drupal/rpb:^1.0@beta' + +#composer require 'drupal/decoupled_rest_views:^1.0@alpha' +#composer require 'drupal/entity_rest_extra:^2.1' +#composer require 'drupal/rest_entity_recursive:^2.0@RC' + +# Devel +composer require 'drupal/rest_views:^2.0' +composer require 'drupal/devel' +rm -rf vendor/autoload.php vendor/autoload_runtime.php vendor/composer +composer install +drush cr +drush en devel_generate +