Pesquisa de site

Instale e configure o ownCloud 9.1.4 no openSUSE Leap 42.2


Introdução

ownCloud é um software de código aberto para sincronização e compartilhamento de arquivos, assim como o Dropbox. Apenas colocando os arquivos em um diretório compartilhado local, esses arquivos serão imediatamente sincronizados com o servidor e com outros dispositivos usando o ownCloud Desktop Sync Client, aplicativo Android ou aplicativo iOS.

Este tutorial explica como instalar e configurar o lado do servidor do ownCloud no openSUSE 42.2.

Começando

Primeiro de tudo, instale o SuSEfirewall2. Este é um script que gera regras de iptables a partir de configurações armazenadas em

/etc/sysconfig/SuSEfirewall2

. Instale-o com zypper:

zypper in SuSEfirewall2

Há também um módulo de configuração do YaST, mas ele não permite definir todas as configurações do firewall, portanto é necessário editar manualmente o arquivo de configuração:

$EDITOR /etc/sysconfig/SuSEfirewall2

Lá dentro, procure

FW_SERVICES_EXT_TCP

linha e altere como segue:

FW_SERVICES_EXT_TCP="22 80 443"

São elas: portas ssh, http e https.
Salvar e sair.

Em seguida, inicie-o e ative-o para iniciar no momento da inicialização:

systemctl start SuSEfirewall2
systemctl enable SuSEfirewall2

Reiniciar

sshd

:

systemctl restart sshd

Instale o NGINX

O NGINX também está disponível nos repositórios do openSUSE, então:

zypper in nginx

Inicie e ative-o:

systemct start nginx
systemctl enable nginx

Instalando MariaDB

Quanto ao NGINX, o MariaDB também está disponível como pacote openSUSE, então:

zypper in mariadb mariadb-client

Próximo :

systemctl start mysqld
systemctl enable mysqld

Configure sua conta root:

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

Agora é possível fazer login no shell MariaDB e criar um novo banco de dados e usuário que será usado para ownCloud:

mysql -u root -p

No shell do sistema de banco de dados:

mysql> CREATE DATABASE myownclouddb;
mysql> CREATE USER 'ocuser'@'localhost' IDENTIFIED BY 'user_strong_password';
mysql> GRANT ALL PRIVILEGES ON 'myownclouddb.*' TO 'ocuser'@'localhost' IDENTIFIED BY 'user_strong_password';
mysql> FLUSH PRIVILEGES;
mysql> EXIT;

Agora o MariaDB está configurado corretamente para ownCloud.

Instale PHP-FPM

ownCloud requer PHP 5.4+. Instale o PHP-FPM, que é uma alternativa FastCGI útil ao lidar com sites com muitos visitantes. Neste guia usaremos PHP7.
Através do Zypper:

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

A seguir, copie o arquivo de configuração padrão do php-fpm, executando os seguintes comandos:

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

Abra esse arquivo com um editor de texto:

$EDITOR php-fpm.conf

Lá, procure (e modifique conforme a seguir) as seguintes linhas:

error_log = log/php-fpm.log
user = nginx
group = nginx
listen = /var/run/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Salve e saia.
Agora, modifique

php.ini

:

$EDITOR /etc/php7/cli/php.ini

Remova o comentário da linha 761 e altere seu valor:

cgi.fix_pathinfo=0

Salve, saia e copie este arquivo para

conf.d

:

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

O diretório de sessão do PHP7 é

/var/lib/php7

. Mude seu proprietário para usuário nginx:

chown -R nginx:nginx /var/lib/php7/
Configure o NGINX para funcionar com PHP-FPM

Crie um novo arquivo de configuração NGINX, fazendo um backup do antigo:

cd /etc/nginx
cp nginx.conf nginx.conf.bk
$EDITOR nginx.conf

Na linha 65, adicione a seguinte configuração:

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

Salve, saia e teste o nginx:

nginx -t

Você deve ler as seguintes linhas:

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

No final:

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

Instale o ownCloud

Vá para o diretório raiz da web, que é

/srv/www

, e faça o download do ownCloud:

wget https://download.owncloud.org/community/owncloud-9.1.4.tar.bz2

Extraia o arquivo:

tar xf owncloud-9.1.4.tar.bz2

No

owncloud

pasta extraída, crie um novo diretório de dados e altere seu proprietário para o usuário nginx:

mkdir owncloud/data
chown -R nginx:nginx owncloud/
Configure um host virtual para ownCloud

A próxima etapa é configurar um Host Virtual no NGINX para ownCloud.

mkdir /etc/nginx/vhosts.d && cd /etc/nginx/vhosts.d

Lá, crie um novo arquivo:

$EDITOR owncloud.conf

Cole o seguinte conteúdo nesse arquivo:

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

server {
  listen 80; # If you have a SSL certificate (Recommended), change this line with "listen 443 ssl;" and add certificate lines;
  server_name storage.mydomain.com;

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

Salve, saia e reinicie os serviços:

systemctl restart nginx
systemctl restart php-fpm
systemctl restart mysql

Conclusões

O lado do servidor agora está bem configurado. O último passo é ir com um navegador web para: http://storage.mydomain.com e finalizar uma configuração gráfica. Ao final deste processo seu ownCloud Dashboard estará totalmente disponível!