Drupal 11 ready

This commit is contained in:
rnsrk 2024-11-07 08:24:38 +01:00
parent 4d121057d7
commit 5e8e4969df

View file

@ -10,7 +10,7 @@ NC='\033[0m'
CURRENTDIR=$PWD CURRENTDIR=$PWD
# Check if executer is root # Check if executer is root
if [ "$EUID" -ne 0 ]; then if [ "$EUID" -ne 0 ]; then
echo -e "${RED}Please run as root: \"sudo ./install_drupal-wisski.bash\"" echo -e "${RED}Please run as root: \"sudo ./install_drupal-wisski.bash\""
exit exit
fi fi
@ -21,11 +21,11 @@ sleep 3
# Check if installation is for local develepment or production # Check if installation is for local develepment or production
# If yes: add website name to /etc/hosts/, see section "add website to /etc/hosts" # If yes: add website name to /etc/hosts/, see section "add website to /etc/hosts"
echo -e "${YELLOW}Do you use this script to install WissKI on a local development system" echo -e "${YELLOW}Do you use this script to install WissKI on a local development system"
echo -e "or on a server for production?" echo -e "or on a server for production?"
echo -e "(Selecting \"for local development\" adds your domain to /etc/hosts) in a later step." echo -e "(Selecting \"for local development\" adds your domain to /etc/hosts) in a later step."
echo -e "(Selecting \"for production\" opens the possibility to use ssl.)${NC}" echo -e "(Selecting \"for production\" opens the possibility to use ssl.)${NC}"
echo echo
PS3="I am installing option... " PS3="I am installing option... "
options=("for local development." "for production." "I don't know, please quit.") options=("for local development." "for production." "I don't know, please quit.")
select opt in "${options[@]}" select opt in "${options[@]}"
@ -70,7 +70,7 @@ then
PHP="$(php -v | grep PHP | head -n 1 | cut -d'(' -f 1)" PHP="$(php -v | grep PHP | head -n 1 | cut -d'(' -f 1)"
PHP=${PHP:4} PHP=${PHP:4}
PHPVERSION=${PHP::3} PHPVERSION=${PHP::3}
if [[ ! $PHP == 8* ]] if [[ $PHP < 8.3 ]]
then then
OLDPHPVERSION=true OLDPHPVERSION=true
echo ${OLDPHPVERSION} echo ${OLDPHPVERSION}
@ -85,14 +85,14 @@ if [[ $OLDPHPVERSION ]]
then then
while true; do while true; do
echo echo
echo -e "${RED}Your php version is lower than 8.0, to you want to install php version 8.0 (this is optional)?" echo -e "${RED}Your php version is lower than 8.2. Do you want to install php version 8.3 (this is optional)?"
echo -e "${YELLOW}Please note that if you confirm the app-repo \"ppa:ondrej/php\" will be added to your sources.${NC}" echo -e "${YELLOW}Please note that if you confirm the app-repo \"ppa:ondrej/php\" will be added to your sources.${NC}"
read -p "(y/n): " CURRENTPHPVERSION read -p "(y/n): " CURRENTPHPVERSION
case $CURRENTPHPVERSION in case $CURRENTPHPVERSION in
[Yy]* ) [Yy]* )
sudo a2dismod php${PHPVERSION} sudo a2dismod php${PHPVERSION}
PHPVERSION="8.0"; PHPVERSION="8.3";
APTS+=( "php8.0" ); APTS+=( "php8.3" );
add-apt-repository ppa:ondrej/php -y; break;; add-apt-repository ppa:ondrej/php -y; break;;
[Nn]* ) break;; [Nn]* ) break;;
* ) echo "Please answer y[es] or n[o].";; * ) echo "Please answer y[es] or n[o].";;
@ -103,25 +103,18 @@ fi
if [[ ${PHP} == "not installed" ]] if [[ ${PHP} == "not installed" ]]
then then
echo echo
echo -e "${YELLOW}Since php is missing on your system, would you like to install version 7.4 or 8.0?" echo -e "${YELLOW}Since php is missing on your system, would you like to install version 8.3?"
echo -e "${RED}The app-repo \"ppa:ondrej/php\" must be added to your sources for this.${NC}" echo -e "${RED}The app-repo \"ppa:ondrej/php\" must be added to your sources for this.${NC}"
echo echo
PS3="I would like to use option... " PS3="I would like to use option... "
options=("8.0" "7.4" "I don't know, please quit.") options=("8.3" "I don't know, please quit.")
select opt in "${options[@]}" select opt in "${options[@]}"
do do
case $opt in case $opt in
"8.0") "8.3")
APTS+=( "php8.0" ) APTS+=( "php8.3" )
PHPVERSION="8.0" PHPVERSION="8.3"
echo -e "${GREEN}Will take php8.0.${NC}" echo -e "${GREEN}Will take php8.3.${NC}"
add-apt-repository ppa:ondrej/php -y;
break
;;
"7.4")
APTS+=( "php7.4" )
PHPVERSION="7.4"
echo -e "${GREEN}Will take php7.4.${NC}"
add-apt-repository ppa:ondrej/php -y; add-apt-repository ppa:ondrej/php -y;
break break
;; ;;
@ -164,7 +157,7 @@ fi
echo echo
echo -e "${GREEN}Checking if dependencies are fulfilled..." echo -e "${GREEN}Checking if dependencies are fulfilled..."
echo echo
DEPENDENCIES=(\ DEPENDENCIES=(\
"libapache2-mod-php${PHPVERSION}" "libapache2-mod-php${PHPVERSION}"
"php${PHPVERSION}-apcu"\ "php${PHPVERSION}-apcu"\
@ -173,12 +166,13 @@ DEPENDENCIES=(\
"php${PHPVERSION}-mbstring"\ "php${PHPVERSION}-mbstring"\
"php${PHPVERSION}-mysql"\ "php${PHPVERSION}-mysql"\
"php${PHPVERSION}-xml"\ "php${PHPVERSION}-xml"\
"php${PHPVERSION}-xsl"\
"php${PHPVERSION}-zip") "php${PHPVERSION}-zip")
if [[ ! $PHPVERSION == 8* ]]; then if [[ ! $PHPVERSION == 8* ]]; then
DEPENDENCIES+=("php${PHPVERSION}-json") DEPENDENCIES+=("php${PHPVERSION}-json")
fi fi
update-alternatives --set php /usr/bin/php${PHPVERSION}; update-alternatives --set php /usr/bin/php${PHPVERSION};
@ -217,7 +211,7 @@ fi
unset REQUIREDPKG unset REQUIREDPKG
echo echo
echo -e "${GREEN}Checking if helpers are installed...${NC}" echo -e "${GREEN}Checking if helpers are installed...${NC}"
echo echo
HELPERS=(\ HELPERS=(\
"git" \ "git" \
"wget" \ "wget" \
@ -287,7 +281,7 @@ do
read -p "(y/n): " SURE read -p "(y/n): " SURE
case $SURE in case $SURE in
[Yy]* ) [Yy]* )
export WEBSITENAME; export WEBSITENAME;
export SERVERADMINEMAIL; export SERVERADMINEMAIL;
FINISHED=true; FINISHED=true;
break;; break;;
@ -313,7 +307,7 @@ then
read -p "(y/n): " SURE read -p "(y/n): " SURE
case $SURE in case $SURE in
[Yy]* ) [Yy]* )
if grep -q "${WEBSITENAME}" "/etc/hosts"; then if grep -q "${WEBSITENAME}" "/etc/hosts"; then
echo echo
echo -e "${RED}Entry \"127.0.0.1 ${WEBSITENAME}\" already in /etc/hosts" echo -e "${RED}Entry \"127.0.0.1 ${WEBSITENAME}\" already in /etc/hosts"
else else
@ -355,16 +349,16 @@ echo
echo -e "${RED}${TWEAKPHP}" echo -e "${RED}${TWEAKPHP}"
echo echo
echo -e "${YELLOW}to" echo -e "${YELLOW}to"
echo echo
echo -e "${RED}/etc/php/${PHPVERSION}/mods-available/wisski.ini$" echo -e "${RED}/etc/php/${PHPVERSION}/mods-available/wisski.ini$"
echo echo
echo -e "${YELLOW}and activate it.${NC}" echo -e "${YELLOW}and activate it.${NC}"
echo echo
while true; do while true; do
read -p "(y/n): " TWEAK read -p "(y/n): " TWEAK
case $TWEAK in case $TWEAK in
[Yy]* ) [Yy]* )
echo "$TWEAKPHP" > /etc/php/${PHPVERSION}/mods-available/wisski.ini echo "$TWEAKPHP" > /etc/php/${PHPVERSION}/mods-available/wisski.ini
echo -e "${GREEN}Activate wisski.ini.${NC}" echo -e "${GREEN}Activate wisski.ini.${NC}"
phpenmod -v ${PHPVERSION} wisski phpenmod -v ${PHPVERSION} wisski
@ -376,10 +370,10 @@ while true; do
esac esac
done done
# enable mod-rewrite # enable mod-rewrite
echo echo
echo -e "${GREEN}Enable mod_rewrite for apache2.${NC}" echo -e "${GREEN}Enable mod_rewrite for apache2.${NC}"
echo echo
a2enmod rewrite &> /dev/null a2enmod rewrite &> /dev/null
# restart apache # restart apache
@ -415,7 +409,7 @@ SITECONFIG="<VirtualHost *:80>
while true; do while true; do
read -p "(y/n): " WRITECONFIG read -p "(y/n): " WRITECONFIG
case $WRITECONFIG in case $WRITECONFIG in
[Yy]* ) [Yy]* )
echo -e "${GREEN}Write config to \"/etc/apache2/sites-available/${WEBSITENAME}\"" echo -e "${GREEN}Write config to \"/etc/apache2/sites-available/${WEBSITENAME}\""
echo "${SITECONFIG}" > /etc/apache2/sites-available/${WEBSITENAME}.conf echo "${SITECONFIG}" > /etc/apache2/sites-available/${WEBSITENAME}.conf
echo -e "${GREEN}Enable site ${WEBSITENAME}${NC}" echo -e "${GREEN}Enable site ${WEBSITENAME}${NC}"
@ -425,7 +419,7 @@ while true; do
echo "a2dissite ${WEBSITENAME}" >> remove_${WEBSITENAME}_configs.bash echo "a2dissite ${WEBSITENAME}" >> remove_${WEBSITENAME}_configs.bash
echo "rm /etc/apache2/sites-available/${WEBSITENAME}.conf" >> remove_${WEBSITENAME}_configs.bash echo "rm /etc/apache2/sites-available/${WEBSITENAME}.conf" >> remove_${WEBSITENAME}_configs.bash
break;; break;;
[Nn]* ) [Nn]* )
break;; break;;
* ) echo "Please answer y[es] or n[o].";; * ) echo "Please answer y[es] or n[o].";;
esac esac
@ -441,28 +435,28 @@ then
while true; do while true; do
read -p "(y/n): " SECUREMARIADB read -p "(y/n): " SECUREMARIADB
case $SECUREMARIADB in case $SECUREMARIADB in
[Yy]* ) [Yy]* )
echo -e "${GREEN}Please note your credentials!"; echo -e "${GREEN}Please note your credentials!";
mysql_secure_installation; mysql_secure_installation;
break;; break;;
[Nn]* ) [Nn]* )
break;; break;;
* ) echo "Please answer y[es] or n[o].";; * ) echo "Please answer y[es] or n[o].";;
esac esac
done done
fi fi
# create database user and database # create database user and database
echo -e "${YELLOW}Do you want to create a database and a database user?" echo -e "${YELLOW}Do you want to create a database and a database user?"
echo -e "${YELLOW}If you have a database and database user, please ensure you know the credentials!" echo -e "${YELLOW}If you have a database and database user, please ensure you know the credentials!"
while true; do while true; do
read -p "(y/n): " CREATEDBANDDBUSER read -p "(y/n): " CREATEDBANDDBUSER
case $CREATEDBANDDBUSER in case $CREATEDBANDDBUSER in
[Yy]* ) [Yy]* )
echo echo
echo -e "${YELLOW}Create database and user for Drupal. Please note your inputs, they will be needed in a moment." echo -e "${YELLOW}Create database and user for Drupal. Please note your inputs, they will be needed in a moment."
CORRECTDATABASE=false CORRECTDATABASE=false
CORRECTUSER=false CORRECTUSER=false
FINISHED=false FINISHED=false
while [[ $CORRECTDATABASE == false ]] && [[ $CORRECTUSER == false ]]; do while [[ $CORRECTDATABASE == false ]] && [[ $CORRECTUSER == false ]]; do
@ -476,13 +470,13 @@ while true; do
while true; do while true; do
read -p "(recreate/keep/retry/abort): " SURE read -p "(recreate/keep/retry/abort): " SURE
case $SURE in case $SURE in
[recreate]* ) [recreate]* )
mysql -e "DROP DATABASE ${DB};" mysql -e "DROP DATABASE ${DB};"
mysql -e "CREATE DATABASE ${DB} ;" mysql -e "CREATE DATABASE ${DB} ;"
echo -e "${GREEN}Recreated database ${DB}." echo -e "${GREEN}Recreated database ${DB}."
FINISHED=true FINISHED=true
break;; break;;
[keep]* ) [keep]* )
echo -e "${GREEN}Okay keep old database..." echo -e "${GREEN}Okay keep old database..."
FINISHED=true FINISHED=true
break;; break;;
@ -516,7 +510,7 @@ while true; do
while true; do while true; do
read -p "(y/n): " SURE read -p "(y/n): " SURE
case $SURE in case $SURE in
[Yy]* ) [Yy]* )
if [[ ! -z "`mysql -qfsBe "SELECT User FROM mysql.user WHERE User = '${USER}'" 2>&1`" ]]; if [[ ! -z "`mysql -qfsBe "SELECT User FROM mysql.user WHERE User = '${USER}'" 2>&1`" ]];
then then
echo echo
@ -525,7 +519,7 @@ while true; do
while true; do while true; do
read -p "(recreate/keep): " SURE read -p "(recreate/keep): " SURE
case $SURE in case $SURE in
[recreate]* ) [recreate]* )
mysql -e "DROP USER ${USER}@'localhost';" mysql -e "DROP USER ${USER}@'localhost';"
mysql -e "CREATE USER ${USER}@localhost IDENTIFIED BY '${USERPW}';" mysql -e "CREATE USER ${USER}@localhost IDENTIFIED BY '${USERPW}';"
mysql -e "GRANT ALL PRIVILEGES ON ${DB}.* TO '${USER}'@'localhost';" mysql -e "GRANT ALL PRIVILEGES ON ${DB}.* TO '${USER}'@'localhost';"
@ -534,7 +528,7 @@ while true; do
FINISHED=true FINISHED=true
CORRECTUSER=true CORRECTUSER=true
break;; break;;
[keep]* ) [keep]* )
unset USERPW unset USERPW
echo echo
echo -e "${GREEN}Okay keep existing user." echo -e "${GREEN}Okay keep existing user."
@ -548,10 +542,10 @@ while true; do
echo -e "${YELLOW}Is this correct?${NC}" echo -e "${YELLOW}Is this correct?${NC}"
read -p "(y/n): " SURE read -p "(y/n): " SURE
case $SURE in case $SURE in
[Yy]* ) [Yy]* )
CORRECTUSER=true CORRECTUSER=true
break;; break;;
[Nn]* ) [Nn]* )
unset USERPW unset USERPW
break;; break;;
[abort]* ) [abort]* )
@ -576,19 +570,19 @@ while true; do
CORRECTUSER=true CORRECTUSER=true
fi fi
break;; break;;
[Nn]* ) [Nn]* )
echo -e "${GREEN}Okay then..." echo -e "${GREEN}Okay then..."
break;; break;;
* ) echo -e "${RED}Please answer y[es] or n[o].";; * ) echo -e "${RED}Please answer y[es] or n[o].";;
esac esac
done done
done done
done done
echo echo
echo -e "${GREEN}Created ${DB} database with ${USER}@localhost identified by ${USERPW}." echo -e "${GREEN}Created ${DB} database with ${USER}@localhost identified by ${USERPW}."
sleep 1 sleep 1
break;; break;;
[Nn]* ) [Nn]* )
break;; break;;
* ) echo "Please answer y[es] or n[o].";; * ) echo "Please answer y[es] or n[o].";;
esac esac
@ -621,7 +615,7 @@ echo -e "${YELLOW}Should I download and install Drupal?${NC}"
while true; do while true; do
read -p "(y/n/skip): " INSTALLDRUPAL read -p "(y/n/skip): " INSTALLDRUPAL
case $INSTALLDRUPAL in case $INSTALLDRUPAL in
[Yy]* ) [Yy]* )
echo -e "${GREEN}Okay, I will start installation!" echo -e "${GREEN}Okay, I will start installation!"
cd /var/www/html/ cd /var/www/html/
echo echo
@ -645,10 +639,10 @@ while true; do
cd /var/www/html/$WEBSITENAME cd /var/www/html/$WEBSITENAME
break;; break;;
[Nn]* ) [Nn]* )
echo -e "${GREEN}Okay bye." echo -e "${GREEN}Okay bye."
exit;; exit;;
[skip]* ) [skip]* )
echo -e "${GREEN}Okay skipping." echo -e "${GREEN}Okay skipping."
break;; break;;
* ) echo "Please answer y[es] or n[o].";; * ) echo "Please answer y[es] or n[o].";;
esac esac
@ -722,7 +716,7 @@ while true; do
fi fi
# deletes the temp directory # deletes the temp directory
function cleanup { function cleanup {
rm -rf "$WORK_DIR" rm -rf "$WORK_DIR"
echo -e "${GREEN}Deleted temp working directory $WORK_DIR.${NC}" echo -e "${GREEN}Deleted temp working directory $WORK_DIR.${NC}"
} }
@ -816,7 +810,7 @@ chmod 775 -R /var/www/html/$WEBSITENAME
if [[ ! ${LOCALHOST} ]]; then if [[ ! ${LOCALHOST} ]]; then
echo echo
echo -e "${YELLOW}You are installing WissKI for production, do you like to add https support?" echo -e "${YELLOW}You are installing WissKI for production, do you like to add https support?"
echo -e "You can use certbot and letsencrypt for an automaticaly installation and configuration" echo -e "You can use certbot and letsencrypt for an automaticaly installation and configuration"
echo -e "of all certificates and Apache config files or" echo -e "of all certificates and Apache config files or"
echo -e "use your own certificates and configure Apache manually.${NC}" echo -e "use your own certificates and configure Apache manually.${NC}"
@ -843,7 +837,7 @@ if [[ ! ${LOCALHOST} ]]; then
ln -s /snap/bin/certbot /usr/bin/certbot ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --apache sudo certbot --apache
break;; break;;
[Nn]* ) [Nn]* )
echo -e "${GREEN}Okay skipping."; echo -e "${GREEN}Okay skipping.";
for (( i=0; i<${#options[@]}; i++)); do for (( i=0; i<${#options[@]}; i++)); do
printf '%d) %s\n' $((i+1)) "${options[$i]}" printf '%d) %s\n' $((i+1)) "${options[$i]}"