Установка сервера ownCloud
Установка Apache и PHP
Установить PHP 7.3. Для PHP необходимо установить библиотеку:
# dnf --enablerepo=PowerTools install libedit-devel
Открыть на редактирование /etc/php.ini и изменить параметр:
memory_limit = 512M
Перейти в папку, скачать дистрибутив и разархивировать:
# cd /var/www
# wget https://download.owncloud.org/community/owncloud-10.4.1.zip
# unzip ./owncloud-10.4.1.zip
Назначить директории права на пользователя Apache:
# chown -R apache:apache owncloud
Создать и отредактировать файл:
# touch /etc/httpd/conf.d/owncloud.conf
# vi /etc/httpd/conf.d/owncloud.conf
Вставить текст:
Alias /owncloud "/var/www/owncloud/"
<Directory /var/www/owncloud/>
Options +FollowSymlinks
AllowOverride All
</Directory>
SetEnv HOME /var/www/owncloud
SetEnv HTTP_HOME /var/www/owncloud
Настройку можно вставить в любой виртуальный хост
Подключение Memcached
В файле /var/www/disk/config/config.php добавить:
'memcache.local' => '\OC\Memcache\Memcached',
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcached_servers' => array(
array('localhost', 11211),
),
HSTS
Для Apach/httpd:
<VirtualHost *:443>
......
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
......
</VirtualHost>
Для NGINX:
...
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains";
...
Транзакционная блокировка файлов
Установить Redis:
# yum install redis
Запустить и добавить в автозапуск
# systemctl start redis.service
# systemctl enable redis
Для проверки что Redis работает можно ввести команду (в ответ должно вывести PONG):
# redis-cli ping
Установить модуль для PHP
# yum install php-pecl-redis5
В файле /var/www/disk/config/config.php добавить:
'filelocking.enabled' => true,
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => array(
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
'password' => '', // Optional, if not defined no password will be used.
),
Добавить в CRON задание:
*/15 * * * * /usr/bin/php -f /path/to/your/owncloud/occ system:cron
Загрузка файлов из вне при помощи CURL:
# curl -X PUT -u "<ЛОГИН>:<ПАРОЛЬ>" "https://server/owncloud/remote.php/webdav/<РАСПОЛОЖЕНИЯ ФАЙЛА В МЕТО ЗАГРУЗКИ>" --data-binary @"<РАСПОЛОЖЕНИЕ ФАЙЛА>"
пример:
# curl -X PUT -u "user:password" "https://cloud.disweb.ru/owncloud/remote.php/webdav/2020-08-17-10-11-file.tar.gz" --data-binary @"/home/user/site/backup/2020-08-17-10-11-file.tar.gz"
Примеры переиндексации всех файлов:
всех пользователей:
# sudo -u apache php ./occ files:scan --all
для одного пользователя:
# sudo -u www-data php ./occ files:scan -all ./occ files:scan username
Дополнения в отдельную директорию
Добавить в config/config.php:
// ...
'appstoreenabled' => true,
'appstoreurl' => "http://api.apps.owncloud.com/v1",
'appcodechecker' => true,
'apps_paths' => array(
0 => array(
'path'=> '/var/www/owncloud/apps',
'url' => '/apps',
'writable' => true,
),
1 => array(
'path'=> '/var/www/owncloud/apps_custom',
'url' => '/apps_custom',
'writable' => true,
),
),
// ...
Решение ошибок
Ошибка 1:
Решение:
Обновить файл корневых сертификатов с сайта https://curl.haxx.se/docs/caextract.html:
resources/config/ca-bundle.crt
Ошибка 2:
«файл заблокирован» или «ошибка удаления»
Решение:
Добавить в файл config/config.php:
// ...
'filelocking.enabled' => false,
// ...