diff --git a/seqs/mysql.sh b/seqs/mysql.sh new file mode 100755 index 0000000..1e61e93 --- /dev/null +++ b/seqs/mysql.sh @@ -0,0 +1,166 @@ +#!/bin/bash + +# Mysql management using mariadb + +databaseName="mariadb" +databasePackages="mariadb-server mariadb-client" + +step_1_info() { + echo "Installation of ${databaseName} packages:" + echoinfo "$databasePackages" +} +step_1_alias() { ALIAS=install; } +step_1() { + exe apt update + exe apt install $databasePackages + endReturn -o $? "Error instaling $databaseName" +} + +step_2_info() { echo "Secure ${databaseName} installation"; } +step_2() { + exe mysql_secure_installation +} + +step_3_info() { echo -e "${databaseName} configuration\n"; } +step_3() { + addConf -c "$mariadbConfig" "$mariadbConfigLoc" + + echo -n "Restarting mysql ... " + exe service mysql restart && echo "ok" +} +mariadbConfigLoc="/etc/mysql/mariadb.conf.d/90-myconfig.cnf" +mariadbConfig="[mysqld] +innodb_large_prefix=on +innodb_file_format=barracuda +innodb_file_per_table=true + +lower_case_table_names=0 + +#innodb_force_recovery=6" + +step_10_info() { echo "Create mysql database without specific characterset"; } +step_10_alias() { ALIAS="createdb"; } +step_10() { + local mysqlDatabase + local mysqlUser + local mysqlPass + + echo " [I] Existing mysql databases:" + exe mysql -u root -e 'SHOW DATABASES;' + + read -p "Enter database name: " mysqlDatabase + endCheckEmpty mysqlDatabase "database name" + exe mysql -u root -e 'CREATE DATABASE '$mysqlDatabase';' + endReturn -o $? "Cannot create database $mysqlDatabase" + + echo " [I] Existing mysql user:" + exe mysql -u root -e 'SELECT User, Host FROM mysql.user;' + read -p "Enter mysql user name: " mysqlUser + endCheckEmpty mysqlUser "user name" + + read -s -p "Enter mysql user password: " mysqlPass + endCheckEmpty mysqlPass "password" + exe mysql -u root -e 'CREATE USER '"'"$mysqlUser"'"'@'"'"'localhost'"'"' IDENTIFIED BY '"'"$mysqlPass"'"';' + saveReturn $? + endReturn + + exe mysql -u root -e 'GRANT ALL PRIVILEGES ON '$mysqlDatabase'.* TO '"'"$mysqlUser"'"'@'"'"'localhost'"'"';' + saveReturn $? + endReturn + + exe mysql -u root -e 'FLUSH PRIVILEGES;' +} + +step_12_info() { echo -e "Create mysql database with characterset utf8mb4\n"; } +step_12_alias() { ALIAS="createdb_utf8mb4"; } +step_12() { + local mysqlDatabase + local mysqlUser + local mysqlPass + + echo "Existing mysql databases:" + exe mysql -u root -e 'SHOW DATABASES;' + + read -p "Enter database name: " mysqlDatabase + endCheckEmpty mysqlDatabase "database name" + # it is recommended NOT to use utf8mb4_general_ci anymore + exe mysql -u root -e 'CREATE DATABASE '$mysqlDatabase' CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;' + endReturn -o $? "Cannot create database $mysqlDatabase" + + echo "Existing mysql user:" + exe mysql -u root -e 'SELECT User, Host FROM mysql.user;' + read -p "Enter mysql user name: " mysqlUser + endCheckEmpty mysqlUser "user name" + + read -s -p "Enter mysql user password: " mysqlPass + endCheckEmpty mysqlPass "password" + exe mysql -u root -e 'CREATE USER '"'"$mysqlUser"'"'@'"'"'localhost'"'"' IDENTIFIED BY '"'"$mysqlPass"'"';' + saveReturn $? + endReturn + + exe mysql -u root -e 'GRANT ALL PRIVILEGES ON '$mysqlDatabase'.* TO '"'"$mysqlUser"'"'@'"'"'localhost'"'"';' + saveReturn $? + endReturn + + exe mysql -u root -e 'FLUSH PRIVILEGES;' +} + +step_14_info() { echo "List mysql databases"; } +step_14_alias() { ALIAS="listdb"; } +step_14() { + exe mysql -u root -e 'SHOW DATABASES;' + echo -e "\nDrop userdb by: mysql -u root -e 'DROP DATABASE userdb;'" +} + +step_16_info() { echo "List mysql user"; } +step_16_alias() { ALIAS="listdbuser"; } +step_16() { + exe mysql -u root -e 'SELECT User, Host FROM mysql.user;' + echo -e "\nDrop dbuser by: mysql -u root -e 'DROP USER dbuser@localhost;'" +} + +step_18_info() { echo "Size of database [DATABASE_NAME]"; } +step_18_alias() { ALIAS="sizedb"; } +step_18() { + if [ -z "$2" ]; then + echo "Please provide a database name. e.g. $0 sizedb mydb_db" + else + exe mysql -u root -e 'SELECT table_schema "DB Name", + ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" + FROM information_schema.tables + WHERE table_schema="'$2'" + GROUP BY table_schema;' + fi +} + +step_20_info() { echo "Backup and restore a mysql database"; } +step_20_alias() { ALIAS="backup"; } +step_20() { + echo "Dump the existing database with:" + echo " mysqldump --single-transaction nextcloud_db > NextcloudBackup_DB_\`date +\"%Y%m%d\"\`.sql" + echo + echo "Restore with:" + echo " mysql -e \"DROP DATABASE nextcloud_db\"" + echo " mysql -e \"CREATE DATABASE nextcloud_db\"" + echo " mysql nextcloud_db < NextcloudBackup_DB_20170912.sql" +} + +# Read database information dbname/user/pass if empty +readDatabaseInfos() { + if [ "$dbName" == "" ] ; then + read -p "Enter postgres database name: " dbName + endCheckEmpty dbName "database" + fi + if [ "$dbUser" == "" ] ; then + read -p "Enter postgres user name: " dbUser + endCheckEmpty dbUser "user name" + fi + if [ "$dbPass" == "" ] ; then + read -s -p "Enter postgres password: " dbPass + endCheckEmpty postgresPass "password" + fi + echo +} + +VERSION_SEQREV=9 +. /usr/local/bin/sequencer.sh diff --git a/seqs/webserver.sh b/seqs/webserver.sh index 295065e..7db8d60 100755 --- a/seqs/webserver.sh +++ b/seqs/webserver.sh @@ -2,19 +2,17 @@ serverName="nginx" serverPackages="nginx" -databaseName="mariadb" -databasePackages="mariadb-server mariadb-client" phpVersion="7.3" phpName="php${phpVersion}" phpPackages="${phpName}-fpm ${phpName}-json ${phpName}-mysql ${phpName}-curl ${phpName}-intl ${phpName}-gd ${phpName}-zip ${phpName}-xml ${phpName}-mbstring php-imagick php-apcu" -step_1_info() { echo -e "Installation of $serverName and ${databaseName} packages:\n $serverPackages $databasePackages"; } +step_1_info() { + echo "Installation of $serverName packages:" + echoinfo "$serverPackages" +} step_1_alias() { ALIAS=install; } step_1() { exe apt update - exe apt install $databasePackages - saveReturn $? - endReturn exe apt install $serverPackages saveReturn $? endReturn @@ -42,13 +40,12 @@ step_2() { saveReturn $? endReturn } - snippetLetsencryptLoc="/etc/nginx/snippets/letsencrypt.conf" siteLetsencryptWww="/var/www/letsencrypt" snippetLetsencrypt="\ - location ^~ /.well-known/acme-challenge/ { - default_type \"text/plain\"; - root ${siteLetsencryptWww}; +location ^~ /.well-known/acme-challenge/ { +default_type \"text/plain\"; +root ${siteLetsencryptWww}; }" siteDefaultLoc="/etc/nginx/sites-available/default" siteDefaultIp4="server { @@ -57,174 +54,39 @@ listen 80 default_server; include ${snippetLetsencryptLoc}; }" -step_3_info() { echo "Secure mariadb installation"; } +step_3_info() { echo "Installation of $phpName packages:" + echoinfo "$phpPackages"; } step_3() { - exe mysql_secure_installation -} - -step_4_info() { echo "Mariadb configuration"; } -step_4() { - addConf -c "$mariadbConfig" "$mariadbConfigLoc" - - echo -n "Restarting mysql ... " - exe service mysql restart && echo "ok" -} - -mariadbConfigLoc="/etc/mysql/mariadb.conf.d/90-myconfig.cnf" -mariadbConfig="\ - [mysqld] - innodb_large_prefix=on - innodb_file_format=barracuda - innodb_file_per_table=true - - lower_case_table_names=0 - -#innodb_force_recovery=6" - -step_5_info() { echo -e "Installation of $phpName packages:\n $phpPackages"; } -step_5() { exe apt install $phpPackages } - phpFpmConfigLocation="/etc/php/${phpVersion}/fpm/conf.d/90-custom_pi.ini" -phpFpmConfig="\ - post_max_size=64M - upload_max_filesize=100M - max_execution_time=600 +phpFpmConfig="post_max_size=64M +upload_max_filesize=100M +max_execution_time=600 - apc.enable_cli=1 +apc.enable_cli=1 - date.timezone = Europe/Berlin +date.timezone = Europe/Berlin - opcache.enable=1 - opcache.enable_cli=1 - opcache.interned_strings_buffer=8 - opcache.max_accelerated_files=10000 - opcache.memory_consumption=128 - opcache.save_comments=1 - opcache.revalidate_freq=1" +opcache.enable=1 +opcache.enable_cli=1 +opcache.interned_strings_buffer=8 +opcache.max_accelerated_files=10000 +opcache.memory_consumption=128 +opcache.save_comments=1 +opcache.revalidate_freq=1" +phpCliConfigLocation="/etc/php/${phpVersion}/cli/conf.d/90-custom_pi.ini" +phpCliConfig="\ +date.timezone = Europe/Berlin" - phpCliConfigLocation="/etc/php/${phpVersion}/cli/conf.d/90-custom_pi.ini" - phpCliConfig="\ - date.timezone = Europe/Berlin" +step_4_info() { echo -e "Configuration of ${phpName} fpm and cli\n"; } +step_4() { + addConf -c "$phpFpmConfig" "$phpFpmConfigLocation" + addConf -c "$phpCliConfig" "$phpCliConfigLocation" - step_6_info() { echo -e "Configuration of ${phpName} fpm and cli\n"; } - step_6() { - addConf -c "$phpFpmConfig" "$phpFpmConfigLocation" - addConf -c "$phpCliConfig" "$phpCliConfigLocation" - - echo -n "Restarting ${phpName} ... " - exe service ${phpName}-fpm restart && echo "ok" - } - -step_10_info() { echo -e "Create mysql database without specific characterset\n"; } -step_10_alias() { ALIAS="createdb"; } -step_10() { - local mysqlDatabase - local mysqlUser - local mysqlPass - - echo "Existing mysql databases:" - exe mysql -u root -e 'SHOW DATABASES;' - - read -p "Enter database name: " mysqlDatabase - endCheckEmpty mysqlDatabase "database name" - exe mysql -u root -e 'CREATE DATABASE '$mysqlDatabase';' - saveReturn $? - endReturn - - echo "Existing mysql user:" - exe mysql -u root -e 'SELECT User, Host FROM mysql.user;' - read -p "Enter mysql user name: " mysqlUser - endCheckEmpty mysqlDatabase "user name" - - read -s -p "Enter mysql user password: " mysqlPass - endCheckEmpty mysqlPass "password" - exe mysql -u root -e 'CREATE USER '"'"$mysqlUser"'"'@'"'"'localhost'"'"' IDENTIFIED BY '"'"$mysqlPass"'"';' - saveReturn $? - endReturn - - exe mysql -u root -e 'GRANT ALL PRIVILEGES ON '$mysqlDatabase'.* TO '"'"$mysqlUser"'"'@'"'"'localhost'"'"';' - saveReturn $? - endReturn - - exe mysql -u root -e 'FLUSH PRIVILEGES;' + echo -n "Restarting ${phpName} ... " + exe service ${phpName}-fpm restart && echo "ok" } -step_12_info() { echo -e "Create mysql database with characterset utf8mb4\n"; } -step_12_alias() { ALIAS="createdb_utf8mb4"; } -step_12() { - local mysqlDatabase - local mysqlUser - local mysqlPass - - echo "Existing mysql databases:" - exe mysql -u root -e 'SHOW DATABASES;' - - read -p "Enter database name: " mysqlDatabase - endCheckEmpty mysqlDatabase "database name" - # it is recommended NOT to use utf8mb4_general_ci anymore - exe mysql -u root -e 'CREATE DATABASE '$mysqlDatabase' CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;' - saveReturn $? - endReturn - - echo "Existing mysql user:" - exe mysql -u root -e 'SELECT User, Host FROM mysql.user;' - read -p "Enter mysql user name: " mysqlUser - endCheckEmpty mysqlDatabase "user name" - - read -s -p "Enter mysql user password: " mysqlPass - endCheckEmpty mysqlPass "password" - exe mysql -u root -e 'CREATE USER '"'"$mysqlUser"'"'@'"'"'localhost'"'"' IDENTIFIED BY '"'"$mysqlPass"'"';' - saveReturn $? - endReturn - - exe mysql -u root -e 'GRANT ALL PRIVILEGES ON '$mysqlDatabase'.* TO '"'"$mysqlUser"'"'@'"'"'localhost'"'"';' - saveReturn $? - endReturn - - exe mysql -u root -e 'FLUSH PRIVILEGES;' -} - -step_14_info() { echo "List mysql databases"; } -step_14_alias() { ALIAS="listdb"; } -step_14() { - exe mysql -u root -e 'SHOW DATABASES;' - echo -e "\nDrop userdb by: mysql -u root -e 'DROP DATABASE userdb;'" -} - -step_16_info() { echo "List mysql user"; } -step_16_alias() { ALIAS="listdbuser"; } -step_16() { - exe mysql -u root -e 'SELECT User, Host FROM mysql.user;' - echo -e "\nDrop dbuser by: mysql -u root -e 'DROP USER dbuser@localhost;'" -} - -step_18_info() { echo "Size of database [DATABASE_NAME]"; } -step_18_alias() { ALIAS="sizedb"; } -step_18() { - if [ -z "$2" ]; then - echo "Please provide a database name. e.g. $0 sizedb mydb_db" - else - exe mysql -u root -e 'SELECT table_schema "DB Name", - ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" - FROM information_schema.tables - WHERE table_schema="'$2'" - GROUP BY table_schema;' - fi -} - -step_20_info() { echo "Backup and restore a mysql database"; } -step_20_alias() { ALIAS="backup"; } -step_20() { - echo "Dump the existing database with:" - echo " mysqldump --single-transaction nextcloud_db > NextcloudBackup_DB_\`date +\"%Y%m%d\"\`.sql" - echo - echo "Restore with:" - echo " mysql -e \"DROP DATABASE nextcloud_db\"" - echo " mysql -e \"CREATE DATABASE nextcloud_db\"" - echo " mysql nextcloud_db < NextcloudBackup_DB_20170912.sql" -} - -VERSION_SEQREV=5 -. sequencer.sh +VERSION_SEQREV=9 +. /usr/local/bin/sequencer.sh diff --git a/seqs/webserverUbuntu.sh b/seqs/webserverUbuntu.sh index de706b5..0410133 100755 --- a/seqs/webserverUbuntu.sh +++ b/seqs/webserverUbuntu.sh @@ -2,18 +2,15 @@ serverName="nginx" serverPackages="nginx" -databaseName="mariadb" -databasePackages="mariadb-server mariadb-client" phpVersion="7.2" phpName="php$phpVersion" phpPackages="${phpName}-fpm ${phpName}-json ${phpName}-mysql ${phpName}-curl ${phpName}-intl ${phpName}-gd ${phpName}-zip ${phpName}-xml ${phpName}-mbstring php-imagick php-apcu" -step_1_info() { echo -e "Installation of $serverName and ${databaseName} packages:\n $serverPackages $databasePackages"; } +step_1_info() { echo "Installation of $serverName packages:" + echoinfo "$serverPackages"; } step_1_alias() { ALIAS="install"; } step_1() { exe apt update - exe apt install $databasePackages - endReturn -o $? "Database package installation error" exe apt install $serverPackages endReturn -o $? "Server package installation error" } @@ -39,7 +36,6 @@ step_2() { exe service nginx restart && echo "ok" endReturn -o $? "Nginx error during startup" } - snippetLetsencryptLoc="/etc/nginx/snippets/letsencrypt.conf" siteLetsencryptWww="/var/www/letsencrypt" snippetLetsencrypt="\ @@ -54,38 +50,12 @@ siteDefaultIp4="server { include ${snippetLetsencryptLoc}; }" -step_3_info() { echo "Secure mariadb installation"; } +step_3_info() { echo "Installation of $phpName packages:" + echoinfo "$phpPackages"; } step_3() { - exe mysql_secure_installation -} - -step_4_info() { echo "Mariadb configuration"; } -step_4() { - addConf -c "$mariadbConfig" "$mariadbConfigLoc" - - echo -n " [I] Restarting mysql ... " - exe service mysql restart - endReturn -o $? "Mariadb error during startup" - echo "ok" -} - -mariadbConfigLoc="/etc/mysql/mariadb.conf.d/90-myconfig.cnf" -mariadbConfig="\ -[mysqld] -innodb_large_prefix=on -innodb_file_format=barracuda -innodb_file_per_table=true - -lower_case_table_names=0 - -#innodb_force_recovery=6" - -step_5_info() { echo -e "Installation of $phpName packages:\n $phpPackages"; } -step_5() { exe apt install $phpPackages endReturn -o $? "$phpName error during startup" } - phpFpmConfigLocation="/etc/php/${phpVersion}/fpm/conf.d/90-custom_pi.ini" phpFpmConfig="\ post_max_size=64M @@ -107,8 +77,8 @@ phpCliConfigLocation="/etc/php/${phpVersion}/cli/conf.d/90-custom_pi.ini" phpCliConfig="\ date.timezone = Europe/Berlin" -step_6_info() { echo -e "Configuration of ${phpName} fpm and cli\n"; } -step_6() { +step_4_info() { echo -e "Configuration of ${phpName} fpm and cli\n"; } +step_4() { addConf -c "$phpFpmConfig" "$phpFpmConfigLocation" addConf -c "$phpCliConfig" "$phpCliConfigLocation" @@ -118,75 +88,5 @@ step_6() { echo "ok" } -step_10_info() { echo -e "Create mysql database without specific characterset\n"; } -step_10_alias() { ALIAS="createdb"; } -step_10() { - local mysqlDatabase - local mysqlUser - local mysqlPass - - echo "Existing mysql databases:" - exe mysql -u root -e 'SHOW DATABASES;' - - read -p "Enter database name: " mysqlDatabase - endCheckEmpty mysqlDatabase "database name" - exe mysql -u root -e 'CREATE DATABASE '$mysqlDatabase';' - saveReturn $? - endReturn - - echo "Existing mysql user:" - exe mysql -u root -e 'SELECT User, Host FROM mysql.user;' - read -p "Enter mysql user name: " mysqlUser - endCheckEmpty mysqlDatabase "user name" - - read -p "Enter mysql user password: " mysqlPass - endCheckEmpty mysqlPass "password" - exe mysql -u root -e 'CREATE USER '"'"$mysqlUser"'"'@'"'"'localhost'"'"' IDENTIFIED BY '"'"$mysqlPass"'"';' - saveReturn $? - endReturn - - exe mysql -u root -e 'GRANT ALL PRIVILEGES ON '$mysqlDatabase'.* TO '"'"$mysqlUser"'"'@'"'"'localhost'"'"';' - saveReturn $? - endReturn - - exe mysql -u root -e 'FLUSH PRIVILEGES;' -} - -step_12_info() { echo -e "Create mysql database with characterset utf8mb4\n"; } -step_12_alias() { ALIAS="createdb_utf8mb4"; } -step_12() { - local mysqlDatabase - local mysqlUser - local mysqlPass - - echo "Existing mysql databases:" - exe mysql -u root -e 'SHOW DATABASES;' - - read -p "Enter database name: " mysqlDatabase - endCheckEmpty mysqlDatabase "database name" - # it is recommended NOT to use utf8mb4_general_ci anymore - exe mysql -u root -e 'CREATE DATABASE '$mysqlDatabase' CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;' - saveReturn $? - endReturn - - echo "Existing mysql user:" - exe mysql -u root -e 'SELECT User, Host FROM mysql.user;' - read -p "Enter mysql user name: " mysqlUser - endCheckEmpty mysqlDatabase "user name" - - read -p "Enter mysql user password: " mysqlPass - endCheckEmpty mysqlPass "password" - exe mysql -u root -e 'CREATE USER '"'"$mysqlUser"'"'@'"'"'localhost'"'"' IDENTIFIED BY '"'"$mysqlPass"'"';' - saveReturn $? - endReturn - - exe mysql -u root -e 'GRANT ALL PRIVILEGES ON '$mysqlDatabase'.* TO '"'"$mysqlUser"'"'@'"'"'localhost'"'"';' - saveReturn $? - endReturn - - exe mysql -u root -e 'FLUSH PRIVILEGES;' -} - -VERSION_SEQREV=7 - -. sequencer.sh +VERSION_SEQREV=9 +. /usr/local/bin/sequencer.sh