Установка ownCloud в Ubuntu Linux с Nginx

ownCloud — это автономная платформа для синхронизации и обмена файлами с открытым исходным кодом, аналогичная Dropbox, OneDrive и другим проприетарным сервисам онлайн-хранилища. ownCloud позволяет использовать частные облачные сервисы на собственных серверах пользователей. Его можно расширить с помощью приложения, которое можно установить на мобильных и настольных компьютерах для доступа и синхронизации ваших файлов, контактов и данных на всех устройствах и платформах.

Если вы ищете платформу для автономного обмена файлами и синхронизации, ownCloud станет хорошим местом для начала. Мы покажем вам, как установить и настроить ownCloud на вашем собственном сервере Ubuntu со ссылкой на сообщение Let’s Encrypt SSL.

Чтобы начать установку и настройку ownCloud в Ubuntu Linux, выполните следующие действия.

Как установить Nginx в Ubuntu Linux

Как было сказано ранее, мы собираемся использовать веб-сервер Nginx для запуска ownCloud. ownCloud для работы требуется веб-сервер, а Nginx — самый популярный веб-сервер с открытым исходным кодом, доступный сегодня.

Чтобы установить Nginx в Ubuntu, выполните следующие команды:

sudo apt update
sudo apt install nginx

После установки Nginx приведенные ниже команды можно использовать для остановки, запуска и включения служб Nginx, чтобы они всегда запускались при каждом запуске вашего сервера.

sudo systemctl stop nginx.service
sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Чтобы проверить, установлен ли и работает ли Nginx, откройте свой веб-браузер и перейдите к IP-адресу или имени хоста сервера.

http://localhost

Если вы видите указанную выше страницу в своем браузере, значит, Nginx работает должным образом.

Как установить MariaDB в Ubuntu Linux

Для работы ownCloud требуется сервер базы данных. ownCloud хранит свой контент в базе данных, и MariaDB, вероятно, является лучшим сервером баз данных, доступным для запуска ownCloud.

MariaDB — это быстрый, безопасный сервер по умолчанию почти для всех серверов Linux. Чтобы установить MariaDB, выполните следующие команды:

sudo apt install mariadb-server
sudo apt install mariadb-client

После установки MariaDB приведенные ниже команды можно использовать для остановки, запуска и включения служб MariaDB, чтобы они всегда запускались при загрузке сервера.

sudo systemctl stop mariadb.service
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service

Затем выполните приведенные ниже команды, чтобы защитить сервер базы данных паролем root, если вам не было предложено сделать это во время установки.

sudo mysql_secure_installation

При появлении запроса воспользуйтесь приведенным ниже руководством, чтобы ответить:

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

Switch to unix_socket authentication [Y/n] n

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

All done!

Чтобы проверить и убедиться, что MariaDB установлен и работает, войдите в консоль базы данных, используя следующие команды:

sudo mysql -u root -p

Вы должны автоматически войти на сервер базы данных, поскольку мы инициировали запрос на вход как root. Только root может войти без пароля и только с консоли сервера.

Если вы видите экран, похожий на показанный выше, значит, сервер успешно установлен.

Как установить PHP в Ubuntu Linux

Кроме того, для запуска ownCloud требуется PHP. Пакеты PHP добавляются в репозитории Ubuntu. Версии репозиториев могут быть не самыми последними. Если вам нужно установить последние версии, вам нужно будет добавить сторонний репозиторий PPA.

В сторонний репозиторий с последними версиями PHP выполните следующие команды.

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php

На момент написания последней версии PHP 8.0.

sudo apt update

Затем выполните приведенные ниже команды, чтобы установить PHP 8.0 и связанные модули.

sudo apt install 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

Затем вы захотите изменить некоторые настройки конфигурации PHP, которые отлично работают с ownCloud. Выполните следующие команды, чтобы открыть файл конфигурации PHP по умолчанию.

sudo nano /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
date.timezone = America/Chicago

Как создать базу данных ownCloud в Ubuntu

На этом этапе мы готовы создать базу данных ownCloud. Как упоминалось выше, ownCloud использует базы данных для хранения своего контента.

Чтобы создать базу данных для ownCloud, выполните следующие команды:

sudo mysql -u root -p

Затем создайте базу данных под названием owncloud

CREATE DATABASE owncloud;

Создайте пользователя базы данных с именем ownclouduser и установите пароль

CREATE USER 'ownclouduser'@'localhost' IDENTIFIED BY 'new_password_here';

После этого предоставьте пользователю полный доступ к базе данных.

GRANT ALL ON owncloud.* TO 'ownclouduser'@'localhost' WITH GRANT OPTION;

Наконец, сохраните изменения и выйдите.

