Major rewrite/cleanup with additional functionality (creating databases)

This commit is contained in:
2019-04-09 11:03:39 +01:00
parent 0789a586d2
commit 9fad2a9121

View File

@@ -1,52 +1,56 @@
#!/bin/bash #!/bin/bash
serverName="nginx" serverName="nginx"
serverPackages="nginx"
databaseName="mariadb" databaseName="mariadb"
phpPackages="php7.0-fpm php7.0-json php7.0-mysql php7.0-curl php7.0-intl php7.0-mcrypt php7.0-gd php7.0-zip php7.0-xml php7.0-mbstring php-imagick php-apcu" databasePackages="mariadb-server mariadb-client"
phpName="php7.0"
phpPackages="${phpName}-fpm ${phpName}-json ${phpName}-mysql ${phpName}-curl ${phpName}-intl ${phpName}-mcrypt ${phpName}-gd ${phpName}-zip ${phpName}-xml ${phpName}-mbstring php-imagick php-apcu"
step_1_info() { echo "Installation of $serverName and $databaseName"; } step_1_info() { echo -e "Installation of $serverName and ${databaseName} packages:\n $serverPackages $databasePackages"; }
step_1_alias() { ALIAS=install; } step_1_alias() { ALIAS=install; }
step_1() { step_1() {
apt update apt update
apt install mariadb-server mariadb-client apt install $databasePackages
saveReturn $? saveReturn $?
endReturn endReturn
apt install nginx apt install $serverPackages
saveReturn $? saveReturn $?
} }
step_2_info() { echo "Basic nginx configuration for initial letsencrypt reception"; } step_2_info() { echo "Basic nginx configuration for initial letsencrypt certificate creation"; }
step_2() { step_2() {
echo "$siteLetsencrypt" > "$siteLetsencryptLoc" # Writing acme-challenge code snipped for certbot web root authentication
cp -ar "$siteDefaultLoc" "$siteDefaultLoc".bck addConf "$snippetLetsencrypt" "$snippetLetsencryptLoc"
read -p "Enter your domain: " siteName
setMyDomain $siteName # Writing minimal default (see below)
addConf "$siteDefaultIp4" "$siteDefaultLoc"
# try fix errors on first install attempt
# (possible missing ipv6 support on system)
if [ $ERNO -ne 0 ] ; then if [ $ERNO -ne 0 ] ; then
apt install nginx apt install nginx
fi fi
mkdir -p /var/www/letsencrypt
echo "Restarting Nginx ..." # create webroot
service nginx restart mkdir -p "$siteLetsencryptWww"
echo -n "Restarting Nginx ... "
service nginx restart && echo "ok"
saveReturn $?
endReturn
} }
setMyDomain() { snippetLetsencryptLoc="/etc/nginx/snippets/letsencrypt.conf"
echo -n "$siteDefaultIp4" > "$siteDefaultLoc" siteLetsencryptWww="/var/www/letsencrypt"
echo -n "$1" >> "$siteDefaultLoc" snippetLetsencrypt="\
echo "$siteDefaultIp42" >> "$siteDefaultLoc"
}
siteLetsencryptLoc="/etc/nginx/snippets/letsencrypt.conf"
siteLetsencrypt="\
location ^~ /.well-known/acme-challenge/ { location ^~ /.well-known/acme-challenge/ {
default_type \"text/plain\"; default_type \"text/plain\";
root /var/www/letsencrypt; root ${siteLetsencryptWww};
}" }"
siteDefaultLoc="/etc/nginx/sites-available/default" siteDefaultLoc="/etc/nginx/sites-available/default"
siteDefaultIp4="server { siteDefaultIp4="server {
listen 80; listen 80 default_server;
#listen [::]:80;
server_name "
siteDefaultIp42=";
include ${siteLetsencryptLoc}; include ${siteLetsencryptLoc};
}" }"
@@ -58,7 +62,8 @@ step_3() {
step_4_info() { echo "Mariadb configuration"; } step_4_info() { echo "Mariadb configuration"; }
step_4() { step_4() {
echo "$mariadbConfig" > "$mariadbConfigLoc" addConf "$mariadbConfig" "$mariadbConfigLoc"
echo -n "Restarting mysql ... " echo -n "Restarting mysql ... "
service mysql restart && echo "ok" service mysql restart && echo "ok"
} }
@@ -74,7 +79,7 @@ lower_case_table_names=0
#innodb_force_recovery=6" #innodb_force_recovery=6"
step_5_info() { echo "Installation of PHP7.0"; } step_5_info() { echo -e "Installation of $phpName packages:\n $phpPackages"; }
step_5() { step_5() {
apt install $phpPackages apt install $phpPackages
} }
@@ -100,15 +105,82 @@ phpCliConfigLocation="/etc/php/7.0/cli/conf.d/90-custom_pi.ini"
phpCliConfig="\ phpCliConfig="\
date.timezone = Europe/Berlin" date.timezone = Europe/Berlin"
step_6_info() { echo "Configuration of PHP fpm and cli"; } step_6_info() { echo -e "Configuration of ${phpName} fpm and cli\n"; }
step_6() { step_6() {
echo -n "Writing $phpFpmConfigLocation ... " addConf "$phpFpmConfig" "$phpFpmConfigLocation"
echo "$phpFpmConfig" > "$phpFpmConfigLocation" && echo "ok" addConf "$phpCliConfig" "$phpCliConfigLocation"
echo -n "Writing $phpCliConfigLocation ... "
echo "$phpCliConfig" > "$phpCliConfigLocation" && echo "ok" echo "Restarting ${phpName} ... "
service php7.0-fpm restart 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:"
mysql -u root -e 'SHOW DATABASES;'
read -p "Enter database name: " mysqlDatabase
endCheckEmpty mysqlDatabase "database name"
mysql -u root -e 'CREATE DATABASE '$mysqlDatabase';'
saveReturn $?
endReturn
echo "Existing mysql user:"
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"
mysql -u root -e 'CREATE USER '"'"$mysqlUser"'"'@'"'"'localhost'"'"' IDENTIFIED BY '"'"$mysqlPass"'"';'
saveReturn $?
endReturn
mysql -u root -e 'GRANT ALL PRIVILEGES ON '$mysqlDatabase'.* TO '"'"$mysqlUser"'"'@'"'"'localhost'"'"';'
saveReturn $?
endReturn
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:"
mysql -u root -e 'SHOW DATABASES;'
read -p "Enter database name: " mysqlDatabase
endCheckEmpty mysqlDatabase "database name"
mysql -u root -e 'CREATE DATABASE '$mysqlDatabase' CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;'
saveReturn $?
endReturn
echo "Existing mysql user:"
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"
mysql -u root -e 'CREATE USER '"'"$mysqlUser"'"'@'"'"'localhost'"'"' IDENTIFIED BY '"'"$mysqlPass"'"';'
saveReturn $?
endReturn
mysql -u root -e 'GRANT ALL PRIVILEGES ON '$mysqlDatabase'.* TO '"'"$mysqlUser"'"'@'"'"'localhost'"'"';'
saveReturn $?
endReturn
mysql -u root -e 'FLUSH PRIVILEGES;'
}
VERSION_SEQREV=2 VERSION_SEQREV=2
. sequencer.sh . sequencer.sh