diff --git a/management/utils.py b/management/utils.py index 73d834a0..3f872376 100644 --- a/management/utils.py +++ b/management/utils.py @@ -180,8 +180,7 @@ def wait_for_service(port, public, env, timeout): time.sleep(min(timeout/4, 1)) def get_php_version(): - # Gets the version of PHP installed in the system. - return shell("check_output", ["/usr/bin/php", "-v"])[4:7] + return "8.1" def get_ssh_port(): port_value = get_ssh_config_value("port") diff --git a/setup/functions.sh b/setup/functions.sh index 02abda8e..85925e6c 100644 --- a/setup/functions.sh +++ b/setup/functions.sh @@ -5,6 +5,8 @@ # -o pipefail: don't ignore errors in the non-last command in a pipeline set -euo pipefail +PHP_VER=8.1 + function hide_output { # This function hides the output of a command unless the command fails # and returns a non-zero exit code. @@ -221,8 +223,3 @@ function git_clone { mv $TMPPATH/"$SUBDIR" "$TARGETPATH" rm -rf $TMPPATH } - -function php_version { - php --version | head -n 1 | cut -d " " -f 2 | cut -c 1-3 -} - diff --git a/setup/nextcloud.sh b/setup/nextcloud.sh index 93c62ecc..b788498c 100755 --- a/setup/nextcloud.sh +++ b/setup/nextcloud.sh @@ -65,12 +65,10 @@ user_external_hash=280d24eb2a6cb56b4590af8847f925c28d8d853e # Clear prior packages and install dependencies from apt. apt-get purge -qq -y owncloud* # we used to use the package manager -apt_install curl php8.1 php8.1-fpm \ - php8.1-cli php8.1-sqlite3 php8.1-gd php8.1-imap php8.1-curl \ - php8.1-dev php8.1-xml php8.1-mbstring php8.1-zip php8.1-apcu \ - php8.1-intl php8.1-imagick php8.1-gmp php8.1-bcmath - -PHP_VER=$(php_version) +apt_install curl php"${PHP_VER}" php"${PHP_VER}"-fpm \ + php"${PHP_VER}"-cli php"${PHP_VER}"-sqlite3 php"${PHP_VER}"-gd php"${PHP_VER}"-imap php"${PHP_VER}"-curl \ + php"${PHP_VER}"-dev php"${PHP_VER}"-xml php"${PHP_VER}"-mbstring php"${PHP_VER}"-zip php"${PHP_VER}"-apcu \ + php"${PHP_VER}"-intl php"${PHP_VER}"-imagick php"${PHP_VER}"-gmp php"${PHP_VER}"-bcmath # Enable APC before Nextcloud tools are run. tools/editconf.py /etc/php/"$PHP_VER"/mods-available/apcu.ini -c ';' \ @@ -222,20 +220,15 @@ if [ ! -d /usr/local/lib/owncloud/ ] || [[ ! ${CURRENT_NEXTCLOUD_VER} =~ ^$nextc # not supported by version 20, but that does not matter, as the InstallNextcloud function only runs the version 21 code. # We need php 8.0 for nextcloud 21-23, as php 8.1 is supported starting nextcloud 24 - # Install the ppa - add-apt-repository --yes ppa:ondrej/php - # Prevent installation of old packages apt-mark hold php7.0-apcu php7.1-apcu php7.2-apcu php7.3-apcu php7.4-apcu - # Install older php version + # Install php version 8.0 apt_install php8.0 php8.0-fpm php8.0-apcu php8.0-cli php8.0-sqlite3 php8.0-gd php8.0-imap \ php8.0-curl php8.0-dev php8.0-xml php8.0-mbstring php8.0-zip - # set older php version as default - update-alternatives --set php /usr/bin/php8.0 - - PHP_VER=$(php_version) + # set php version 8.0 as default + PHP_VER=8.0 # Make sure apc is enabled tools/editconf.py /etc/php/$PHP_VER/mods-available/apcu.ini -c ';' \ @@ -259,22 +252,20 @@ if [ ! -d /usr/local/lib/owncloud/ ] || [[ ! ${CURRENT_NEXTCLOUD_VER} =~ ^$nextc InstallNextcloud 24.0.12 7aa5d61632c1ccf4ca3ff00fb6b295d318c05599 4.1.0 697f6b4a664e928d72414ea2731cb2c9d1dc3077 3.2.2 ce4030ab57f523f33d5396c6a81396d440756f5f 3.0.0 0df781b261f55bbde73d8c92da3f99397000972f CURRENT_NEXTCLOUD_VER="24.0.12" fi - if [[ ${CURRENT_NEXTCLOUD_VER} =~ ^2[45678] ]]; then + + if [[ ${CURRENT_NEXTCLOUD_VER} =~ ^2[45] ]]; then # From nextcloud 24 and higher, php8.1 is supported, so we can now remove the php8.0 ppa and packages # Reset the default php version used - update-alternatives --auto php - - PHP_VER=$(php_version) + PHP_VER=8.1 # Remove older php version apt-get purge -qq -y php8.0 php8.0-fpm php8.0-apcu php8.0-cli php8.0-sqlite3 php8.0-gd \ php8.0-imap php8.0-curl php8.0-dev php8.0-xml php8.0-mbstring php8.0-zip \ php8.0-common php8.0-opcache php8.0-readline - - # Remove the ppa - add-apt-repository --yes --remove ppa:ondrej/php - if [[ ${CURRENT_NEXTCLOUD_VER} =~ ^24 ]]; then + fi + + if [[ ${CURRENT_NEXTCLOUD_VER} =~ ^24 ]]; then InstallNextcloud 25.0.7 a5a565c916355005c7b408dd41a1e53505e1a080 5.3.0 4b0a6666374e3b55cfd2ae9b72e1d458b87d4c8c 4.4.2 21a42e15806adc9b2618760ef94f1797ef399e2f 3.2.0 a494073dcdecbbbc79a9c77f72524ac9994d2eec CURRENT_NEXTCLOUD_VER="25.0.7" fi diff --git a/setup/system.sh b/setup/system.sh index 8c38c5be..fce3091f 100755 --- a/setup/system.sh +++ b/setup/system.sh @@ -110,6 +110,10 @@ hide_output add-apt-repository -y universe # Install the duplicity PPA. hide_output add-apt-repository -y ppa:duplicity-team/duplicity-release-git +# Stock PHP is now 8.1, but we're transitioning through 8.0 because +# of Nextcloud. +hide_output add-apt-repository --y ppa:ondrej/php + # ### Update Packages # Update system packages to make sure we have the latest upstream versions diff --git a/setup/web.sh b/setup/web.sh index 9e890636..3aafcd88 100755 --- a/setup/web.sh +++ b/setup/web.sh @@ -19,12 +19,10 @@ fi echo "Installing Nginx (web server)..." -apt_install nginx php8.1-cli php8.1-fpm idn2 +apt_install nginx php"${PHP_VER}"-cli php"${PHP_VER}"-fpm idn2 rm -f /etc/nginx/sites-enabled/default -PHP_VER=$(php_version) - # Copy in a nginx configuration file for common and best-practices # SSL settings from @konklone. Replace STORAGE_ROOT so it can find # the DH params. diff --git a/setup/webmail.sh b/setup/webmail.sh index 3d5ebc0b..a203cb8c 100644 --- a/setup/webmail.sh +++ b/setup/webmail.sh @@ -5,8 +5,6 @@ source setup/functions.sh # load our functions source /etc/mailinabox.conf # load global vars -PHP_VER=$(php_version) - # ### Installing Roundcube # We install Roundcube from sources, rather than from Ubuntu, because: diff --git a/setup/zpush.sh b/setup/zpush.sh index 8cfa86d5..397ee4a9 100755 --- a/setup/zpush.sh +++ b/setup/zpush.sh @@ -13,8 +13,6 @@ source setup/functions.sh # load our functions source /etc/mailinabox.conf # load global vars -PHP_VER=$(php_version) - # Prereqs. echo "Installing Z-Push (Exchange/ActiveSync server)..." diff --git a/tools/owncloud-restore.sh b/tools/owncloud-restore.sh index 8ed6adea..ce3b3c9e 100755 --- a/tools/owncloud-restore.sh +++ b/tools/owncloud-restore.sh @@ -2,6 +2,7 @@ # # This script will restore the backup made during an installation source /etc/mailinabox.conf # load global vars +source ./setup/functions.sh if [ -z "$1" ]; then echo "Usage: owncloud-restore.sh " @@ -26,9 +27,6 @@ if [ ! -f "$1/config.php" ]; then fi echo "Restoring backup from $1" - -PHP_VER=$(php_version) - service php$PHP_VER-fpm stop # remove the current ownCloud/Nextcloud installation diff --git a/tools/owncloud-unlockadmin.sh b/tools/owncloud-unlockadmin.sh index db444c82..24e2e756 100755 --- a/tools/owncloud-unlockadmin.sh +++ b/tools/owncloud-unlockadmin.sh @@ -7,8 +7,9 @@ # purpopses only. After this point you are on your own. source /etc/mailinabox.conf # load global vars +source ./setup/functions.sh -ADMIN=$(./mail.py user admins | head -n 1) +ADMIN=$(sudo ./management/cli.py user admins | head -n 1) test -z "$1" || ADMIN=$1 echo "I am going to unlock admin features for $ADMIN." @@ -19,5 +20,5 @@ echo "If in doubt, press CTRL-C to cancel." echo echo "Press enter to continue." read -PHP_VER=$(php_version) + sudo -u www-data "php$PHP_VER" /usr/local/lib/owncloud/occ group:adduser admin "$ADMIN" && echo "Done."