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

Как установить ownCloud 9 с Nginx на OpenSUSE Leap 42.1


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

  1. Шаг 1. Установите SuSEfirewall2
  2. Шаг 2. Установите Nginx
  3. Шаг 3. Установите и настройте MariaDB
  4. Шаг 4. Установка и настройка PHP-FPM
  5. Шаг 5. Создание сертификата SSL
  6. Шаг 6. Установите и настройте ownCloud

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

В этом руководстве я покажу вам, как создать собственную серверную платформу синхронизации и совместного использования с ownCloud. Мы установим ownCloud с Nginx в качестве веб-сервера, MariaDB (форк MySQL) в качестве базы данных и php-fpm для обработки запроса php в Linux OpenSUSE Leap 42.1.

Предпосылка

  • Переход OpenSUSE 42.1
  • Привилегии root
  • Знакомство с командой zypper

Шаг 1 — Установите SuSEfirewall2

SuSEfirewall — это сценарий брандмауэра, который хранит свою конфигурацию в файле \/etc/sysconfig/SuSEfirewall2\. С SuSEfirewall2 вы можете открывать порты, редактируя файл SuSEfirewall2.

Установите SuSEfirewall2 с помощью команды zypper:

zypper in SuSEfirewall2

Когда брандмауэр установлен, перейдите в каталог sysconfig и отредактируйте конфигурацию SuSEfirewall2 с помощью vim:

cd /etc/sysconfig/
vim SuSEfirewall2

Перейдите к строке 253 и добавьте порты всех служб, которые вы хотите использовать. На этом этапе я добавлю порты: ssh, http и https.

FW_SERVICES_EXT_TCP="22 80 443"

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

Затем запустите SuSEfirewall2 и включите его во время загрузки:

systemctl start SuSEfirewall2
systemctl enable SuSEfirewall2

Теперь перезапустите службу sshd:

systemctl restart sshd

Если вы хотите проверить порт SSH-сервера, вы можете использовать команду telnet для подключения к порту 22:

telnet 192.168.1.101 22

Шаг 2 — Установите Nginx

Nginx – это легкий веб-сервер с низким потреблением памяти и ЦП. Мы будем использовать nginx в качестве веб-сервера для установки ownCloud.

Установите nginx с помощью команды zypper:

zypper in nginx

Запустите nginx и включите его при загрузке с помощью команды systemctl:

systemctl start nginx
systemctl enable nginx

Затем добавьте файл index.html, чтобы проверить, работает ли nginx.

echo "This is Nginx Page OpenSUSE Leap" > /srv/www/htdocs/index.html

Теперь вы можете получить доступ к веб-серверу nginx из своего веб-браузера или проверить это с помощью curl:

curl -I 192.168.1.101
curl 192.168.1.101

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

MariaDB — это ответвление базы данных MySQL на основе RDBMS с открытым исходным кодом. На этом этапе мы установим и настроим MariaDB. Затем мы создадим нового пользователя и базу данных для установки ownCloud.

Установите MariaDB с помощью команды zypper ниже:

zypper in mariadb mariadb-client

Теперь запустите MariaDB и добавьте ее в автозагрузку системы:

systemctl start mysql
systemctl enable mysql

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

mysql_secure_installation

Установите пароль для MariaDB/MySQL:

Enter current password for root (enter for none): PRESS ENTER
Set root password? [Y/n] Y
New password: TYPE YOUR PASSWORD
Re-enter new password: REPEAT PASSWORD
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Reload privilege tables now? [Y/n] Y

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

Войдите в оболочку MariaDB/MySQL:

mysql -u root -p
TYPE your password

