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!