From da56286707fc9b5f6c2b8014195f0e343efa50ff Mon Sep 17 00:00:00 2001 From: Christoph Date: Fri, 16 Jun 2017 02:00:42 +0200 Subject: [PATCH] Initial import --- .gitignore | 2 + DOC/update_owncloud.txt | 318 ++++++++++++ DOC/update_owncloud_to_nextcloud.txt | 270 ++++++++++ README.php.ini | 28 + conf/update_hostname.conf.sample | 105 ++++ install_ownloud.txt | 326 ++++++++++++ update_nextcloud.sh | 747 +++++++++++++++++++++++++++ 7 files changed, 1796 insertions(+) create mode 100644 .gitignore create mode 100644 DOC/update_owncloud.txt create mode 100644 DOC/update_owncloud_to_nextcloud.txt create mode 100644 README.php.ini create mode 100644 conf/update_hostname.conf.sample create mode 100644 install_ownloud.txt create mode 100755 update_nextcloud.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..28ba115 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/conf/*.conf +*.swp diff --git a/DOC/update_owncloud.txt b/DOC/update_owncloud.txt new file mode 100644 index 0000000..8195992 --- /dev/null +++ b/DOC/update_owncloud.txt @@ -0,0 +1,318 @@ +## --- ownCloud TEST O.OPEN -- +## - +VERSION=9.1.5 + +THIRD_PARTY_APPS="calendar contacts documents notes delete_confirmation" + +HTTP_USER=www-data +HTTP_GROUP=www-data + +SRC_BASE_DIR=/usr/local/src/owncloud + +WEB_BASE_DIR=/var/www/owncloud-test.oopen.de + +DATABASE=ownCloud_test +#DB_USER=backup +#DB_PASSWORD=backup +MYSQL_CREDENTIALS="--login-path=local" +## - +## --- Ende ownCloud TEST O.OPEN -- + + +## --- ownCloud RLS -- +## - +VERSION=9.1.5 + +THIRD_PARTY_APPS="calendar contacts documents delete_confirmation activity gallery notes" + +HTTP_USER=www-data +HTTP_GROUP=www-data + +SRC_BASE_DIR=/usr/local/src/owncloud + +WEB_BASE_DIR=/var/www/cloud-rls.oopen.de + +DATABASE=cloud_rls +#DB_USER=backup +#DB_PASSWORD=backup +MYSQL_CREDENTIALS="--login-path=local" +## - +## --- Ende ownCloud RLS -- + + +## --- ownCloud O.OPEN -- +## - +VERSION=9.1.5 + +THIRD_PARTY_APPS="calendar contacts documents notes delete_confirmation gallery activity" + +HTTP_USER=www-data +HTTP_GROUP=www-data + +SRC_BASE_DIR=/usr/local/src/owncloud + +WEB_BASE_DIR=/var/www/owncloud.oopen.de + +DATABASE=ownCloud +#DB_USER=backup +#DB_PASSWORD=backup +MYSQL_CREDENTIALS="--login-path=local" +## - +## --- Ende ownCloud O.OPEN -- + + +## --- ownCloud cloud-giz-test.warenform.de -- +## - +VERSION=9.1.5 + +THIRD_PARTY_APPS="calendar contacts documents delete_confirmation gallery activity notes" + +HTTP_USER=www-data +HTTP_GROUP=www-data + +SRC_BASE_DIR=/usr/local/src/owncloud + +WEB_BASE_DIR=/var/www/cloud-giz-test.warenform.de + +DATABASE=cloud_giz_test +#DB_USER=backup +#DB_PASSWORD=backup +MYSQL_CREDENTIALS="--login-path=local" +## - +## --- Ende ownCloud cloud-giz-test.warenform.de -- + + +## --- ownCloud cloud.skills-green-economy.org -- +## - +VERSION=9.1.5 + +THIRD_PARTY_APPS="calendar contacts documents delete_confirmation gallery activity notes" + +HTTP_USER=www-data +HTTP_GROUP=www-data + +SRC_BASE_DIR=/usr/local/src/owncloud + +WEB_BASE_DIR=/var/www/cloud.skills-green-economy.org + +DATABASE=cloud_giz +#DB_USER=backup +#DB_PASSWORD=backup +MYSQL_CREDENTIALS="--login-path=local" +## - +## --- Ende cloud.skills-green-economy.org -- + + +## ----------------------------- + +CURRENT_INSTALL_DIR=`realpath ${WEB_BASE_DIR}/owncloud` +CURRENT_DATA_DIR=`realpath ${WEB_BASE_DIR}/data` +PRIOR_VERSION=`basename $CURRENT_INSTALL_DIR | cut -d"-" -f2` + +DATA_DIR=${WEB_BASE_DIR}/data-${VERSION} +INSTALL_DIR=${WEB_BASE_DIR}/owncloud-${VERSION} + +mkdir -p ${SRC_BASE_DIR} + +## - downloud owncloud source +## - +## - owncloud-5.0.12.tar.bz2 +## - +cd $SRC_BASE_DIR +if [ -f "${SRC_BASE_DIR}/owncloud-${VERSION}.tar.bz2" ]; then + rm ${SRC_BASE_DIR}/owncloud-${VERSION}.tar.bz2 +fi +wget -4 https://download.owncloud.org/community/owncloud-${VERSION}.tar.bz2 + + +## - Entpacken +## - +if [ -d "${SRC_BASE_DIR}/owncloud" ]; then + rm -rf ${SRC_BASE_DIR}/owncloud +fi +bunzip2 < owncloud-${VERSION}.tar.bz2 | tar -xf - + + +cd $WEB_BASE_DIR + + +## - Stop Cronjob: +## - */5 * * * * /root/bin/check_webservice_load.sh + +## - Stop apache webservice +## - +/etc/init.d/apache2 stop +## - Alternativly enable maintenance mode +## - +#su -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ maintenance:mode --on" -s /bin/bash $HTTP_USER + + +## - Backup Database +## - +mysqldump $MYSQL_CREDENTIALS --opt $DATABASE > \ + ${WEB_BASE_DIR}/${DATABASE}-v${PRIOR_VERSION}.`date +"%Y-%m-%d-%H%M"`.sql + + +## - ## - Deactivate third party apps +## - ## - +## - for _app in $THIRD_PARTY_APPS ; do +## - #su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ app:disable $_app" -s /bin/bash $HTTP_USER +## - su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/owncloud/occ app:disable $_app" -s /bin/bash $HTTP_USER +## - done +for _app in $THIRD_PARTY_APPS ; do + #su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ app:disable $_app" -s /bin/bash $HTTP_USER + su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/owncloud/occ app:disable $_app" -s /bin/bash $HTTP_USER +done + + +## - Erstelle Web-Verzeichnis für die neue OwnCloud Version +## - +mkdir ${WEB_BASE_DIR}/owncloud-${VERSION} + +## - Kopiere Verzeichnis "config" in das neue Installationsverzeichnis +## - +cp -a ${CURRENT_INSTALL_DIR}/config $INSTALL_DIR/ + +## - Synchronisiere neues Installationsverzeichnis mit +## - den extrahierten Dateien +## - +rsync -a ${SRC_BASE_DIR}/owncloud/ ${INSTALL_DIR}/ + +touch -t `date +%Y%m%d%H%M.%S` ${INSTALL_DIR} + + +## - Kopiere Daten Verzeichnis (hardlinks - harte Dateiverweise) +## - +cp -al ${CURRENT_DATA_DIR} $DATA_DIR + + +## - Set Permissions +## - +find $INSTALL_DIR -type f -print0 | xargs -0 chmod 0640 +find $INSTALL_DIR -type d -print0 | xargs -0 chmod 0750 + +find ${DATA_DIR}/ -type f -print0 | xargs -0 chmod 0640 +find ${DATA_DIR}/ -type d -print0 | xargs -0 chmod 0750 + +chown -R root:${HTTP_GROUP} ${INSTALL_DIR}/ + +chown -R ${HTTP_USER}:${HTTP_GROUP} ${INSTALL_DIR}/apps +chown -R ${HTTP_USER}:${HTTP_GROUP} ${INSTALL_DIR}/config +chown -R ${HTTP_USER}:${HTTP_GROUP} ${INSTALL_DIR}/themes + +chown -R ${HTTP_USER}:${HTTP_GROUP} ${DATA_DIR} + +#chown -R root:${HTTP_GROUP} ${INSTALL_DIR}/.htaccess +#chown -R root:${HTTP_GROUP} ${DATA_DIR}/.htaccess +chown -R ${HTTP_USER}:${HTTP_GROUP} ${INSTALL_DIR}/.htaccess +chown -R ${HTTP_USER}:${HTTP_GROUP} ${DATA_DIR}/.htaccess + +mkdir -p ${WEB_BASE_DIR}/sessions +chown root:${HTTP_GROUP} ${WEB_BASE_DIR}/sessions +chmod 2775 ${WEB_BASE_DIR}/sessions + +mkdir -p ${WEB_BASE_DIR}/tmp +chown root:${HTTP_GROUP} ${WEB_BASE_DIR}/tmp +chmod 2775 ${WEB_BASE_DIR}/tmp + + +#find ${DATA_DIR} -maxdepth 2 -mindepth 1 -type d -name files_encryption -exec rm -rf {} \; +#find ${DATA_DIR} -maxdepth 2 -mindepth 1 -type d -name lucene_index -exec rm -rf {} \; + + + +## - Setze Symlink data verzeichnis +## - +rm ${WEB_BASE_DIR}/data +ln -s data-${VERSION} ${WEB_BASE_DIR}/data + + +## - Setze symlink (documentroot) auf das neue Installationsverzeichnis +## - +rm ${WEB_BASE_DIR}/owncloud +ln -s owncloud-${VERSION} ${WEB_BASE_DIR}/owncloud + +## - Upgrade +## - +## - Note!! +## - this command probably disables 3rd-party aps +## - + +#su -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ maintenance:mode --off" -s /bin/bash $HTTP_USER + +#su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ upgrade" -s /bin/bash $HTTP_USER +su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/owncloud/occ upgrade" -s /bin/bash $HTTP_USER + + +# ===== +# - Upgrade from 9.1.5 to 9.1.6 +# - +# - Calendar will fail +# - +# ===== + +See: https://github.com/owncloud/calendar/issues/800 + +Add line + 'appstoreurl' => 'https://marketplace.owncloud.com/api/v0', +to config.php + +delete Calendar 1.4.1 +add calendar 1.4.2 + + + +## - Start Apache Webserver +## - +/etc/init.d/apache2 start + +## - Start Cronjob: +## - */5 * * * * /root/bin/check_webservice_load.sh + + +## - ## - Enable third party apps +## - ## - +## - for _app in $THIRD_PARTY_APPS ; do +## - su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ app:enable $_app" -s /bin/bash $HTTP_USER +## - done +for _app in $THIRD_PARTY_APPS ; do + su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ app:enable $_app" -s /bin/bash $HTTP_USER +done + + +## - Check Application "Notes" +## - +## - If not working as exspected, install app from git repositors +## - +## - cd ${WEB_BASE_DIR}/htdocs/apps +## - su $HTTP_USER -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ maintenance:mode --on" +## - mv notes notes.ORIG +## - git clone https://github.com/owncloud/notes.git +## - su $HTTP_USER -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ maintenance:mode --off" +## - +## - Upgrade from git-repository: +## - cd ${WEB_BASE_DIR}/htdocs/apps +## - cd notes +## - git pull --rebase origin master +## - + +cd ${WEB_BASE_DIR}/htdocs/apps +su -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ maintenance:mode --on" -s /bin/bash $HTTP_USER +mv notes notes.ORIG +git clone https://github.com/owncloud/notes.git +su -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ maintenance:mode --off" -s /bin/bash $HTTP_USER + + +------------------------------------------------------------------------ + +https://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html + +while IFS= read -r -d '' n; do + #if [[ "$n" == "mb" ]]; then + # continue + #fi + su -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/console.php files:scan --path `basename $n`" -s /bin/bash $HTTP_USER +done < <(find $WEB_BASE_DIR/data/ -mindepth 1 -maxdepth 1 -type d -print0) + +su -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/console.php files:scan --all" -s /bin/bash $HTTP_USER +su -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ maintenance:repair" -s /bin/bash $HTTP_USER diff --git a/DOC/update_owncloud_to_nextcloud.txt b/DOC/update_owncloud_to_nextcloud.txt new file mode 100644 index 0000000..1396d19 --- /dev/null +++ b/DOC/update_owncloud_to_nextcloud.txt @@ -0,0 +1,270 @@ +## --- ownCloud TEST O.OPEN -- +## - +VERSION=12.0.0 + +THIRD_PARTY_APPS="calendar contacts documents notes delete_confirmation richdocuments" + +HTTP_USER=www-data +HTTP_GROUP=www-data + +SRC_BASE_DIR=/usr/local/src/nextcloud + +WEB_BASE_DIR=/var/www/owncloud-test.oopen.de + +DATABASE=ownCloud_test +#DB_USER=backup +#DB_PASSWORD=backup +MYSQL_CREDENTIALS="--login-path=local" +## - +## --- Ende ownCloud TEST O.OPEN -- + + +## --- ownCloud RLS -- +## - +VERSION=10.0.5 + +THIRD_PARTY_APPS="calendar contacts documents notes delete_confirmation richdocuments" + +HTTP_USER=www-data +HTTP_GROUP=www-data + +SRC_BASE_DIR=/usr/local/src/nextcloud + +WEB_BASE_DIR=/var/www/cloud-rls.oopen.de + +DATABASE=cloud_rls +#DB_USER=backup +#DB_PASSWORD=backup +MYSQL_CREDENTIALS="--login-path=local" +## - +## --- Ende ownCloud RLS -- + + +## --- ownCloud O.OPEN -- +## - +VERSION=10.0.5 + +THIRD_PARTY_APPS="calendar contacts documents notes delete_confirmation richdocuments" + +HTTP_USER=www-data +HTTP_GROUP=www-data + +SRC_BASE_DIR=/usr/local/src/nextcloud + +WEB_BASE_DIR=/var/www/owncloud.oopen.de + +DATABASE=ownCloud +#DB_USER=backup +#DB_PASSWORD=backup +MYSQL_CREDENTIALS="--login-path=local" +## - +## --- Ende ownCloud O.OPEN -- + + +## --- ownCloud cloud-giz-test.warenform.de -- +## - +VERSION=10.0.5 + +THIRD_PARTY_APPS="calendar contacts documents delete_confirmation gallery activity notes" + +HTTP_USER=www-data +HTTP_GROUP=www-data + +SRC_BASE_DIR=/usr/local/src/nextcloud + +WEB_BASE_DIR=/var/www/cloud-giz-test.warenform.de + +DATABASE=cloud_giz_test +#DB_USER=backup +#DB_PASSWORD=backup +MYSQL_CREDENTIALS="--login-path=local" +## - +## --- Ende ownCloud cloud-giz-test.warenform.de -- + + +## --- ownCloud cloud.skills-green-economy.org -- +## - +VERSION=9.1.5 + +THIRD_PARTY_APPS="calendar contacts documents delete_confirmation gallery activity notes" + +HTTP_USER=www-data +HTTP_GROUP=www-data + +SRC_BASE_DIR=/usr/local/src/owncloud + +WEB_BASE_DIR=/var/www/cloud.skills-green-economy.org + +DATABASE=cloud_giz +#DB_USER=backup +#DB_PASSWORD=backup +MYSQL_CREDENTIALS="--login-path=local" +## - +## --- Ende cloud.skills-green-economy.org -- + + +## ----------------------------- + +CURRENT_INSTALL_DIR=`realpath ${WEB_BASE_DIR}/owncloud` +CURRENT_DATA_DIR=`realpath ${WEB_BASE_DIR}/data` +PRIOR_VERSION=`basename $CURRENT_INSTALL_DIR | cut -d"-" -f2` + +DATA_DIR=${WEB_BASE_DIR}/data-${VERSION} +INSTALL_DIR=${WEB_BASE_DIR}/nextcloud-${VERSION} + +mkdir -p ${SRC_BASE_DIR} + +## - downloud owncloud source +## - +## - owncloud-5.0.12.tar.bz2 +## - +cd $SRC_BASE_DIR +if [ -f "${SRC_BASE_DIR}/nextcloud-${VERSION}.tar.bz2" ]; then + rm ${SRC_BASE_DIR}/nextcloud-${VERSION}.tar.bz2 +fi +wget https://download.nextcloud.com/server/releases/nextcloud-${VERSION}.tar.bz2 + + +## - Entpacken +## - +if [ -d "${SRC_BASE_DIR}/nextcloud" ]; then + rm -rf ${SRC_BASE_DIR}/nextcloud +fi +bunzip2 < nextcloud-${VERSION}.tar.bz2 | tar -xf - + + +cd $WEB_BASE_DIR + + +## - Stop Cronjob: +## - */5 * * * * /root/bin/check_webservice_load.sh + +## - Stop apache webservice +## - +/etc/init.d/apache2 stop +## - Alternativly enable maintenance mode +## - +#su -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ maintenance:mode --on" -s /bin/bash $HTTP_USER + + +## - Backup Database +## - +mysqldump $MYSQL_CREDENTIALS --opt $DATABASE > \ + ${WEB_BASE_DIR}/${DATABASE}-v${PRIOR_VERSION}.`date +"%Y-%m-%d-%H%M"`.sql + + +## - ## - Deactivate third party apps +## - ## - +## - for _app in $THIRD_PARTY_APPS ; do +## - #su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ app:disable $_app" -s /bin/bash $HTTP_USER +## - su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/owncloud/occ app:disable $_app" -s /bin/bash $HTTP_USER +## - done +for _app in $THIRD_PARTY_APPS ; do + su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ app:disable $_app" -s /bin/bash $HTTP_USER + #su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/owncloud/occ app:disable $_app" -s /bin/bash $HTTP_USER +done + + +## - Erstelle Web-Verzeichnis für die neue OwnCloud Version +## - +mkdir ${WEB_BASE_DIR}/nextcloud-${VERSION} + +## - Kopiere Verzeichnis "config" in das neue Installationsverzeichnis +## - +cp -a ${CURRENT_INSTALL_DIR}/config $INSTALL_DIR/ + +## - Synchronisiere neues Installationsverzeichnis mit +## - den extrahierten Dateien +## - +rsync -a ${SRC_BASE_DIR}/nextcloud/ ${INSTALL_DIR}/ + +touch -t `date +%Y%m%d%H%M.%S` ${INSTALL_DIR} + + +## - Kopiere Daten Verzeichnis (hardlinks - harte Dateiverweise) +## - +cp -al ${CURRENT_DATA_DIR} $DATA_DIR + + +## - Set Permissions +## - + +chown -R ${HTTP_USER}:${HTTP_GROUP} ${INSTALL_DIR} +chown -R ${HTTP_USER}:${HTTP_GROUP} ${DATA_DIR} + + +## - Setze Symlink data verzeichnis +## - +rm ${WEB_BASE_DIR}/data +ln -s data-${VERSION} ${WEB_BASE_DIR}/data + + +## - Setze symlink (documentroot) auf das neue Installationsverzeichnis +## - +rm ${WEB_BASE_DIR}/nextcloud +ln -s nextcloud-${VERSION} ${WEB_BASE_DIR}/nextcloud + +## - Upgrade +## - +## - Note!! +## - this command probably disables 3rd-party aps +## - +su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ upgrade" -s /bin/bash $HTTP_USER + +#su -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ maintenance:mode --off" -s /bin/bash $HTTP_USER + + +## - Start Apache Webserver +## - +/etc/init.d/apache2 start + +## - Start Cronjob: +## - */5 * * * * /root/bin/check_webservice_load.sh + + +## - ## - Enable third party apps +## - ## - +## - for _app in $THIRD_PARTY_APPS ; do +## - su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ app:enable $_app" -s /bin/bash $HTTP_USER +## - done +for _app in $THIRD_PARTY_APPS ; do + su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ app:enable $_app" -s /bin/bash $HTTP_USER +done + + +## - Check Application "Notes" +## - +## - If not working as exspected, install app from git repositors +## - +## - cd ${WEB_BASE_DIR}/htdocs/apps +## - su $HTTP_USER -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ maintenance:mode --on" +## - mv notes notes.ORIG +## - git clone https://github.com/owncloud/notes.git +## - su $HTTP_USER -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ maintenance:mode --off" +## - +## - Upgrade from git-repository: +## - cd ${WEB_BASE_DIR}/htdocs/apps +## - cd notes +## - git pull --rebase origin master +## - + +cd ${WEB_BASE_DIR}/htdocs/apps +su -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ maintenance:mode --on" -s /bin/bash $HTTP_USER +mv notes notes.ORIG +git clone https://github.com/owncloud/notes.git +su -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ maintenance:mode --off" -s /bin/bash $HTTP_USER + + +------------------------------------------------------------------------ + +https://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html + +while IFS= read -r -d '' n; do + #if [[ "$n" == "mb" ]]; then + # continue + #fi + su -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/console.php files:scan --path `basename $n`" -s /bin/bash $HTTP_USER +done < <(find $WEB_BASE_DIR/data/ -mindepth 1 -maxdepth 1 -type d -print0) + +su -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/console.php files:scan --all" -s /bin/bash $HTTP_USER +su -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ maintenance:repair" -s /bin/bash $HTTP_USER diff --git a/README.php.ini b/README.php.ini new file mode 100644 index 0000000..26c7c1c --- /dev/null +++ b/README.php.ini @@ -0,0 +1,28 @@ +PHP configuration (php.ini) + memory_limit....................: 512M + max_execution_time..............: 180 + upload_max_filesize.............: 64M + post_max_size...................: 513M + mbstring.func_overload..........: 0 + always_populate_raw_post_data...: -1 + default_charset.................: 'UTF-8' + output_buffering................: off + +apcu: + apc.enable_cli = 1 + + +## - Notice: +## - +## - You can set cloud spezific php settings in file ".user.ini": +## - upload_max_filesize=2G +## - post_max_size=2G +## - memory_limit=512M +## - mbstring.func_overload=0 +## - always_populate_raw_post_data=-1 +## - default_charset='UTF-8' +## - output_buffering=0 +## - +## - making this file (.user.ini) writable by webserver user, you can +## - set some values as "upload_max_filesize" in admin area. +## - diff --git a/conf/update_hostname.conf.sample b/conf/update_hostname.conf.sample new file mode 100644 index 0000000..e60f4a8 --- /dev/null +++ b/conf/update_hostname.conf.sample @@ -0,0 +1,105 @@ +# --- +# - Configuration file for script 'update_nextcloud.sh' +# --- + +# - Website name of your Nextcloud to update +# - +WEBSITE="" + +# - Third Party modules of your NextCloud instance +# - +# - This Parameter is currently not in use +# - +# - Possible values are app-names like 'calendar' , 'contacts' , .. +# - +# - Takes a space seperated list +# - +#THIRD_PARTY_APPS="calendar contacts notes richdocuments" + + +# - Source directory for tar archives of Nextcloud +# - +# - Defaults to '/usr/local/src/nextcloud' +# - +#SRC_BASE_DIR="/usr/local/src/nextcloud" + + +# - Webservers user +# - +# - The script wil determin the webservers user, so you don't need to +# - configure it here. +# - +# - Setting this value take precedence over the scripts determined value. +# +#HTTP_USER= + +# - Webservers group +# - +# - The script wil determin the webservers group, so you don't need to +# - configure it here. +# - +# - Setting this value take precedence over the scripts determined value. +# - +#HTTP_GROUP= + + +# - Web base directory +# - +# - the directory where the documentroot lives +# - +# - Defaults to '/var/www/$WEBSITE +# - +#WEB_BASE_DIR="/var/www/owncloud-test.oopen.de" + +# - PHP engine +# - +# - Possible values: 'FPM' 'FCGI' 'MOD-PHP' +# - +# - Defaults to 'FPM' +# - +#PHP_ENGINE=FPM + +# - PHP main version +# - +# - Examples: +# - PHP_VERSION=5.6 +# - PHP_VERSION=7.1 +# - +# - only needed, if PHP_ENGINE ist set to 'FPM' +# - +PHP_VERSION= + +# - Database type +# - +# - Setting this value is required! +# - +# - Possible values: 'mysql' 'postgres' +# - +DATABASE_TYPE="mysql" + +# - Database Name +# - +# - Setting this value is required! +# - +DATABASE_NAME="ownCloud_test" + +# - Credentials to access MySQL/MariaDB Database +# - +# - Example +# - mysql_credential_args="--login-path=local" +# - mysql_credential_args="--defaults-file=/etc/mysql/debian.cnf" (Debian default) +# - mysql_credential_args="--defaults-file=/usr/local/mysql/sys-maint.cnf" +# - +MYSQL_CREDENTIALS="--login-path=local" + + +# - Credentials to access PostgreSQL Database +# - +PSQL_USER= +PSQL_PASS= + +# - PostgreSQL Server +# - +# - defaults to 'localhost' +# - +PSQL_SERVER= diff --git a/install_ownloud.txt b/install_ownloud.txt new file mode 100644 index 0000000..3c39604 --- /dev/null +++ b/install_ownloud.txt @@ -0,0 +1,326 @@ +## - Prerequisites +## - +apt-get install smbclient curl libcurl3 + +## - OpenOffice or LibreOffice +## - +apt-get install libreoffice ttf-mscorefonts-installer fonts-ipafont-mincho \ + ttf-wqy-microhei ttf-wqy-zenhei ttf-indic-fonts \ + ttf-bitstream-vera ttf-dejavu \ + ttf-xfree86-nonfree xfonts-100dpi xfonts-75dpi \ + ttf-kochi-gothic ttf-kochi-mincho ttf-telugu-fonts \ + ttf-oriya-fonts ttf-kannada-fonts ttf-bengali-fonts \ + ttf-baekmuk ttf-unfonts-core + +## - debian jessie / stretch +## - +apt-get install libreoffice \ + ttf-mscorefonts-installer fonts-ipafont-mincho \ + ttf-wqy-microhei ttf-wqy-zenhei fonts-indic \ + ttf-bitstream-vera ttf-dejavu \ + ttf-xfree86-nonfree xfonts-100dpi xfonts-75dpi \ + ttf-kochi-gothic ttf-kochi-mincho fonts-telu \ + fonts-telu-extra fonts-orya fonts-orya-extra \ + fonts-knda fonts-beng fonts-beng-extra \ + ttf-unfonts-core + #pttf-baekmuk ttf-unfonts-core + +## - debian stretch +## - +apt-get install libreoffice \ + ttf-mscorefonts-installer fonts-ipafont-mincho \ + ttf-wqy-microhei ttf-wqy-zenhei fonts-indic \ + ttf-bitstream-vera ttf-dejavu \ + ttf-xfree86-nonfree xfonts-100dpi xfonts-75dpi \ + fonts-telu \ + fonts-telu-extra fonts-orya fonts-orya-extra \ + fonts-knda fonts-beng fonts-beng-extra \ + ttf-unifont + #pttf-baekmuk ttf-unfonts-core + +apt-get install unoconv + + +## - ffmpeg or avconf +## - +apt-get install ffmpeg +apt-get install libav-tools + + +## - PHP module imagick +## - +apt-get install imagemagick libmagickwand-dev +/usr/local/php-5.6/bin/pecl install imagick + +## - Redis Server (for enhanced server performance) +## - +apt-get install redis-server + + + + +## -------------------------------------------------- +## - Install ownCloud +## - +## - see also: https://doc.owncloud.org/server/8.2/admin_manual/installation/ +## - +## -------------------------------------------------- + +HTTP_USER=www-data +HTTP_GROUP=www-data + +VERSION=10.0.2 +MAJOR_VERSION=`echo $VERSION | cut -d '.' -f1,2` + +SRC_BASE_DIR=/usr/local/src/owncloud + +WEB_BASE_DIR=/var/www/cl-test.oopen.de + +INSTALL_DIR=${WEB_BASE_DIR}/owncloud-${VERSION} +DATA_DIR=${WEB_BASE_DIR}/data-${VERSION} + + + +## - Install Owncloud +## - +## - see also: +## - https://doc.owncloud.org/server/${MAJOR_VERSION}/admin_manual/installation/ + +mkdir -p $SRC_BASE_DIR +cd $SRC_BASE_DIR + +if [ -f "owncloud-${VERSION}.tar.bz2" ]; then + rm owncloud-${VERSION}.tar.bz2 +fi +wget https://download.owncloud.org/community/owncloud-${VERSION}.tar.bz2 + +if [ -d "owncloud" ]; then + mv owncloud owncloud.`date +%Y%m%d-%H%M` +fi + +bunzip2 < owncloud-${VERSION}.tar.bz2 | tar -xf - +cp -r owncloud ${WEB_BASE_DIR}/owncloud-${VERSION} + + +cd $WEB_BASE_DIR +ln -s owncloud-${VERSION} ${WEB_BASE_DIR}/owncloud + + +mkdir -p $DATA_DIR +ln -s data-${VERSION} ${WEB_BASE_DIR}/data + +## - Set Permissions +## - +find ${INSTALL_DIR}/ -type f -print0 | xargs -0 chmod 0640 +find ${INSTALL_DIR}/ -type d -print0 | xargs -0 chmod 0750 + +chown -R root:${HTTP_GROUP} ${INSTALL_DIR}/ + +chown -R ${HTTP_USER}:${HTTP_GROUP} ${INSTALL_DIR}/apps/ +chown -R ${HTTP_USER}:${HTTP_GROUP} ${INSTALL_DIR}/config/ +chown -R ${HTTP_USER}:${HTTP_GROUP} ${INSTALL_DIR}/themes/ + +chown -R ${HTTP_USER}:${HTTP_GROUP} ${DATA_DIR} + +chown root:${HTTP_GROUP} ${INSTALL_DIR}/.htaccess +chown root:${HTTP_GROUP} ${DATA_DIR}/.htaccess + +chmod 0644 ${INSTALL_DIR}/.htaccess +chmod 0644 ${DATA_DIR}/.htaccess + +mkdir -p ${WEB_BASE_DIR}/sessions +chown root:${HTTP_GROUP} ${WEB_BASE_DIR}/sessions +chmod 2775 ${WEB_BASE_DIR}/sessions + +mkdir -p ${WEB_BASE_DIR}/tmp +chown root:${HTTP_GROUP} ${WEB_BASE_DIR}/tmp +chmod 2775 ${WEB_BASE_DIR}/tmp + + + + +## - Konfigure WebCron +## - +## - see: as user admin: admin --> Administration +## - + + +## - Konfigure redis +## - +/etc/redis/redis.conf: + unixsocket /tmp/redis.sock + unixsocketperm 777 + + +'logtimezone' => 'Europe/Berlin' + + +## ---- +## - Documents - known issues + +### Known issues ### +**Problem**: Editor doesn't open. Spinner spins for ages. +**Solution**: Try to disable gzip for Documents app by adding the following +line to your .htaccess: +`SetEnvIf Request_URI .*/apps/documents/ajax/.* no-gzip dont-vary` + +**Problem**: Doc(x) support doesn't work +**Solution**: Install at least `libreoffice-common` and `libreoffice-writer` +packages for your distro. +If you don't want to mess around with dependencies, you need simply install +`unoconv` package. It will do the trick for you. + +## - +## --- + + + + + + + + + + + + + + +## - See also: +## - +## - http://doc.owncloud.org/server/4.5/admin_manual/installation.html#manual-installation +## - + +apt-get install apache2 php5 php5-gd php-xml-parser php5-intl + + + +## - Prerequisites +## - +apt-get install smbclient curl libcurl3 \ + php5-gd php-xml-parser php5-intl + php5-curl php5-mysql \ + + +## - Dowload and extract +## - +mkdir -p /usr/local/src/ownCloud +cd /usr/local/src/ownCloud +wget http://mirrors.owncloud.org/releases/owncloud-4.5.5.tar.bz2 +bunzip2 < owncloud-4.5.5.tar.bz2 | tar -xf - + + +## - +## - +mkdir /var/www/cloud.oopen.de +mkdir /var/www/cloud.oopen.de/logs + +## - cp into documentroot +## - +cp -a /usr/local/src/ownCloud/owncloud /var/www/cloud.oopen.de/owncloud-4.5.5 + +mkdir /var/www/cloud.oopen.de/owncloud-4.5.5/data +chmod -R 755 /var/www/cloud.oopen.de/owncloud-4.5.5 +chown -R www-data:www-data /var/www/cloud.oopen.de/owncloud-4.5.5/{data,apps,config} + +ln -s owncloud-4.5.5 /var/www/cloud.oopen.de/htdocs + +## -------------------------------------------------- +## - ownCloud v. 5.0 +## -------------------------------------------------- + +a2enmod rewrite +a2enmod ssl +a2enmod deflate + +## - See also: +## - +## - http://doc.owncloud.org/server/5.0/admin_manual/installation/installation_source.html +## - + +apt-get install apache2 php5 php5-gd php-xml-parser php5-intl +apt-get install php5-mysql smbclient curl libcurl3 php5-curl +apt-get install clamav-daemon clamav-docs libclamunrar6 daemon + + +VERSION=5.0.5 + +WEB_USER=www-data +WEB_GROUP=www-data + +DATABASE=cloud_rls +DB_USER=oc_admin +DB_PASS=5bc55212f45bc712a8f16232281946d3 + +_db_root_user=root +_db_root_pass='buz111' + +OWNCLOUD_SRC_DIR=/usr/local/src/owncloud +WEB_BASEDIR=/var/www/cloud5.oopen.de + +mkdir -p $OWNCLOUD_SRC_DIR + +mkdir -p ${WEB_BASEDIR} + +## ------------------------------------- + +cd $OWNCLOUD_SRC_DIR +wget http://download.owncloud.org/community/owncloud-${VERSION}.tar.bz2 +bunzip2 < ${OWNCLOUD_SRC_DIR}/owncloud-${VERSION}.tar.bz2 | tar -xf - +mv ${OWNCLOUD_SRC_DIR}/owncloud ${WEB_BASEDIR}/owncloud-${VERSION} + +#cp -a ${WEB_BASEDIR}/owncloud ${WEB_BASEDIR}/owncloud-`date +"%Y%m%d-%H%M"` + + +cd $WEB_BASEDIR +mkdir ${WEB_BASEDIR}/data-${VERSION} +ln -s data-${VERSION} ${WEB_BASEDIR}/data + +chown -R ${WEB_USER}:${WEB_GROUP} ${WEB_BASEDIR}/owncloud-${VERSION}/config +chown -R ${WEB_USER}:${WEB_GROUP} ${WEB_BASEDIR}/owncloud-${VERSION}/apps +chown -R ${WEB_USER}:${WEB_GROUP} ${WEB_BASEDIR}/owncloud-${VERSION}/data + +rm -f ${WEB_BASEDIR}/owncloud +ln -s owncloud-${VERSION} ${WEB_BASEDIR}/owncloud +ln -s owncloud ${WEB_BASEDIR}/htdocs + +mkdir -p ${WEB_BASEDIR}/tmp +chown ${WEB_USER}:${WEB_GROUP} ${WEB_BASEDIR}/tmp + + + +## - Datenbank erstellen +## - +mysql -u$_db_root_user -p$_db_root_pass -Bse \ + "DROP DATABASE IF EXISTS $DATABASE;" + +mysql -u$_db_root_user -p$_db_root_pass -Bse \ + "CREATE DATABASE $DATABASE CHARACTER SET utf8 COLLATE utf8_general_ci;" +mysql -u$_db_root_user -p$_db_root_pass -Bse \ + "GRANT ALL ON ${DATABASE}.* TO 'oc_admin'@'localhost' IDENTIFIED BY '5bc55212f45bc712a8f16232281946d3';" +mysql -u$_db_root_user -p$_db_root_pass -Bse \ + "FLUSH PRIVILEGES;" + + +## - Installation +## - +## - Im Browser die url zur installation (documentroot) aufrufen +## - +## - !! Wichtig !! +## - +## - Bei der Installation das Datenverzeichnis explizit angeben: +## - Fortgeschritten -> Datenverzeichnis: ${WEB_BASEDIR}/data +## - +## - Hier NICHT die Versionsnummer angeben, da sonst nach einem versions upgrade +## - sowohl datenbank als auch config/config.php geändert werden müssten. +## - + +http://forum.owncloud.org/viewtopic.php?f=23&t=9296 +php_flag apc.cache_by_default Off + + +How to cleanly re-install an app? +http://forum.owncloud.org/viewtopic.php?f=17&t=7355 + +How to configure upload limits +http://forum.owncloud.org/viewtopic.php?f=17&t=7733 diff --git a/update_nextcloud.sh b/update_nextcloud.sh new file mode 100755 index 0000000..fb1b96d --- /dev/null +++ b/update_nextcloud.sh @@ -0,0 +1,747 @@ +#!/usr/bin/env bash + + +script_dir="$(dirname $(realpath $0))" +conf_dir="${script_dir}/conf" + +declare -a unsorted_website_arr+ +declare -a website_arr + +log_file="$(mktemp)" + + +# ============= +# --- Some functions +# ============= + +is_number() { + + return $(test ! -z "${1##*[!0-9]*}" > /dev/null 2>&1); + + # - also possible + # - + #[[ ! -z "${1##*[!0-9]*}" ]] && return 0 || return 1 + #return $([[ ! -z "${1##*[!0-9]*}" ]]) +} + +echononl(){ + echo X\\c > /tmp/shprompt$$ + if [ `wc -c /tmp/shprompt$$ | awk '{print $1}'` -eq 1 ]; then + echo -e -n "$*\\c" 1>&2 + else + echo -e -n "$*" 1>&2 + fi + rm /tmp/shprompt$$ +} +echo_done() { + if $terminal ; then + echo -e "\033[75G[ \033[32mdone\033[m ]" + else + echo " [ done ]" + fi +} +echo_ok() { + if $terminal ; then + echo -e "\033[75G[ \033[32mok\033[m ]" + else + echo " [ ok ]" + fi +} +echo_warning() { + if $terminal ; then + echo -e "\033[75G[ \033[33m\033[1mwarn\033[m ]" + else + echo " [ warning ]" + fi +} +echo_failed(){ + if $terminal ; then + echo -e "\033[75G[ \033[1;31mfailed\033[m ]" + else + echo ' [ failed! ]' + fi +} +echo_skipped() { + if $terminal ; then + echo -e "\033[75G[ \033[37mskipped\033[m ]" + else + echo " [ skipped ]" + fi +} +fatal (){ + echo "" + echo "" + if $terminal ; then + echo -e "\t[ \033[31m\033[1mFatal\033[m ]: \033[37m\033[1m$*\033[m" + echo "" + echo -e "\t\033[31m\033[1m Firewall Script will be interrupted..\033[m\033[m" + else + echo "fatal: $*" + echo "Script will be interrupted.." + fi + rm -f $log_file + echo "" + exit 1 +} + +error(){ + echo "" + if $terminal ; then + echo -e "\t[ \033[31m\033[1mFehler\033[m ]: $*" + else + echo "Error: $*" + fi + echo "" +} + +warn (){ + echo "" + if $terminal ; then + echo -e "\t[ \033[33m\033[1mWarning\033[m ]: $*" + else + echo "Warning: $*" + fi + echo "" +} + +info (){ + echo "" + if $terminal ; then + echo -e "\t[ \033[32m\033[1mInfo\033[m ]: $*" + else + echo "Info: $*" + fi + echo "" +} + +## - Check if a given array (parameter 2) contains a given string (parameter 1) +## - +containsElement () { + local e + for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done + return 1 +} + +## - +while IFS='' read -r -d '' _conf_file ; do + source $_conf_file + if [[ -n "$WEBSITE" ]] ; then + unsorted_website_arr+=("${WEBSITE}:$_conf_file") + fi + WEBSITE="" +done < <(find "${conf_dir}" -maxdepth 1 -type f -name "*.conf" -print0) + +if [[ ${#unsorted_website_arr} -eq 0 ]]; then + fatal "No configuration files found in '${script_dir}/conf' or no website configured!" +fi + +# - Sort array +# - +IFS=$'\n' website_arr=($(sort <<<"${unsorted_website_arr[*]}")) + + + +# ============= +# --- Some +# ============= + +# - Support systemd ? +# - +if [[ "X$(which systemd)" = "X" ]]; then + SYSTEMD_EXISTS=false +else + SYSTEMD_EXISTS=true +fi + +clear + +echo "" +echo -e "\033[32m-----\033[m" +echo "Update Nextcloud" +echo -e "\033[32m-----\033[m" + + +WEBSITE= +_OK=false +echo "" +echo "Which site would you like to update?" +echo "" +declare -i i=0 +for _site in ${website_arr[@]} ; do + IFS=':' read -a _arr <<< ${_site} + echo " [$i] ${_arr[0]}" + ((i++)) +done +echo +echononl " Eingabe: " +while ! $_OK ; do +read _IN + if is_number "$_IN" && [[ -n ${website_arr[$_IN]} ]]; then + IFS=':' read -a _arr <<< ${website_arr[$_IN]} + conf_file=${_arr[1]} + _OK=true + else + echo "" + echo -e "\tFalsche Eingabe !" + echo "" + echononl " Eingabe: " + fi +done + +echo "" +echo -e "\033[32m--\033[m" +echo "" +echo "Insert (new) Nextcloud version number." +echo "" +echo "" +VERSION= +while [ "X$VERSION" = "X" ] +do + echononl " Nextcloud version number: " + read VERSION + if [ "X$VERSION" = "X" ]; then + echo "" + echo -e "Eingabe erforderlich" + fi +done + + +echo "" +echononl " Include Configuration file.." +if [[ ! -f $conf_file ]]; then + echo_failed + fatal "Missing configuration file '$conf_file'" +else + source $conf_file + echo_ok +fi +echo "" + + + +# ============= +# --- Some checks +# ============= + +DEFAULT_SRC_BASE_DIR="/usr/local/src/nextcloud" +DEFAULT_HTTP_USER="www-data" +DEFAULT_HTTP_GROUP="www-data" + + +if [[ -z ${WEBSITE} ]] ; then + fatal "No website given (parameter 'WEBSITE')" +fi + +DEFAULT_WEB_BASE_DIR="/var/www/$WEBSITE" +DEFAULT_PHP_ENGINE="FPM" + +[[ -n "$SRC_BASE_DIR" ]] || SRC_BASE_DIR=$DEFAULT_SRC_BASE_DIR +#[[ -n "$HTTP_USER" ]] || HTTP_USER=$DEFAULT_HTTP_USER +#[[ -n "$HTTP_GROUP" ]] || HTTP_GROUP=$DEFAULT_HTTP_GROUP +[[ -n "$WEB_BASE_DIR" ]] || WEB_BASE_DIR=$DEFAULT_WEB_BASE_DIR + +if [[ ! -d ${WEB_BASE_DIR} ]] ; then + fatal "Web base directory not found (parameter 'WEB_BASE_DIR')" +fi + +[[ -n "$PHP_ENGINE " ]] || PHP_ENGINE=$DEFAULT_PHP_ENGINE + +if [[ "$PHP_ENGINE" = "FPM" ]] && [[ -z "$PHP_VERSION" ]] ; then + fatal "PHP Version must be givven if running PHP-FPM engine (parameter 'PHP_VERSION')" +fi + +if [[ "$DATABASE_TYPE" != "postgres" ]] && [[ "$DATABASE_TYPE" != "mysql" ]]; then + fatal "Wrong or missing database type (parameter 'DATABASE_TYPE')" +fi + +if [[ -z "$DATABASE_NAME" ]]; then + fatal "Missing database name (parameter 'DATABASE_NAME')" +fi + +if [[ "$DATABASE_TYPE" = "mysql" ]] && [[ -z "$MYSQL_CREDENTIALS" ]]; then + fatal "No Database Credentials for MySQL given (parameter 'MYSQL_CREDENTIALS')" +fi + +if [[ "$DATABASE_TYPE" = "postgres" ]]; then + if [[ -z "$PSQL_USER" ]] || [[ -z "$PSQL_PASS" ]]; then + fatal "No Database Credentials for PostgreSQL given (parameters: 'PSQL_USER' 'PSQL_PASS'" + fi +fi + +httpd_binary="`which httpd`" +if [ -z "$httpd_binary" ]; then + httpd_binary="$(ps -axu | grep httpd | grep -e "^root" | grep -v grep | awk '{print$11}')" + if [ -z "$httpd_binary" ]; then + if [ -x "/usr/local/apache2/bin/httpd" ]; then + httpd_binary="/usr/local/apache2/bin/httpd" + fi + fi +fi +if [ -x "$httpd_binary" ];then + + # - Determin websever user + # - + _HTTP_USER="`$httpd_binary -t -D DUMP_RUN_CFG | grep -i -e "^User" | awk '{print$2}' | cut -d\"=\" -f2 | tr -d '"'`" + _HTTP_GROUP="`$httpd_binary -t -D DUMP_RUN_CFG | grep -i -e "^Group" | awk '{print$2}' | cut -d\"=\" -f2 | tr -d '"'`" + + # - Is webserver running ? + # - + PID=$(ps aux | grep "$(realpath $httpd_binary)" | grep -e "^root" | grep -v grep | awk '{print$2}') + if [[ "X${PID}X" = "XX" ]] ;then + IS_HTTPD_RUNNING=false + else + IS_HTTPD_RUNNING=true + fi +fi + +if [[ -n "$_HTTP_USER" ]] ; then + if [[ -n "$HTTP_USER" ]] && [[ "$_HTTP_USER" != "$HTTP_USER" ]]; then + warn "The script has determined \033[1;37m${_HTTP_USER}\033[m as Webservers user. This\n value differs from the value given in your configuration file, \n which is \033[1;37m${HTTP_USER}\033[m and takes precedence." + else + HTTP_USER=$_HTTP_USER + fi +else + [[ -n "$HTTP_USER" ]] || HTTP_USER=$DEFAULT_HTTP_USER +fi +if [[ -n "$_HTTP_GROUP" ]] ; then + if [[ -n "$HTTP_GROUP" ]] && [[ "$_HTTP_GROUP" != "$HTTP_GROUP" ]]; then + warn "The script has determined \033[1;37m${_HTTP_GROUP}\033[m as Webservers group. This\n value differs from the value given in your configuration file, \n which is \033[1;37m${HTTP_GROUP}\033[m and takes precedence." + else + HTTP_GROUP=$_HTTP_GROUP + fi +else + [[ -n "$HTTP_GROUP" ]] || HTTP_GROUP=$DEFAULT_HTTP_GROUP +fi + + +echo "" +echo -e "\033[1;32mStarting Nextcloud Update for \033[1;37m${WEBSITE}\033[m" +echo "" +echo -e " Nextcloud verion.....................: $VERSION" +echo "" +echo -e " Website to update....................: $WEBSITE" +echo "" +echo -e " Web base directory...................: $WEB_BASE_DIR" +echo "" +echo -e " Source directory for tar archiv......: $SRC_BASE_DIR" +echo "" +echo -e " Webserver user.......................: $HTTP_USER" +echo -e " Webserver group......................: $HTTP_GROUP" +echo "" +echo -e " PHP version..........................: $PHP_VERSION" +echo -e " PHP Engine...........................: $PHP_ENGINE" +echo "" +echo -e " Databse name.........................: $DATABASE_NAME" +echo -e " Database type........................: $DATABASE_TYPE" +echo "" +if [[ "$DATABASE_TYPE" = "mysql" ]] ; then + echo -e " Mysql Credentials....................: $MYSQL_CREDENTIALS" +fi +echo "" + +echo "" +echo -n " Type upper case 'YES' to continue executing with this parameters: " +read OK +if [[ "$OK" = "YES" ]] ; then + echo "" + echo "" + echo -e "\033[1;32mGoing to update Nextcloud on \033[1;37m$WEBSITE \033[m" + echo "" +else + fatal "Abort by user request - Answer as not 'YES'" +fi + + +echo "" + +CURRENT_INSTALL_DIR=`realpath ${WEB_BASE_DIR}/nextcloud` +CURRENT_DATA_DIR=`realpath ${WEB_BASE_DIR}/data` +PRIOR_VERSION=`basename $CURRENT_INSTALL_DIR | cut -d"-" -f2` + +DATA_DIR=${WEB_BASE_DIR}/data-${VERSION} +INSTALL_DIR=${WEB_BASE_DIR}/nextcloud-${VERSION} + +echononl " Create source directory.." +if [[ ! -d "${SRC_BASE_DIR}" ]]; then + mkdir ${SRC_BASE_DIR} > $log_file 2>&1 + if [[ $? -eq 0 ]]; then + echo_ok + else + echo_failed + error "$(cat $log_file)" + fi +else + echo_skipped +fi + +#echononl " Change into ${SRC_BASE_DIR}" +#cd ${SRC_BASE_DIR} > $log_file 2>&1 +#if [[ $? -eq 0 ]]; then +# echo_ok +#else +# echo_failed +# fatal "$(cat $log_file)" +#fi + + +# - downloud nextcloud source +# - +echononl " Download file 'nextcloud-${VERSION}.tar.bz2'.." +if [[ -f "${SRC_BASE_DIR}/nextcloud-${VERSION}.tar.bz2" ]]; then + echo_skipped +else + wget -P ${SRC_BASE_DIR} https://download.nextcloud.com/server/releases/nextcloud-${VERSION}.tar.bz2 > $log_file 2>&1 + if [[ $? -eq 0 ]]; then + echo_ok + else + echo_failed + fatal "$(cat $log_file)" + fi +fi + +echononl " Delete existing dir '${SRC_BASE_DIR}/nextcloud'.." +if [ -d "${SRC_BASE_DIR}/nextcloud" ]; then + rm -rf ${SRC_BASE_DIR}/nextcloud + if [[ $? -eq 0 ]]; then + echo_ok + else + echo_failed + fatal "$(cat $log_file)" + fi +else + echo_skipped +fi + +# - Entpacken +# - +echononl " Untar/Unpack nextcloud-${VERSION}.tar.bz2" +bunzip2 < ${SRC_BASE_DIR}/nextcloud-${VERSION}.tar.bz2 | tar -C ${SRC_BASE_DIR} -xf - > $log_file 2>&1 +if [[ $? -eq 0 ]]; then + echo_ok +else + echo_failed + fatal "$(cat $log_file)" +fi + + +# - Deaktiviere Cronjobs +# - +_backup_crontab_file=/tmp/crontab_root.$(date +%Y-%m-%d-%H%M) +echononl " Backup Crontab to '$_backup_crontab_file'" +crontab -l > $_backup_crontab_file 2> $log_file +if [[ $? -eq 0 ]]; then + echo_ok +else + echo_failed + fatal "$(cat $log_file)" +fi + +echononl " Remove crontab for root.." +crontab -r > $log_file 2>&1 +if [[ $? -eq 0 ]]; then + echo_ok +else + echo_failed + fatal "$(cat $log_file)" +fi + + +# - Stop Apache Webserver +# - +echo "" +echononl " Stop Apache Webserver.." +if $SYSTEMD_EXISTS ; then + systemctl stop apache2 + if [[ $? -eq 0 ]]; then + echo_ok + else + echo_failed + fatal "$(cat $log_file)" + fi +else + /etc/init.d/apache2 stop + if [[ $? -eq 0 ]]; then + echo_ok + else + echo_failed + fatal "$(cat $log_file)" + fi +fi + +echo "" + +# - Backup Database +# - +echononl " Backup MySQL database '$DATABASE_NANE'.." +if [[ "$DATABASE_TYPE" = 'mysql' ]]; then + mysqldump $MYSQL_CREDENTIALS --opt $DATABASE_NAME > \ + ${WEB_BASE_DIR}/${DATABASE_NAME}-v${PRIOR_VERSION}.`date +"%Y-%m-%d-%H%M"`.sql 2> $log_file + if [[ $? -eq 0 ]]; then + echo_ok + else + echo_failed + fatal "$(cat $log_file)" + fi +elif [[ "$DATABASE_TYPE" = 'postgres' ]]; then + PGPASSWORD=$PSQL_PASS pg_dump $DATABASE_NAME -h $PSQL_SERVER -U $PSQL_USER -f postfix-$(date +%Y-%m-%d-%H%M).sql + if [[ $? -eq 0 ]]; then + echo_ok + else + echo_failed + fatal "$(cat $log_file)" + fi +fi + +# - Erstelle Web-Verzeichnis für die neue OwnCloud Version +# - +echononl " Create (new) dir '${WEB_BASE_DIR}/nextcloud-${VERSION}'.." +if [[ $? -eq 0 ]]; then + echo_ok +else + echo_failed + fatal "$(cat $log_file)" +fi +mkdir ${WEB_BASE_DIR}/nextcloud-${VERSION} > $log_file 2>&1 + +# - Kopiere Verzeichnis "config" in das neue Installationsverzeichnis +# - +echononl " Copy ols config into '${WEB_BASE_DIR}/nextcloud-${VERSION}'.." +cp -a ${CURRENT_INSTALL_DIR}/config $INSTALL_DIR/ > $log_file 2>&1 +if [[ $? -eq 0 ]]; then + echo_ok +else + echo_failed + fatal "$(cat $log_file)" +fi + +# - Synchronisiere neues Installationsverzeichnis mit +# - den extrahierten Dateien +# - +echononl " Sync downloaded (new) nextlcoud int '${INSTALL_DIR}'.." +rsync -a ${SRC_BASE_DIR}/nextcloud/ ${INSTALL_DIR}/ > $log_file 2>&1 +if [[ $? -eq 0 ]]; then + echo_ok +else + echo_failed + fatal "$(cat $log_file)" +fi + +echononl " Set actual date on directory '${INSTALL_DIR}'.." +touch -t `date +%Y%m%d%H%M.%S` ${INSTALL_DIR} > $log_file 2>&1 +if [[ $? -eq 0 ]]; then + echo_ok +else + echo_failed + error "$(cat $log_file)" +fi + + +# - Kopiere Daten Verzeichnis (hardlinks - harte Dateiverweise) +# - +echononl " Copy (hardlink) old data directory to '$DATA_DIR'.." +cp -al ${CURRENT_DATA_DIR} $DATA_DIR > $log_file 2>&1 +if [[ $? -eq 0 ]]; then + echo_ok +else + echo_failed + fatal "$(cat $log_file)" +fi + + +# - Set Permissions on new install directory +# - +echononl " Change permissions on '${INSTALL_DIR}'.." +chown -R ${HTTP_USER}:${HTTP_GROUP} ${INSTALL_DIR} +if [[ $? -eq 0 ]]; then + echo_ok +else + echo_failed + fatal "$(cat $log_file)" +fi + +# - Set Permissions on new data directory +# - +echononl " Change permissions on '${DATA_DIR}'.." +chown -R ${HTTP_USER}:${HTTP_GROUP} ${DATA_DIR} +if [[ $? -eq 0 ]]; then + echo_ok +else + echo_failed + fatal "$(cat $log_file)" +fi + + + +# - Delete symlink for old data directory +# - +echononl " Remove symlink from old data dir 'data-${PRIOR_VERSION}'.." +rm ${WEB_BASE_DIR}/data +if [[ $? -eq 0 ]]; then + echo_ok +else + echo_failed + fatal "$(cat $log_file)" +fi + +# - Set symlink for new data directory +# - +echononl " Set symlink for new data dir 'data-${VERSION}'.." +ln -s data-${VERSION} ${WEB_BASE_DIR}/data +if [[ $? -eq 0 ]]; then + echo_ok +else + echo_failed + fatal "$(cat $log_file)" +fi + + +# - Remove symlink from old installation directory +# - +rm ${WEB_BASE_DIR}/nextcloud +if [[ $? -eq 0 ]]; then + echo_ok +else + echo_failed + fatal "$(cat $log_file)" +fi + +# - Set symlink (documentroot) for new installation directory +# - +ln -s nextcloud-${VERSION} ${WEB_BASE_DIR}/nextcloud +if [[ $? -eq 0 ]]; then + echo_ok +else + echo_failed + fatal "$(cat $log_file)" +fi + +# - Update Nextcloud +# - +echo "" +echo " Update Nextcloud" +su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ upgrade" -s /bin/bash $HTTP_USER +if [[ $? -eq 0 ]]; then + echo_ok +else + echo_failed + fatal "$(cat $log_file)" +fi + +echo "" +echononl " Restart PHP engine.." +if [[ "$PHP_ENGINE" = "FPM" ]]; then + if $SYSTEMD_EXISTS ; then + systemctl restart php-${PHP_VERSION}-fpm + if [[ $? -eq 0 ]]; then + echo_ok + else + echo_failed + fatal "$(cat $log_file)" + fi + else + /etc/init.d/php-${PHP_VERSION}-fpm restart + if [[ $? -eq 0 ]]; then + echo_ok + else + echo_failed + fatal "$(cat $log_file)" + fi + fi +else + echo_skipped +fi + +# - Start Apache Webserver +# - +echo "" +echononl " Start Apache Webserver.." +if $IS_HTTPD_RUNNING ; then + if $SYSTEMD_EXISTS ; then + systemctl start apache2 + if [[ $? -eq 0 ]]; then + echo_ok + else + echo_failed + fatal "$(cat $log_file)" + fi + else + /etc/init.d/apache2 start + if [[ $? -eq 0 ]]; then + echo_ok + else + echo_failed + fatal "$(cat $log_file)" + fi + fi +else + echo_skipped + warn "The webserver was not running, so it will be keept down!" +fi + + +echononl " Install previously saved crontab from '$_backup_crontab_file'.." +crontab $_backup_crontab_file > $log_file 2>&1 +if [[ $? -eq 0 ]]; then + echo_ok +else + echo_failed + error "$(cat $log_file)" +fi + +rm -f $log_file +echo "" +exit +## - nextcloud-12.0.0 tar.bz2 +## - + + + + +cd $WEB_BASE_DIR + + +------------------------------------------------------------------------ + +## - Alternativly enable maintenance mode +## - +su -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ maintenance:mode --on" -s /bin/bash $HTTP_USER + + + +## - Deactivate third party apps +## - +## - for _app in $THIRD_PARTY_APPS ; do +## - #su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ app:disable $_app" -s /bin/bash $HTTP_USER +## - su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/nextcloud/occ app:disable $_app" -s /bin/bash $HTTP_USER +## - done +for _app in $THIRD_PARTY_APPS ; do + #su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ app:disable $_app" -s /bin/bash $HTTP_USER + su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/nextcloud/occ app:disable $_app" -s /bin/bash $HTTP_USER +done + + + + +## - ## - Enable third party apps +## - ## - +## - for _app in $THIRD_PARTY_APPS ; do +## - su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ app:enable $_app" -s /bin/bash $HTTP_USER +## - done +for _app in $THIRD_PARTY_APPS ; do + su -c"/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ app:enable $_app" -s /bin/bash $HTTP_USER +done + + +------------------------------------------------------------------------ + +https://doc.owncloud.org/server/8.0/admin_manual/maintenance/upgrade.html + +while IFS= read -r -d '' n; do + #if [[ "$n" == "mb" ]]; then + # continue + #fi + su -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/console.php files:scan --path `basename $n`" -s /bin/bash $HTTP_USER +done < <(find $WEB_BASE_DIR/data/ -mindepth 1 -maxdepth 1 -type d -print0) + +su -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/console.php files:scan --all" -s /bin/bash $HTTP_USER +su -c "/usr/local/php/bin/php ${WEB_BASE_DIR}/htdocs/occ maintenance:repair" -s /bin/bash $HTTP_USER