Установка сервера ownCloud

Установка Apache и PHP
Установить PHP 7.3. Для PHP необходимо установить библиотеку:

# dnf --enablerepo=PowerTools install libedit-devel

Установка MariaDB

Открыть на редактирование /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

Установка 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:

cURL error 60: SSL certificate problem: unable to get local issuer certificate

Решение:

Обновить файл корневых сертификатов с сайта https://curl.haxx.se/docs/caextract.html:

resources/config/ca-bundle.crt

Ошибка 2:

«файл заблокирован» или «ошибка удаления»

Решение:

Добавить в файл config/config.php:

// ...
'filelocking.enabled' => false,
// ...