Создайте новую базу данных \owncloud_db\ и нового пользователя \ownclouduser\ с паролем \[email \:

create database owncloud_db;
create user ';
flush privileges;
exit

Создана база данных для установки ownCloud.

Шаг 4 — Установите и настройте PHP-FPM

PHP-FPM (FastCGI Process Manager) — современная альтернатива FastCGI для обработки сайтов с большим количеством посетителей. PHP-FPM имеет расширенное управление процессами и прост в управлении и настройке.

На этом этапе мы установим php-fpm и некоторые расширения PHP, а затем настроим веб-сервер nginx для обработки запросов php-файлов через php-fpm.

Установите php-fpm с помощью этой команды «zypper in»:

zypper in php5-fpm php5-gd php5-mcrypt php5-mysql php5-pear php5-zip php5-curl php5-ldap php5-json

Когда установка будет завершена, перейдите в каталог php-fpm и скопируйте файл конфигурации по умолчанию:

cd /etc/php5/fpm/
cp php-fpm.conf.default php-fpm.conf

Отредактируйте файл php-fpm.conf с помощью редактора vim или nano:

vim php-fpm.conf

Раскомментируйте строку 32, чтобы включить журнал php-fpm. Если позже в ваших сценариях PHP возникнет ошибка, вы можете найти файл журнала в каталоге \/var/log/\.

error_log = log/php-fpm.log

Измените строку 148 - 149 на «nginx» для пользователя/группы процессов unix.

user = nginx
group = nginx

Измените значение в строке 159, чтобы запустить php-fpm с файлом сокета.

listen = /var/run/php-fpm.sock

Раскомментируйте и измените значение в строках 170–172, чтобы установить разрешения для сокета unix.

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

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

Затем отредактируйте файл php.ini в каталоге cli:

cd /etc/php5/cli/
vim php.ini

Раскомментируйте и измените значение в строке 758:

cgi.fix_pathinfo=0

Сохранить и выйти.

Скопируйте файл php.ini в каталог conf.d:

cp php.ini /etc/php5/conf.d/

Теперь настройте путь обработчика сеанса php. В этом руководстве мы запускаем php-fpm от имени пользователя nginx, поэтому убедитесь, что пользователь nginx может писать в каталог сеансов. Вы можете увидеть конфигурацию пути сеанса в файле php.ini в строке 1390.

session.save_path = "/var/lib/php5"

Измените владельца каталога сеанса \/var/lib/php5/\, сделайте пользователя nginx владельцем каталога:

chown -R nginx:nginx /var/lib/php5/

Затем настройте php-fpm для работы с веб-сервером nginx. Перейдите в каталог конфигурации nginx и создайте резервную копию файла nginx.conf, прежде чем редактировать конфигурацию.

cd /etc/nginx/
cp nginx.conf nginx.conf.backup
vim nginx.conf

Добавьте следующую новую конфигурацию в строку 65 — эта конфигурация будет обрабатывать все запросы файлов PHP.

       location ~ \.php$ {
                root /srv/www/htdocs;
                try_files $uri =404;
                include /etc/nginx/fastcgi_params;
                fastcgi_pass unix:/var/run/php-fpm.sock;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       }

Сохраните и выйдите, а затем протестируйте конфигурацию nginx, чтобы убедиться в отсутствии ошибок в конфигурации:

nginx -t

Если ошибки нет, вы можете увидеть результаты ниже:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

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

systemctl start php-fpm
systemctl enable php-fpm
systemctl restart nginx

Nginx и php-fpm настроены, вы можете протестировать файл php, создав новый файл phpinfo() в корневом каталоге веб-сайта:

cd /srv/www/htdocs/
echo "<?php phpinfo(); ?>" > info.php

Откройте браузер и перейдите на IP-адрес сервера:

или вы можете использовать завиток:

curl -I 192.168.1.101/info.php

Шаг 5 — Генерация SSL-сертификата

Запуск ownCloud через защищенное https-соединение очень важен для обеспечения безопасности и конфиденциальности ваших файлов. Если вы используете ownCloud в своей компании, вы можете купить SSL-сертификат или, если вам нужен бесплатный SSL-сертификат, вы можете использовать Lets-encrypt. Здесь я создам так называемый «самозаверяющий» SSL-сертификат, шифрование самозаверяющего сертификата не ниже, чем у официального сертификата, но вам придется принять предупреждение безопасности в вашем браузере при доступе к сервису первый раз.

Создайте новый каталог \ssl\ и сгенерируйте сертификат с помощью команды openssl:

cd /etc/nginx/
mkdir ssl; cd ssl/
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/example-owncloud.crt -keyout /etc/nginx/ssl/example-owncloud.key

Затем измените разрешения ключа:

chmod 600 example-owncloud.key

Шаг 6 — Установите и настройте ownCloud

На этом этапе мы установим ownCloud и настроим новый виртуальный хост nginx для домена ownCloud. Мы установим owncloud с доменным именем \example-owncloud.co\ и корневым веб-файлом в каталоге \/srv/www/owncloud/\.

Скачать ownCloud

Перейдите в каталог \/srv/www/\, загрузите исходный код ownCloud и распакуйте его:

cd /srv/www/
wget https://download.owncloud.org/community/owncloud-9.0.2.zip
unzip owncloud-9.0.2.zip

Теперь создайте новый каталог данных в каталоге owncloud для хранения всех пользовательских данных. Измените владельца каталога ownCloud на пользователя nginx:

mkdir -p owncloud/data/
chown -R nginx:nginx owncloud/

Настройте виртуальный хост Nginx для ownCloud

Перейдите в каталог nginx и создайте новый каталог для конфигурации файла виртуального хоста:

cd /etc/nginx/
mkdir vhosts.d/

Перейдите в каталог vhosts.d и создайте новый файл виртуального хоста для owncloud \example-owncloud.conf\.

cd vhosts.d/
vim example-owncloud.conf

вставьте конфигурацию ниже:

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

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

server {
  listen 443 ssl;
  server_name example-owncloud.co;

  ssl_certificate /etc/nginx/ssl/example-owncloud.crt;
  ssl_certificate_key /etc/nginx/ssl/example-owncloud.key;

  # Path to the root of your installation
  root /srv/www/owncloud/;
  # set max upload size
  client_max_body_size 10G;
  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;

  rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
  rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
  rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;

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

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

  location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README){
    deny all;
  }

  location / {
    # The following 2 rules are only needed with webfinger
    rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
    rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

    rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
    rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;

    rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;

    try_files $uri $uri/ =404;
  }

  location ~ \.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_pass php-handler;
    fastcgi_intercept_errors on;
  }

  # Adding the cache control header for js and css files
  # Make sure it is BELOW the location ~ \.php(?:$|/) { block
  location ~* \.(?:css|js)$ {
    add_header Cache-Control "public, max-age=7200";
    # Add headers to serve security related headers
    add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
    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;
    # Optional: Don't log access to assets
    access_log off;
  }

  # Optional: Don't log access to other assets
  location ~* \.(?:jpg|jpeg|gif|bmp|ico|png|swf)$ {
    access_log off;
  }
}

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

Протестируйте конфигурацию nginx и не забудьте перезапустить все службы:

nginx -t
systemctl restart nginx
systemctl restart php-fpm
systemctl restart mysql

Тестирование

Посетите домен owncloud:

пример-owncloud.co

Вы будете перенаправлены на соединение https.

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

Подождите секунду, и вы увидите файловый менеджер owncloud:

Установка ownCloud с nginx и MariaDB на OpenSUSE Leap 42.1 завершена.

использованная литература

  • https://linux-console.net/tutorial/how-to-install-owncloud-8-with-nginx-and-mariadb-on-centos-7/