Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Кража телефона простимулировала задуматься над резервным копированием данных на телефоне. Вторая причина — на старом телефоне, к которому вернулся, накопитель всего на 64 ГБ, часть емкости уже занята системной информацией. Фотографии и видео быстро заполняют весь накопитель.
Ручное перекладывание по USB-кабелю на компьютер как решение не рассматривалось. FTP и CIFS/NFS — несовременно. Выбрал ownCloud.
- Есть бесплатная версия от сообщества.
- Есть репозитории под Ubuntu, есть собственный платный (сейчас не очень актуально) и сторонние бесплатные клиенты.
- Вся информация лежит на вашем сервере/хранилище.
- Есть инструкции, как настраивать на русском и на английском
- Есть веб-интерфейс для настройки и для просмотра сохраненных файлов
- Есть поддержка нескольких пользователей. Можно сделать хранилища для других жителей квартиры. Ваши данные не будут путаться с их. Каждый будет иметь доступ только к своим данным. Ну не считая админа сервера :)
- Установка необходимых пакетов
- Настройка MariaDB
- Настройка Apache
- Загрузка и установка ownCloud
- Выбор места на сервере для хранения файлов
- Настройка ownCloud
- Поиск и исправление ошибок собственных и из используемых инструкций
За основу я взял инструкции с сайта проекта. С ними не всё гладко. Есть Detailed Installation Guide и Quick Installation Guide. Проблема в том, что некоторые пункты установки/настройки предлагается выполнить разными путями и в итоге с разным результатом. Поэтому моё руководство — это компиляция этих инструкций, а также сторонних статей. Источники даю по ходу рассказа.
- Устанавливаем Apache, MariaDB, PHP, а также служебные пакеты.
evgeniy@owncloud-vm:~$ sudo apt update
evgeniy@owncloud-vm:~$ sudo apt install apache2 libapache2-mod-php mariadb-server openssl redis-server wget php-imagick php-common php-curl php-gd php-gmp php-bcmath php-imap php-intl php-json php-mbstring php-mysql php-ssh2 php-xml php-zip php-apcu php-redis php-ldap php-phpseclib libsmbclient-dev php-dev php-pear
- Готовимся к работе с репозиторием PHP (PEAR):
evgeniy@owncloud-vm:~$ sudo pecl channel-update pecl.php.net
Updating channel «pecl.php.net»
Update of Channel «pecl.php.net» succeeded
Я не специалист в PHP, поэтому просто приведу цитату из man-страницы pecl
PEAR is the PHP Extension and Application Repository, found at pear.php.net.
The pear command is used to install PEAR extensions.
The pecl command is used to install PECL extensions.
Создаем папку для кэша PEAR
evgeniy@ownclowd-vm:~$ mkdir -p /tmp/pear/cache
- Небольшое лирическое отступление. Я вначале использовал дистрибутив Ubuntu 18.04. Но в требованиях к ownCloud указан PHP 7.4, а для 18.04 стандартом идет 7.2. Поэтому я сделал do-release-update для дистрибутива, но уже после установки пакетов (пункты 1 и 2). Поэтому после обновления при запуске команды pecl у меня появлялись ошибки:
evgeniy@owncloud-vm:~$ sudo pear channel-update pear.php.net PHP Warning: PHP Startup: Unable to load dynamic library 'smbclient.so' (tried: /usr/lib/php/20190902/smbclient.so (/usr/lib/php/20190902/smbclient.so: cannot open shared object file: No such file or directory), /usr/lib/php/20190902/smbclient.so.so (/usr/lib/php/20190902/smbclient.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 Notice: Trying to access array offset on value of type bool in PEAR/REST.php on line 187 PHP Notice: Trying to access array offset on value of type bool in /usr/share/php/PEAR/REST.php on line 187
Проблема была решена следующим набором команд — обновление PEAR до версии 1.10.13 (рекомендуется в подробной инструкции, в краткой такого нет) и принудительное обновление состава пакетов из репозитория:evgeniy@owncloud-vm:~$ pear version evgeniy@owncloud-vm:~$ sudo pear upgrade --force --alldeps http://pear.php.net/get/PEAR-1.10.13 evgeniy@owncloud-vm:~$ sudo pear clear-cache evgeniy@owncloud-vm:~$ sudo pear update-channels evgeniy@owncloud-vm:~$ sudo pear upgrade --force evgeniy@owncloud-vm:~$ sudo pear upgrade-all evgeniy@owncloud-vm:~$ pear version
- Ставим клиент SMB для PHP и активируем его
evgeniy@owncloud-vm:~$ sudo pecl install smbclient-stable downloading smbclient-1.0.6.tgz ... Starting to download smbclient-1.0.6.tgz (33,207 bytes) .........done: 33,207 bytes .... evgeniy@test:~$ echo "extension=smbclient.so" | sudo tee /etc/php/7.4/mods-available/smbclient.ini extension=smbclient.so evgeniy@owncloud-vm:~$ sudo phpenmod smbclient
Перезапускаем Apache и проверяем, что модуль SMB загружен:evgeniy@owncloud-vm:~$ sudo systemctl restart apache2 evgeniy@owncloud-vm:~$ php -m |grep smbclient
В выводе команды должны быть модули libsmbclient и smbclient.
- Ставим еще немного пакетов
evgeniy@owncloud-vm:~$ sudo apt install unzip bzip2 rsync curl jq inetutils-ping ldap-utils smbclient
- Сохраняем в переменную IP-адрес, придумываем и сохраняем в переменную доменное имя (FQDN) сервера
evgeniy@owncloud-vm:~$ my_ip=$(hostname -I|cut -f1 -d ' ') evgeniy@owncloud-vm:~$ my_domain="test.owncloud.local"
Меняем имя сервера на то, что мы сохранили в переменную my_domainevgeniy@owncloud-vm:~$ hostnamectl -f owncloud-vm evgeniy@owncloud-vm:~$ sudo hostnamectl set-hostname $my_domain evgeniy@owncloud-vm:~$ hostname -f test.owncloud.local
- Настраиваем MariaDB. Запускаем «Мастер установки». Я дал следующие ответы на его вопросы:
evgeniy@test:~$ sudo mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] y New password:<font color="green"><пароль для root></font> Re-enter new password:<font color="green"><пароль для root></font> Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] n ... skipping. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] ... Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!
Проверяем версию, ну и что есть доступ к консоли администратораevgeniy@test:~$ mysqladmin -u root -p version Enter password: mysqladmin Ver 9.1 Distrib 10.3.34-MariaDB, for debian-linux-gnu on x86_64 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Server version 10.3.34-MariaDB-0ubuntu0.20.04.1 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 1 hour 34 min 35 sec Threads: 6 Questions: 74 Slow queries: 0 Opens: 33 Flush tables: 1 Open tables: 26 Queries per second avg: 0.013
Какая может быть проблема. У меня эта команда выдавала ошибку доступа. Если запускать ее с sudo, то команда работала корректно. Аналогичная история была с командой"mysql -u root"
Это можно исправить следующим набором команд:
evgeniy@test:~$ sudo mysql -u root [mysql] use mysql; [mysql] update user set plugin='' where User='root'; [mysql] flush privileges; [mysql] \q
Команда из инструкции к ownCloud
evgeniy@test:~$ sudo sed -i "/\[mysqld\]/atransaction-isolation = READ-COMMITTED\nperformance_schema = on" /etc/mysql/mariadb.conf.d/50-server.cnf
Перезапускаем сервер БД и проверяем его статус:evgeniy@test:~$ sudo systemctl restart mariadb evgeniy@test:~$ sudo systemctl status mariadb ● mariadb.service - MariaDB 10.3.34 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2022-06-05 00:03:15 MSK; 31s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Process: 1253 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS) Process: 1264 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Process: 1266 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ] &> Process: 1350 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Process: 1352 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS) Main PID: 1319 (mysqld) Status: "Taking your SQL requests now..." Tasks: 31 (limit: 1103) Memory: 168.2M CGroup: /system.slice/mariadb.service └─1319 /usr/sbin/mysqld Jun 05 00:03:15 test.owncloud.local systemd[1]: Started MariaDB 10.3.34 database server. Jun 05 00:03:15 test.owncloud.local /etc/mysql/debian-start[1354]: Upgrading MySQL tables if necessary. Jun 05 00:03:15 test.owncloud.local /etc/mysql/debian-start[1357]: /usr/bin/mysql_upgrade: the '--basedir' option is always ignored Jun 05 00:03:15 test.owncloud.local /etc/mysql/debian-start[1357]: Looking for 'mysql' as: /usr/bin/mysql Jun 05 00:03:15 test.owncloud.local /etc/mysql/debian-start[1357]: Looking for 'mysqlcheck' as: /usr/bin/mysqlcheck Jun 05 00:03:15 test.owncloud.local /etc/mysql/debian-start[1357]: This installation of MariaDB is already upgraded to 10.3.34-MariaDB. Jun 05 00:03:15 test.owncloud.local /etc/mysql/debian-start[1357]: There is no need to run mysql_upgrade again for 10.3.34-MariaDB. Jun 05 00:03:15 test.owncloud.local /etc/mysql/debian-start[1357]: You can use --force if you still want to run mysql_upgrade Jun 05 00:03:15 test.owncloud.local /etc/mysql/debian-start[1365]: Checking for insecure root accounts. Jun 05 00:03:15 test.owncloud.local /etc/mysql/debian-start[1369]: Triggering myisam-recover for all MyISAM tables and aria-recover for all Aria tables lines 1-27/27 (END)
C этим разобрались. Идем дальше
- Настраиваем Apache. Включаем необходимые модули:
evgeniy@test:~$ sudo a2enmod rewrite headers env dir mime unique_id ssl
Для того, чтобы правильно работал выбранный мною клиент, да и вообще для безопасности, нужно использовать протокол HTTPS. Для этого надо сгенерировать ключи для SSL. Создаем директорию для ключей, переходим в нее и генерируем ключи. В качестве Common Name используем доменное имя сервера (FQDN), которое мы создали в пункте 6. в моем случае это «test.owncloud.local»evgeniy@test:~$ sudo mkdir /etc/apache2/certificate evgeniy@test:~$ cd /etc/apache2/certificate/ evgeniy@test:/etc/apache2/certificate$ sudo openssl req -new -newkey rsa:4096 -x509 -sha256 -days 365 -nodes -out apache-certificate.crt -keyout apache.key Generating a RSA private key .............................................++++ .................++++ writing new private key to 'apache.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:RU State or Province Name (full name) [Some-State]:Moscow Locality Name (eg, city) []:Moscow Organization Name (eg, company) [Internet Widgits Pty Ltd]:Home Organizational Unit Name (eg, section) []: <font color="green">Common Name (e.g. server FQDN or YOUR name) []:test.owncloud.local</font> Email Address []:
- Создаем файл конфигурации нашей директории в Apache:
evgeniy@test:~$ sudo vim /etc/apache2/sites-available/owncloud.conf
Следующего содержания:Alias /owncloud "/var/www/owncloud" <Directory /var/www/owncloud> Options +FollowSymlinks AllowOverride All Require all granted Satisfy Any <IfModule mod_dav.c> Dav off </IfModule> </Directory>
Активируем ее:evgeniy@test:~$ sudo a2ensite owncloud.conf Enabling site owncloud. To activate the new configuration, you need to run: systemctl reload apache2
- Настраиваем Apache на работу с HTTPS. При обращении по протоколу HTTP (порт 80) клиент будет перенаправляться на порт HTTPS (443). Редактируем файл 000-default.conf
evgeniy@test:~$ sudo vim /etc/apache2/sites-available/000-default.conf
Содержание такое:<VirtualHost *:80> RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L] </virtualhost> <VirtualHost *:443> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/apache2/certificate/apache-certificate.crt SSLCertificateKeyFile /etc/apache2/certificate/apache.key </VirtualHost>
Активируем:evgeniy@test:~$ sudo a2ensite 000-default.conf Enabling site 000-default. To activate the new configuration, you need to run: systemctl reload apache2
Перезапускаем Apache:
evgeniy@test:~$ sudo systemctl restart apache2
- Установка самого ownCloud. Я использую загрузку и распаковку архива. Так исторически сложилось. Но рекомендую использовать готовые пакеты. Инструкция, как добавить репозиторий тут. Ставить надо пакет owncloud-complete-files.
Загружка, распаковка, смена владельца:evgeniy@test:~$ cd /var/www evgeniy@test:/var/www$ sudo wget https://download.owncloud.com/server/stable/owncloud-complete-latest.tar.bz2 --2022-06-05 00:11:58-- https://download.owncloud.com/server/stable/owncloud-complete-latest.tar.bz2 Resolving download.owncloud.com (download.owncloud.com)... 167.233.14.167, 2a01:4f8:1c1d:3d1::1 Connecting to download.owncloud.com (download.owncloud.com)|167.233.14.167|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 79062710 (75M) [application/x-bzip2] Saving to: ‘owncloud-complete-latest.tar.bz2’ owncloud-complete-latest.tar.bz2 100%[============================================================================>] 75.40M 1.08MB/s in 1m 45s 2022-06-05 00:13:44 (734 KB/s) - ‘owncloud-complete-latest.tar.bz2’ saved [79062710/79062710] evgeniy@test:/var/www$ sudo tar -xjf owncloud-complete-latest.tar.bz2 evgeniy@test:/var/www$ sudo chown -R www-data. owncloud
- Запуск установщика:
evgeniy@test:/var/www$ cd /var/www/owncloud evgeniy@test:/var/www/owncloud$ sudo -u www-data ./occ maintenance:install --database "mysql" --database-name "owncloud" --database-user "root" --database-pass "123456" --data-dir "/var/www/owncloud/data" --admin-user "admin" --admin-pass "123456"
Все идентификаторы (имена пользователей, пароли) надо поменять на используемые у вас.
Если что-то пошло не так и надо удалить базу данных ownCloud, то проверяем, что база есть и каково ее имя, удаляем, проверяем, что операция прошла успешно:
evgeniy@test:~$ sudo mysql -u root -e "SHOW DATABASES"; evgeniy@test:~$ sudo mysql -u root -e "DROP DATABASE owncloud"; evgeniy@test:~$ sudo mysql -u root -e "SHOW DATABASES";
- Нужно IP-адрес сервера и его FQDN добавить в доверенные домены ownCloud:
evgeniy@test:/var/www/owncloud$ sudo -u www-data ./occ config:system:set trusted_domains 1 --value="$my_ip" System config value trusted_domains => 1 set to string 172.16.1.213 evgeniy@test:/var/www/owncloud$ sudo -u www-data ./occ config:system:set trusted_domains 2 --value="$my_domain" System config value trusted_domains => 2 set to string test.owncloud.local
- Задачи для Cron'a:
evgeniy@test:~$ echo "*/15 * * * * /var/www/owncloud/occ system:cron" | sudo -u www-data -g crontab tee -a /var/spool/cron/crontabs/www-data */15 * * * * /var/www/owncloud/occ system:cron evgeniy@test:~$ echo "0 2 * * * /var/www/owncloud/occ dav:cleanup-chunks" | sudo -u www-data -g crontab tee -a /var/spool/cron/crontabs/www-data 0 2 * * * /var/www/owncloud/occ dav:cleanup-chunks
- На этом этапе ownCloud должен быть доступен в браузере по IP-адресу вашего сервера (протокол HTTPS — порт 443).
Пока есть один пользователь admin. Пароль для него задан при установке (пункт 12), параметр --admin-pass.
Вид интерфеса после авторизации:
- Перенос каталога с данными. По умолчанию данные хранятся в каталоге "/var/www/owncloud/data/". Правильнее хранить данные на отдельном диске, возможно, сетевом или на RAID-массиве. Далее преполагается, что целевой том для данных смонтирован по пути "/mnt/owncloud". Инструкция, как это сделать на официальном сайте. Но в ней неточности с путями. Вначале я сделал по инструкции, и у меня не заработало — файлы были недоступны. Я создал нового пользователя, и его каталог файлов лежал по правильному пути и был доступен. Сравнение записей в таблицах показало, где ошибка.
Переводим ownCloud в сервисный режим и останавливаем Apache:evgeniy@test:~$ cd /var/www/owncloud evgeniy@test:/var/www/owncloud$ sudo -u www-data php occ maintenance:mode --on Maintenance mode enabled Please also consider to stop the web server on all ownCloud instances evgeniy@test:/var/www/owncloud$ sudo systemctl stop apache2.service
Создаем каталог, если он еще не создан, и переносим в него файлы:evgeniy@test:/var/www/owncloud$ sudo mkdir /mnt/owncloud evgeniy@test:/var/www/owncloud$ sudo chown www-data /mnt/owncloud evgeniy@test:/var/www/owncloud$ sudo rsync -avz /var/www/owncloud/data /mnt/owncloud sending incremental file list data/ data/.htaccess data/.ocdata data/htaccesstest.txt data/index.html data/owncloud.log data/admin/ data/admin/cache/ data/admin/files/ data/admin/files/ownCloud Manual.pdf data/admin/files/Documents/ data/admin/files/Documents/Example.odt data/admin/files/Photos/ data/admin/files/Photos/Lake-Constance.jpg data/admin/files/Photos/Portugal.jpg data/admin/files/Photos/Teotihuacan.jpg data/avatars/ data/files_external/ data/files_external/rootcerts.crt sent 6,985,083 bytes received 277 bytes 13,970,720.00 bytes/sec total size is 8,178,313 speedup is 1.17
Манипуляции с базой данных. Заходим на сервер БД клиентом:evgeniy@test:/var/www/owncloud$ mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 45 Server version: 10.3.34-MariaDB-0ubuntu0.20.04.1 Ubuntu 20.04 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Выбираем нашу базу:MariaDB [(none)]> use owncloud Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed
Смотрим список пользователей и у каждого меняем путь. Если уже создано несколько пользователей, то используем поле id для их идентичификации. Если вы делаете эту процедуру сразу после установки ownCloud, то будет только один пользователь — admin.MariaDB [owncloud]> select * from oc_accounts; +----+-------+---------+---------------+--------------+-------+------------+------------------+------------------------------+-------+ | id | email | user_id | lower_user_id | display_name | quota | last_login | backend | home | state | +----+-------+---------+---------------+--------------+-------+------------+------------------+------------------------------+-------+ | <font color="green">1</font> | NULL | admin | admin | admin | NULL | 1654386521 | OC\User\Database | /var/www/owncloud/data/admin | 1 | +----+-------+---------+---------------+--------------+-------+------------+------------------+------------------------------+-------+ 1 row in set (0.000 sec) MariaDB [owncloud]> UPDATE oc_accounts SET home='/mnt/owncloud/data/admin' WHERE <font color="green">id=1</font>; Query OK, 1 row affected (0.033 sec) Rows matched: 1 Changed: 1 Warnings: 0
Теперь надо сделать выборку по задачам и проверить, нет ли у какой-либо задачи старого пути. У меня таких не нашлось.MariaDB [owncloud]> select * from oc_jobs where class = 'OC\Log\Rotate'; Empty set (0.000 sec) MariaDB [owncloud]> select * from oc_jobs; +----+----------------------------------------------------+----------+------------+--------------+-------------+--------------------+ | id | class | argument | last_run | last_checked | reserved_at | execution_duration | +----+----------------------------------------------------+----------+------------+--------------+-------------+--------------------+ | 1 | OCA\Files\BackgroundJob\ScanFiles | null | 1654386430 | 1654386430 | 0 | 0 | | 2 | OCA\Files\BackgroundJob\DeleteOrphanedItems | null | 1654386437 | 1654386437 | 0 | 0 | | 3 | OCA\Files\BackgroundJob\CleanupFileLocks | null | 1654386444 | 1654386444 | 0 | 0 | | 4 | OCA\Files\BackgroundJob\CleanupPersistentFileLocks | null | 1654386477 | 1654386477 | 0 | 0 | | 5 | OCA\DAV\CardDAV\SyncJob | null | 1654386505 | 1654386505 | 0 | 0 | | 6 | OCA\DAV\BackgroundJob\CleanProperties | null | 1654386522 | 1654386521 | 0 | 0 | | 7 | OCA\Activity\BackgroundJob\EmailNotification | null | 1654386739 | 1654386739 | 0 | 0 | | 8 | OCA\Activity\BackgroundJob\ExpireActivities | null | 1654386749 | 1654386749 | 0 | 0 | | 9 | OCA\Federation\SyncJob | null | 1654386752 | 1654386752 | 0 | 0 | | 10 | OCA\Files_Sharing\DeleteOrphanedSharesJob | null | 1654386761 | 1654386761 | 0 | 0 | | 11 | OCA\Files_Sharing\ExpireSharesJob | null | 1654386770 | 1654386770 | 0 | 0 | | 12 | OCA\Files_Sharing\External\ScanExternalSharesJob | null | 1654386775 | 1654386775 | 0 | 0 | | 13 | OCA\Files_Trashbin\BackgroundJob\ExpireTrash | null | 1654386795 | 1654386795 | 0 | 0 | | 14 | OCA\Files_Versions\BackgroundJob\ExpireVersions | null | 1654386833 | 1654386833 | 0 | 0 | | 15 | OCA\Market\CheckUpdateBackgroundJob | null | 0 | 1654386024 | 0 | -1 | | 16 | OCA\UpdateNotification\Notification\BackgroundJob | null | 0 | 1654386025 | 0 | -1 | | 17 | \OC\Authentication\Token\DefaultTokenCleanupJob | null | 0 | 1654386026 | 0 | -1 | +----+----------------------------------------------------+----------+------------+--------------+-------------+--------------------+ 17 rows in set (0.000 sec)
Если задача есть, то выполните запрос:MariaDB [owncloud]> UPDATE oc_jobs SET argument = REPLACE(argument, '\\/var\\/www\\/owncloud\\/data\\/', '\\/mnt\\/owncloud/data\\/') WHERE id = <id of the incorrect record>;
где в <id of the incorrect record> подставить id с записью, у которой неверный путь.Выходим из БД:MariaDB [owncloud]> \q Bye
Проверяем пути в приложениях. Если у какого-то приложения есть старый путь, то меняем его (команда ниже). В моем случае такого приложения не нашлось.evgeniy@test:/var/www/owncloud$ sudo -u www-data php ./occ config:list { "system": { "instanceid": "oc8mwxq3rfxl", "passwordsalt": "***REMOVED SENSITIVE VALUE***", "secret": "***REMOVED SENSITIVE VALUE***", "trusted_domains": [ "localhost", "172.16.1.213", "test.owncloud.local" ], "datadirectory": "\/mnt\/owncloud\/data", "overwrite.cli.url": "http:\/\/localhost", "dbtype": "mysql", "version": "10.10.0.3", "dbname": "owncloud", "dbhost": "localhost", "dbtableprefix": "oc_", "mysql.utf8mb4": true, "dbuser": "***REMOVED SENSITIVE VALUE***", "dbpassword": "***REMOVED SENSITIVE VALUE***", "allow_user_to_change_mail_address": "", "logtimezone": "UTC", "apps_paths": [ { "path": "\/var\/www\/owncloud\/apps", "url": "\/apps", "writable": false }, { "path": "\/var\/www\/owncloud\/apps-external", "url": "\/apps-external", "writable": true } ], "installed": true, "maintenance": false }, "apps": { "activity": { "enabled": "yes", "installed_version": "2.7.0", "types": "filesystem" }, "backgroundjob": { "lastjob": "14" }, "comments": { "enabled": "yes", "installed_version": "0.3.0", "types": "logging,dav" }, "configreport": { "enabled": "yes", "installed_version": "0.2.1", "types": "filesystem" }, ........ "updatenotification": { "enabled": "yes", "installed_version": "0.2.1", "types": "" } } }
Команда для замены (не проверял):evgeniy@test:/var/www/owncloud$ sudo -u www-data php ./occ config:app:set --value /mnt/owncloud/data <название приложения> <имя параметра, содержащего путь к каталогу>
И, наконец, исправляем путь в файле настроек, параметр datadirectory:evgeniy@test:/var/www/owncloud$ sudo vim /var/www/owncloud/config/config.php <?php $CONFIG = array ( 'instanceid' => 'oc8mwxq3rfxl', 'passwordsalt' => 'ahNk4VxR1R5DeZyJ9ly8wsdqCXo1z3', 'secret' => 'b8xm+wxPuQFyuW0syudVGGsKQwgfnTFoMEBm6cZA00Wm2zG0', 'trusted_domains' => array ( 0 => 'localhost', 1 => '172.16.1.213', 2 => 'test.owncloud.local', ), <font color="green">'datadirectory' => '/mnt/owncloud/data',</font> 'overwrite.cli.url' => 'http://localhost', 'dbtype' => 'mysql', 'version' => '10.10.0.3', 'dbname' => 'owncloud', 'dbhost' => 'localhost', 'dbtableprefix' => 'oc_', 'mysql.utf8mb4' => true, 'dbuser' => 'oc_admin', 'dbpassword' => 'WeBkvHU7WqHPQ/7Sxm0Oq4rVs1vAEh', 'allow_user_to_change_mail_address' => '', 'logtimezone' => 'UTC', 'apps_paths' => array ( 0 => array ( 'path' => '/var/www/owncloud/apps', 'url' => '/apps', 'writable' => false, ), 1 => array ( 'path' => '/var/www/owncloud/apps-external', 'url' => '/apps-external', 'writable' => true, ), ), 'installed' => true, 'maintenance' => false, );
Возвращаем ownCloud в боевой режим и запускаем Apache:evgeniy@test:/var/www/owncloud$ sudo -u www-data php occ maintenance:mode --off ownCloud is in maintenance mode - no app have been loaded Maintenance mode disabled evgeniy@test:/var/www/owncloud$ sudo systemctl start apache2.service
- На этом настройка серверной части завершена. Можно пользоваться веб-интерфейсом. Настройку клиента на Андроиде рассмотрю в следующей статье.