FLUSH PRIVILEGES;
EXIT;

Как скачать ownCloud на Ubuntu

Мы готовы загрузить ownCloud и приступить к его настройке. Сначала выполните приведенные ниже команды, чтобы загрузить последнюю версию ownCloud из его репозитория.

Затем извлеките загруженный контент в корневой каталог Nginx. Это создаст папку с именем owncloud.

wget https://download.owncloud.org/community/owncloud-complete-20210721.zip -P /tmp
sudo unzip /tmp/owncloud-complete-20210721.zip -d /var/www

Выполните команду ниже, чтобы разрешить пользователю www-data владеть новым каталогом owncloud.

sudo chown -R www-data:www-data /var/www/owncloud/
sudo chmod -R 755 /var/www/owncloud/

Как настроить Nginx для ownCloud

Мы загрузили содержимое ownCloud в новую папку, которую мы назвали ownCloud. Теперь давайте настроим Nginx для создания нового серверного блока для использования с нашим сайтом ownCloud. Вы можете создать столько серверных блоков с помощью Nginx.

Для этого выполните приведенные ниже команды, чтобы создать новый файл конфигурации с именем owncloud.conf в каталоге / etc / nginx / sites-available / для размещения нашего блока сервера ownCloud.

sudo nano /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;


  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;
        }
    }
}

Сохраните файл и выйдите.

После сохранения файла, приведенного выше, выполните приведенные ниже команды, чтобы включить новый файл, содержащий наш серверный блок ownCloud, а также другие важные модули Nginx.

После этого перезапустите Nginx.

sudo ln -s /etc/nginx/sites-available/owncloud.conf /etc/nginx/sites-enabled/

Перезагрузите Nginx, когда закончите настройку, указанную выше.

sudo systemctl restart nginx.service

Теперь, когда ownCloud загружен и необходимые службы настроены, откройте браузер и запустите установку ownCloud, посетив доменное имя или IP-адрес вашего сервера, а затем / owncloud:

http://example.com/owncloud

Однако мы хотим убедиться, что наш сервер защищен бесплатными SSL-сертификатами Let’s Encrypt. Итак, продолжите ниже, чтобы узнать, как сгенерировать SSL-сертификат Let’s Encrypt для веб-сайтов.

Как настроить Let’s Encrypt для ownCloud

Если вам удалось сгенерировать сертификат Let’s Encrypt SSL, вам следует повторно открыть блок сервера для нашего веб-сайта ownCloud, выполнив следующие команды.

sudo nano /etc/nginx/sites-available/owncloud.conf

Новые конфигурации блоков сервера ownCloud должны выглядеть примерно так, как показано в строке ниже. Запишите выделенные строки.

  • Первый блок сервера прослушивает порт 80. Он содержит перенаправление 301 для перенаправления HTTP на HTTPS.
  • Второй серверный блок прослушивает порт 443. Он содержит перенаправление 301 для перенаправления www на домен без www.
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 www.example.com;

    include snippets/well-known.conf;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    root /var/www;
    index  index.php index.html index.htm;
    server_name www.example.com;
   
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

    add_header Strict-Transport-Security "max-age=31536000;  includeSubDomains";
    
    include snippets/well-known.conf;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    root /var/www;
    index  index.php index.html index.htm;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:50m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;

    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 30s;

    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    add_header Strict-Transport-Security "max-age=31536000;  includeSubDomains";


 location / {
        return 301 https://$server_name:443$request_uri;
    }

  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 HTTPS on;
            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;
        }
    }
}

Сохраните файл выше, затем перезапустите Nginx и PHP, используя приведенные ниже команды.

sudo systemctl reload nginx

Наконец, если все пойдет по плану, вы сможете запустить мастер настройки ownCloud, перейдя к имени хоста сервера или IP-адресу через HTTPS.

https://example.com/owncloud

Должен появиться мастер установки ownCloud. Следуйте указаниям мастера, чтобы завершить настройку.

  • Создайте учетную запись администратора и пароль
  • Оставьте папку данных по умолчанию
  • Выберите MySQL / MariaDB
  • Введите имя пользователя базы данных
  • Введите пароль пользователя базы данных
  • Введите имя базы данных
  • Оставьте узел базы данных в качестве локального, если ownCloud и сервер базы данных находятся на одном узле.

Нажмите Завершить настройку.

Дождитесь завершения настройки. Затем войдите в систему и начните настройку своей среды.

Это должно сработать!

Поделитесь с друзьями

Добавить комментарий

0 комментариев
Новіші
Старіші Найпопулярніші
Вбудовані Відгуки
Переглянути всі коментарі
0
Ми любимо ваші думки, будь ласка, прокоментуйте.x