Поиск по сайту:

Как установить ownCloud 9.1 с Nginx и MariaDB на CentOS 7


Это руководство существует для этих версий ОС

  • CentOS 7.3
  • CentOS 7

На этой странице

  1. Предпосылки
  2. Шаг 1. Установите Nginx и PHP7-FPM
  3. Шаг 2. Настройка PHP7-FPM
  4. Шаг 3. Установите и настройте MariaDB
  5. Шаг 4. Создание самозаверяющего сертификата SSL
  6. Шаг 5. Загрузите OwnCloud
  7. Шаг 6. Настройка виртуального хоста OwnCloud в Nginx
  8. Шаг 7. Настройка SELinux и FirewallD
  9. Шаг 8. Мастер установки OwnCloud
  10. Справочник

OwnCloud — это серверное программное обеспечение для синхронизации данных и обмена файлами с простым в использовании веб-интерфейсом, доступное по лицензии с открытым исходным кодом. OwnCloud может быть установлен на веб-сервере Linux или Windows, его легко настроить и он имеет исчерпывающую онлайн-документацию. Собственный клиент доступен для Windows, MacOS и Linux (настольное приложение). Также есть мобильное приложение для Android и iOS.

В этом руководстве я расскажу вам, как установить и настроить ownCloud 9.1 на сервере CentOS 7. Я покажу вам, как настроить ownCloud с Nginx и PHP 7 (как FPM) и MariaDB в качестве системы базы данных.

Предпосылки

  • Сервер CentOS 7
  • Привилегии root

Шаг 1 — Установите Nginx и PHP7-FPM

Прежде чем мы начнем с установки Nginx и php7-fpm, мы должны добавить репозиторий EPEL, который содержит дополнительное программное обеспечение, недоступное в базовом репозитории CentOS. Установите EPEL с помощью этой команды yum.

yum -y install epel-release

Теперь установите Nginx из репозитория Epel.

yum -y install nginx

Теперь нам нужно добавить еще один репозиторий для php7-fpm. В сети доступно несколько репозиториев для PHP 7, здесь я буду использовать репозиторий webtatic.

Добавьте репозиторий webtatic:

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Затем установите PHP7-FPM с некоторыми дополнительными пакетами для установки ownCloud.

yum -y install php70w-fpm php70w-cli php70w-gd php70w-mcrypt php70w-mysql php70w-pear php70w-xml php70w-mbstring php70w-pdo php70w-json

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

php -v

Шаг 2 — Настройте PHP7-FPM

На этом этапе мы настроим php-fpm для работы с nginx. Php7-fpm будет работать под пользователем nginx и прослушивать порт 9000.

Отредактируйте конфигурацию php7-fpm по умолчанию с помощью vim.

vim /etc/php-fpm.d/www.conf

В строке 8 и 10 измените пользователя и группу на nginx.

user = nginx
group = nginx

В строке 22 убедитесь, что php-fpm работает на порту сервера 9000.

listen = 127.0.0.1:9000

Раскомментируйте строки 366-370 для переменных системной среды php-fpm.

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

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

Затем создайте новый каталог для пути сеанса в каталоге /var/lib/ и измените владельца на пользователя nginx.

mkdir -p /var/lib/php/session
chown nginx:nginx -R /var/lib/php/session/

Запустите php-fpm и nginx, затем добавьте их для запуска при загрузке.

sudo systemctl start php-fpm
sudo systemctl start nginx

sudo systemctl enable php-fpm
sudo systemctl enable nginx

Настройка PHP7-FPM завершена.

Шаг 3 — Установите и настройте MariaDB

OwnCloud поддерживает базы данных PostgreSQL и MySQL, в этом руководстве мы будем использовать MariaDB для базы данных ownCloud. Установите пакет mariadb-server из репозитория CentOS с помощью команды yum.

yum -y install mariadb mariadb-server

Запустите службу MariaDB и настройте корневой пароль MariaDB.

systemctl start mariadb
mysql_secure_installation

Введите пароль root по запросу.

Set root password? [Y/n] Y
New password:
Re-enter new password:

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

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

