Как установить ownCloud 9 с Nginx на OpenSUSE Leap 42.1
На этой странице
- Шаг 1. Установите SuSEfirewall2
- Шаг 2. Установите Nginx
- Шаг 3. Установите и настройте MariaDB
- Шаг 4. Установка и настройка PHP-FPM
- Шаг 5. Создание сертификата SSL
- Шаг 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/