Како да инсталирате сопствен Cloud 9 со Nginx на OpenSUSE Leap 42.1


ownCloud е OpenSource апликација за споделување датотеки базирана на програмскиот јазик PHP. OwnCloud обезбедува синхронизирање и споделување на датотеки со самодомаќин, со убав веб-интерфејс и синхронизирање апликации за сите главни мобилни и десктоп платформи со функционално како dropbox, мега, итн. ownCloud го олеснува пристапот и синхронизирањето на датотеките, календарите и контактите низ вашиот уреди.

Во ова упатство, ќе ве упатам да креирате сопствена платформа за синхронизација и споделување на серверот со сопствениотCloud. Ќе инсталираме сопствен Cloud со Nginx како веб-сервер, MariaDB (вилушка MySQL) како база на податоци и php-fpm за да се справиме со барањето за php на Linux OpenSUSE Leap 42.1.

Предуслов

  • OpenSUSE Leap 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, можете да ја користите командата телнет за да се поврзете со портата 22:

telnet 192.168.1.101 22

Чекор 2 - Инсталирајте Nginx

Nginx е лесен веб-сервер со мала потрошувачка на меморија и процесор. Ќе користиме nginx како веб-сервер за нашата сопствена Cloud инсталација.

Инсталирајте 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 е вилушка базирана на OpenSource RDBMS на базата на податоци MySQL. Во овој чекор, ќе инсталираме и конфигурираме MariaDB. Потоа ќе создадеме нов корисник и база на податоци за сопствената Cloud инсталација.

Инсталирајте го 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 и да создадеме нова база на податоци и нов корисник за сопствениотCloud.

Пријавете се во школката MariaDB/MySQL:

mysql -u root -p
TYPE your password

Создајте нова база на податоци \owncloud_db\ и нов корисник \ownclouduser\ со лозинка \[email \:

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

Создадена е базата на податоци за сопствена Cloud инсталација.

Чекор 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() во root директориумот на веб:

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

Отворете го вашиот прелистувач и посетете ја IP-а на серверот:

или можете да користите кадрици:

curl -I 192.168.1.101/info.php

Чекор 5 - Генерирајте SSL сертификат

Работењето на сопствениот Cloud преку безбедна врска https е многу важно за вашите датотеки да бидат безбедни и приватни. Ако користите сопствен Cloud на вашата компанија, можете да го купите 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 - Инсталирајте и конфигурирајте својCloud

Во овој чекор, ќе инсталираме ownCloud и ќе конфигурираме нов виртуелен хост nginx за доменот ownCloud. Ќе инсталираме owncloud со име на домен \example-owncloud.co\, и веб-основна датотека во директориумот \/srv/www/owncloud/\.

Преземете својCloud

Одете во директориумот \/srv/www/\ и преземете го изворот сопствен Cloud и извлечете го:

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 за сопствениот Cloud

Одете во директориумот 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

Тестирање

Посетете го доменот на сопствен облак:

example-owncloud.co

Ќе бидете пренасочени кон врската https.

Следно, внесете ги администраторот и лозинката, името на базата на податоци, корисникот и лозинката и кликнете \Заврши го поставувањето\.

Почекајте малку и ќе го видите менаџерот на датотеки на сопствен облак:

Инсталирањето на ownCloud со nginx и MariaDB на OpenSUSE Leap 42.1 е завршено.

Референци

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