Owncloud — это программное решение для обмена файлами, которое очень сильно похоже на Dropbox и аналогичные сервисы хостинга файлов и фото. OwnCloud, также как и NextCloud написан на PHP, поэтому обычно его устанавливают совместно с Apache, но он нам не особо нравится, поэтому мы будем разворачивать ownCloud совместно с Nginx на VPS.
Установка Nginx, MariaDB и PHP
Установить Nginx можно в одну команду: sudo apt update && apt install -y nginx. MariaDB также устанавливается одной командой: sudo apt install -y mariadb-server && apt install -y mariadb-client. Ещё нам понадобиться unzip — sudo apt-get install unzip.
Теперь преднастроим нашу базу данных командой sudo mysql_secure_installation. В процессе настройки нужно будет ответить на вопросы конфигуратора MariaDB. Ответить на вопросы конфигуратора можно так:
If you've just installed MariaDB, and haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none): PRESS ENTER
Change the root password? [Y/n] n
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
Протестируем соединение с SQL-сервером командой sudo mysql -u root -p. Если на предыдущем шаге вы задавали пароль — введите его, если нет — вход в SQL будет автоматическим:
Для выхода из SQL введите команды quit. Теперь, можно обновить PHP и все необходимые к нему библиотеки. Для этого нужно сначала добавить новый репозиторий, из которого можно будет обновить PHP: sudo apt-get install -y software-properties-common && sudo add-apt-repository ppa:ondrej/php && sudo apt update .
После обновления репозиториев, можно скачать все необходимые PHP-библиотеки:
sudo apt install -y php7.4-fpm php7.4-imagick php7.4-common php7.4-mysql php7.4-gmp php7.4-imap php7.4-json php7.4-pgsql php7.4-ssh2 php7.4-sqlite3 php7.4-ldap php7.4-curl php7.4-intl php7.4-mbstring php7.4-xmlrpc php7.4-gd php7.4-xml php7.4-cli php7.4-zip
Теперь, нам нужно кое-что настроить в конфигурационном файле php7.4-mfp. Откройте файл /etc/php/7.4/fpm/php.ini удобным для вас редакторе и задайте параметры в соответствии с указанным ниже списком:
file_uploads = On
allow_url_fopen = On
short_open_tag = On
memory_limit = 256M
upload_max_filesize = 100M
max_execution_time = 360
После сохранения настроек php-fpm можно переходить к созданию БД для owncloud.
Создание БД для owncloud
Для создания БД — войдите в СУБД командой sudo mysql -u root -p, после воспользуйтесь следующей серией SQL-команд:
CREATE DATABASE owncloud; #Создать ЮД owncloud
CREATE USER 'ownclouduser'@'localhost' IDENTIFIED BY 'new_password_here'; # Создание пользователя ownclouduser с паролем …
GRANT ALL ON owncloud.* TO 'ownclouduser'@'localhost' WITH GRANT OPTION; # Дать все права на БД owncloud пользователю ownclouduser.
FLUSH PRIVILEGES; #Применить изменения
EXIT; #Выйти из SQL
Хорошо, теперь мы настроили БД, можно устанавливать Owncloud и настраивать Nginx.
Установка ownCloud
Скачивать ownCloud мы будет с официального репозитория с помощью команды wget в директорию /var/www/. Для этого перейдём в директорию командой cd /var/www/ и скачаем последнюю версию ownCloud с помощью команды wget https://download.owncloud.com/server/stable/owncloud-complete-latest.zip -P /tmp.
Разархивируем архив командой sudo unzip /tmp/owncloud-complete-20210721.zip -d ./. Теперь чтобы Nginx имел доступ к ownCloud — нужно навесить нужные права доступа и запуска:
sudo chown -R www-data:www-data /var/www/owncloud/
sudo chmod -R 755 /var/www/owncloud/
Хорошо, у нас всё готово для конфигурации Nginx.
Настройка Nginx
Создадим с помощью VIM конфигурационный файл для ownCloud — vim /etc/nginx/sites-available/owncloud.conf и внесем в него следующие данные:
upstream php-handler {
server unix:/var/run/php/php7.4-fpm.sock;
}
server {
listen 80;
listen [::]:80;
root /var/www;
index index.php index.html index.htm;
server_name example.com; # Указать нужно IP-адрес сервера
location ^~ /owncloud {
client_max_body_size 512M;
fastcgi_buffers 8 4K;
fastcgi_ignore_headers X-Accel-Buffering;
gzip off;
error_page 403 /owncloud/core/templates/403.php;
error_page 404 /owncloud/core/templates/404.php;
location /owncloud {
rewrite ^ /owncloud/index.php$uri;
}
location ~ ^/owncloud/(?:build|tests|config|lib|3rdparty|templates|changelog|data)/ {
return 404;
}
location ~ ^/owncloud/(?:\.|autotest|occ|issue|indie|db_|console|core/skeleton/) {
return 404;
}
location ~ ^/owncloud/core/signature\.json {
return 404;
}
location ~ ^/owncloud/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|oc[sm]-provider/.+|core/templates/40[34])\.php(?:$|/) {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param modHeadersAvailable true;
fastcgi_read_timeout 180;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}
location ~ ^/owncloud/(?:updater|oc[sm]-provider)(?:$|/) {
try_files $uri $uri/ =404;
index index.php;
}
# Adding the cache control header for js and css files
# Make sure it is BELOW the PHP block
location ~ /owncloud/.*\.(?:css|js) {
try_files $uri /owncloud/index.php$uri$is_args$args;
add_header Cache-Control "max-age=15778463" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Robots-Tag "none" always;
add_header X-Download-Options "noopen" always;
add_header X-Permitted-Cross-Domain-Policies "none" always;
access_log off;
}
location ~ /owncloud/.*\.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg|map|json) {
try_files $uri /owncloud/index.php$uri$is_args$args;
add_header Cache-Control "public, max-age=7200" always;
access_log off;
}
}
}
Сохраним файл, создадим симлинку командой sudo ln -s /etc/nginx/sites-available/owncloud.conf /etc/nginx/sites-enabled/ и перезапустим Nginx, чтобы применились изменения: sudo systemctl restart nginx.service. Перейдём по адресу в браузере http://[VPS-IP]/owncloud/ и убедимся, что ownCloud работает:
На этом установка последней версии owncloud в связке с Nginx и MariaDB на VPS под управлением ubuntu 18/20 окончена.