Мы создадим новую базу данных owncloud_db под пользователем ownclouduser с паролем [email . Пожалуйста, выберите другой безопасный пароль для установки!

mysql -u root -p
Type Password

Введите запрос MySQL ниже, чтобы создать новую базу данных и нового пользователя.

create database owncloud_db;
create user ';
flush privileges;

Создана база данных owncloud_db с пользователем ownclouduser.

Шаг 4. Создайте самозаверяющий SSL-сертификат.

В этом руководстве мы запустим owncloud под https-соединением для клиента. Вы можете использовать бесплатный сертификат SSL, например, позволяет шифровать. В этом руководстве я создам свой собственный файл сертификата SSL с помощью команды OpenSSL.

Создайте новый каталог для файла SSL.

mkdir -p /etc/nginx/cert/

Затем сгенерируйте новый файл сертификата SSL с помощью команды OpenSSL ниже.

openssl req -new -x509 -days 365 -nodes -out /etc/nginx/cert/owncloud.crt -keyout /etc/nginx/cert/owncloud.key

Введите данные для SSL-сертификата в соответствии с запросом команды OpenSSL. Затем измените разрешение всех файлов сертификатов на 600 с помощью chmod.

chmod 600 /etc/nginx/cert/*

Шаг 5 — Скачайте OwnCloud

Мы загрузим ownCloud с помощью команды wget, поэтому сначала нам нужно установить пакет wget. Кроме того, нам нужен пакет unzip.

yum -y install wget unzip

Перейдите в каталог tmp и загрузите последнюю стабильную версию ownCloud 9.1 с сайта ownCloud с помощью wget.

cd /tmp
wget https://download.owncloud.org/community/owncloud-9.1.2.zip

Извлеките zip-файл ownCloud и переместите его в каталог /usr/share/nginx/html/.

unzip owncloud-9.1.2.zip
mv owncloud/ /usr/share/nginx/html/

Затем перейдите в корневой веб-каталог nginx и создайте новый каталог данных для owncloud.

cd /usr/share/nginx/html/
mkdir -p owncloud/data/

Измените владельца каталога owncloud на пользователя и группу nginx.

chown nginx:nginx -R owncloud/

Шаг 6. Настройте виртуальный хост OwnCloud в Nginx.

На шаге 5 мы загрузили исходный код ownCloud и настроили его для работы под веб-сервером Nginx. Но нам еще нужно настроить виртуальный хост для ownCloud.

Создайте новый файл конфигурации виртуального хоста owncloud.conf в каталоге conf.d.

cd /etc/nginx/conf.d/
vim owncloud.conf

Вставьте конфигурацию виртуального хоста ownCloud ниже.

upstream php-handler {
    server 127.0.0.1:9000;
    #server unix:/var/run/php5-fpm.sock;
}

server {
    listen 80;
    server_name data.owncloud.co;
    # enforce https
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name data.owncloud.co;

    ssl_certificate /etc/nginx/cert/owncloud.crt;
    ssl_certificate_key /etc/nginx/cert/owncloud.key;

    # Add headers to serve security related headers
    # Before enabling Strict-Transport-Security headers please read into this topic first.
    add_header Strict-Transport-Security "max-age=15552000; includeSubDomains";
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;

    # Path to the root of your installation
    root /usr/share/nginx/html/owncloud/;

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    # The following 2 rules are only needed for the user_webfinger app.
    # Uncomment it if you're planning to use this app.
    #rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
    #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

    location = /.well-known/carddav {
        return 301 $scheme://$host/remote.php/dav;
    }
    location = /.well-known/caldav {
        return 301 $scheme://$host/remote.php/dav;
    }

    location /.well-known/acme-challenge { }

    # set max upload size
    client_max_body_size 512M;
    fastcgi_buffers 64 4K;

    # Disable gzip to avoid the removal of the ETag header
    gzip off;

    # Uncomment if your server is build with the ngx_pagespeed module
    # This module is currently not supported.
    #pagespeed off;

    error_page 403 /core/templates/403.php;
    error_page 404 /core/templates/404.php;

    location / {
        rewrite ^ /index.php$uri;
    }

    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
        return 404;
    }
    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
        return 404;
    }

    location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-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 PATH_INFO $fastcgi_path_info;
        fastcgi_param HTTPS on;
        fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
        fastcgi_param front_controller_active true;
        fastcgi_pass php-handler;
        fastcgi_intercept_errors on;
        fastcgi_request_buffering off;
    }

    location ~ ^/(?:updater|ocs-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 ~* \.(?:css|js)$ {
        try_files $uri /index.php$uri$is_args$args;
        add_header Cache-Control "public, max-age=7200";
        # Add headers to serve security related headers (It is intended to have those duplicated to the ones above)
        # Before enabling Strict-Transport-Security headers please read into this topic first.
        #add_header Strict-Transport-Security "max-age=15552000; includeSubDomains";
        add_header X-Content-Type-Options nosniff;
        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-XSS-Protection "1; mode=block";
        add_header X-Robots-Tag none;
        add_header X-Download-Options noopen;
        add_header X-Permitted-Cross-Domain-Policies none;
        # Optional: Don't log access to assets
        access_log off;
    }

    location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
        try_files $uri /index.php$uri$is_args$args;
        # Optional: Don't log access to other assets
        access_log off;
    }
}

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

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

nginx -t
systemctl restart nginx

Шаг 7 — Настройте SELinux и FirewallD

В этом руководстве мы оставим SELinux включенным в принудительном режиме, поэтому для его настройки нам понадобится пакет инструментов управления SELinux.

Установите инструменты управления SELinux с помощью этой команды yum.

yum -y install policycoreutils-python

Затем выполните приведенные ниже команды от имени пользователя root, чтобы позволить ownCloud работать под SELinux. Не забудьте изменить каталог ownCloud на случай, если вы используете другой каталог для установки ownCloud.

semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/data(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/config(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/apps(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/assets(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/.htaccess'
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/owncloud/.user.ini'

restorecon -Rv '/usr/share/nginx/html/owncloud/'

Затем включите службу firewalld и откройте порт HTTP и HTTPS для owncloud.

Запустите firewalld и настройте его так, чтобы он запускался во время загрузки.

systemctl start firewalld
systemctl enable firewalld

Откройте порты HTTP и HTTPS с помощью команды firewall-cmd, затем перезагрузите брандмауэр.

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

Часть настройки сервера завершена.

Шаг 8. Мастер установки OwnCloud

Теперь откройте веб-браузер и введите доменное имя ownCloud в поле URL, мое: data.owncloud.co, и вы будете перенаправлены на безопасное соединение HTTPS.

Введите новое имя пользователя и пароль администратора, затем введите учетные данные базы данных и нажмите «Завершить настройку».

Файловый менеджер панели администратора.

Пользовательские настройки.

Настройки администратора.

Owncloud был успешно установлен с Nginx, PHP7-FPM и MariaDB на сервере CentOS 7.

Ссылка

  • https://doc.owncloud.org/