(51) 2160.9170
  • Blog SOULinux

    Acompanhe Artigos, Notícias e nossos Casos de Sucesso.

Mostrando itens por marcador: Nextcloud

MariaDB é um SGBD (Sistema Gerenciador de Banco de Dados) que surgiu como fork do MySQL, criado pelo próprio fundador do projeto após sua respectiva aquisição pela Oracle.

As etapas aqui mostradas foram feitas em um computador com Ubuntu 20.04 instalado e com o MariaDB devidamente instalado e configurado.

 

Para executar os comandos abaixo, é necessário estar no terminal de sua distribuição Linux.

 

Login ao servidor de base de dados MariaDB com o usuário root de seu SGBD. Após o comando deve-se informar a respectiva senha do usuário:
sudo mysql -u root -p

Parâmetro -u: Indica o usuário ao qual desejamos utilizar para conectar ao SGBD.
Parâmetro root: Nome do usuário que estamos utilizando para realizar a conexão com o SGBD. Onde pode ser qualquer usuário cadastrado no MariaDB.
Parâmetro -p: Indica a senha do usuário para conexão com o SGBD.

 

- Após informar a senha, você deve estar no console MariaDB:

Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 128
Server version: 10.3.32-MariaDB-0ubuntu0.20.04.1 Ubuntu 20.04
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>

 

Estando no console, podemos utilizar os comando SQL. Veremos a seguir alguns exemplos: 

 

Listar todas as bases de dados:
show databases;

Apagar uma base de dados:
drop database [nomeDB];

Criar uma base de dados:
create database [nomeDB];

É possível também criar base de dados já com os respectivos "conjunto e coleção de caracteres", como mostrado a seguir:

create database [nomeDB] CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

 

Criar um usuário de base de dados:

CREATE USER '[usuarioDB]'@'localhost' IDENTIFIED BY '[senhaUsuarioDB]';

Neste ponto, o usuário recém criado, não possui permissões para fazer nada com as base de dados, portanto, deve-se fornecer ao usuário o acesso às informações que eles irão precisar.

GRANT [tipoPermissao] ON [nomeDB].[nomeTabela] TO '[usuarioDB]'@'localhost';

O sinal "*" é um coringa, pois permite selecionar todos os itens. No exemplo a seguir, mostramos como um usuário tem acesso completo a todas as tabelas em uma respectiva base de dados:

GRANT ALL PRIVILEGES on [nomeDB].* to '[usuarioDB]'@'localhost' identified by '[senhaUsuarioDB';

Depois de finalizar com as permissões, sempre se certifique de recarregar todos os privilégios e suas alterações estarão em vigor.: 

flush privileges;

- Aqui está uma lista de permissões comuns das quais os usuários podem usufruir.

ALL PRIVILEGES: Garante ao usuário do SGBD acesso completo a respectiva base de dados (ou, se nenhuma base for selecionada, acesso global ao sistema)
CREATE: Permite criar novas tabelas ou base de dados
DROP: Permite deletar tabelas ou base de dados
DELETE: Permite excluir linhas de tabelas
INSERT: Permite inserir linhas em tabelas
SELECT: Permite usar o comando SELECT para ler os base de dados
UPDATE: Permite atualizar linhas de tabelas
GRANT OPTION: Permite conceder ou remover privilégios de outros usuários

 

Alternar para uma base de dados:

use [nomedb];

Mostrar todas as tabelas da respectiva base de dados:
show tables;

Mostrar o formatos dos campos da tabela de uma base de dados:
describe [nomeTabela];

Apagar uma tabela:
drop table [nomeTabela];

Para sair da interface de administração do MariaDB: 

exit

 

 

Charsets e collations no MySQL

 

Charsets
Os campos do tipo texto do MariaDB (e outros SGBDs), como char, varchar, text, entre oitros, tem uma propriedade que definem o conjunto de caracteres válidos naquele campo. Esses são os chamados "character sets" ou, de forma abreviada, "charsets". Há charsets pra vários idiomas. O mais usado com o português é o "UTF-8", que inclui todos os nossos caracteres acentuados. Porém o "utf8mb4" permite um byte a mais na codificação é o bastante recomendado ultimamente.

Para mostrar a lista de charsets suportados pelo MariaDB, faça a seguinte consulta:

show character set;


Collations
Existem também as "collations" (que podem ser traduzidas por "coleções" ou "agrupamentos") para cada um desses charsets. Elas definem as regras para comparação entre caracteres do charset. Há collations para comparar caracteres de diferentes idiomas, para ignorar (ou não) letras minúsculas e maiúculas, ou acentuação.

Por exemplo, digamos que seja feita uma consulta pela palavra "teste" em uma determinada coluna de uma tabela. Se a collation dessa coluna for "utf8mb4_unicode_ci", o MariaDB pode retornar as palavras "TESTE", "Teste", etc., pois as letras maiúsculas não se diferem das minúsculas (daí o sufixo "ci", de "case-insensitive"). Já na collation "utf8mb4_general_cs", apenas o valor "teste" serviria.

 

Para mostrar a lista de collations de um determinado charset, use:

show collation where charset='utf8mb4';


Unicode e UTF-8
O conjunto de caracteres Unicode é o mais abrangente. Ele engloba milhares de caracteres conhecidos, de vários idiomas, além de símbolos, emoticons, etc. Já o UTF-8 é uma forma prática de se usar o Unicode sem usar tanto espaço de armazenamento.

A tendência atualmente é usar o charset UTF-8 nos base de dados (especificamente o utf8mb4 no MariaDB), pois serve para qualquer idioma.

 

utf8mb4
O UTF-8 do MariaDB, por padrão, não suporta todos os caracteres possíveis do Unicode, utilizando até 3 bytes por caractere. Eles posteriormente criaram o charset utf8mb4, que pode ter até 4 bytes por caractere e é mais completo.

Então a recomendação mais atual de charset e collation para campos texto é utf8mb4 e utf8mb4_unicode_ci, respectivamente.

 

Quinta, 09 Dezembro 2021

Instalação Nextcloud no Ubuntu 20.04

O Nextcloud é software open source que permite hospedar e compartilhar arquivos de forma segura e privativa, sendo semelhante ao conhecido Dropbox. A diferença com o Nextcloud é que todos os seus recursos são em código aberto. Além disso, ele restitui a você o controle e a segurança de seus dados confidenciais, eliminando assim o uso de serviço de hospedagem em nuvem de terceiros.

Se você busca uma solução de armazenamento de arquivos onde você possa ter total controle sobre o servidor e a plataforma, ou seja, ter sua Nuvem Privada, o Nextcloud é a solução.

Este artigo irá guiá-lo como instalar o Nextcloud no Ubuntu 20.04 com o servidor web Apache e o certificado SSL da Let’s encrypt.

 

1. PRé-requisitos

- Um servidor Ubuntu 20.04 instalado com IP estático (ex: 172.16.15.3) e devidamente atualizado.

- Acesso SSH e logado como usuário root.

- Um nome de domínio apontado para seu servidor: Para garantir conexões do Nextcloud com protocolos TLS/SSL. O Nextcloud pode configurar e gerenciar um certificado SSL gratuito e confiável da Let’s Encrypt se seu servidor tiver um nome de domínio (ex: arquivos.soulinux.com). Se não tiver um nome de domínio, o Nextcloud pode definir um certificado SSL autoassinado que possa criptografar conexões. porém, ele não será confiável por padrão em navegadores Web.

 

2. CONFIGURAÇÕES IMPORTANTES

 

2.1. Habilitar o acesso SSH no Ubuntu:

vim /etc/ssh/sshd_config


- A fim de melhorar a segurança, altere a porta de acesso SSH:

Port 2222


- Coloque a parte de autenticação como o mostrado abaixo:

#Authentication:
LoginGraceTime 2m
PermitRootLogin yes
StrictModes yes

- Para concluir, reinicie o serviço SSH:

systemctl restart sshd

 

2.2. Definir a região de fuso horário:

dpkg-reconfigure tzdata

 

2.3. Atualize o servidor e limpe itens não mais necessários:
apt update && sudo apt upgrade

apt autoremove

apt autoclean

apt clean

 

 

3. CONFIGURAÇÕES de Firewall

Supondo que você esteja usando o UFW para gerenciar seu firewall, será necessário abrir as portas HTTP ( 80 ) e HTTPS ( 443 ) e SSH (2222).

 

ufw allow 80

ufw allow 443

ufw allow 2222

enable

 

4. iNSTALAÇÃO DO sERVIDOR web (lamp)

 

4.1. Instalação do PHP e Apache:

No momento em que este tutorial está sendo escrito, a versão padrão do PHP no Ubuntu 20.04 é a 7.4.3 e é totalmente suportado e recomendado para o Nextcloud. por ser padrão, não é necessário indicar a versão na instalação:
apt install apache2 php libapache2-mod-php php-gmp php-bcmath php-gd php-json php-mysql php-curl php-mbstring php-intl php-xml php-zip php-imagick imagemagick php-fpm php-apcu php-fileinfo ffmpeg php-common php-bz2 unzip

 

Habilite alguns módulos Apache:
a2enmod headers dir mime ssl rewrite headers proxy proxy_http deflate cache proxy_wstunnel http2 proxy_fcgi env setenvif 

 

Teste a configuração:
sudo apache2ctl -t

 

Habilite para iniciar no boot e reinicie o Apache:
systemctl enable apache2

systemctl restart apache2

 

Confira a versão do PHP:
php --version

 

4.2. Atualizar Configuração do PHP:

Antes da criação do banco de dados, pode-se definir os parâmetros recomendados no arquivo php.ini:
nano /etc/php/7.4/apache2/php.ini
- Ajuste os seguintes campos para os valores abaixo ou de acordo com suuas necessidades:

output_buffering = off (linha 215)
max_execution_time = 120 (linha 388)
memory_limit = 1024M (linha 409)
post_max_size = 128M (linha 694)
upload_max_filesize = 1024M (linha 846)
date.timezone = America/Sao_Paulo (linha 962)

 

4.3. Instalar e configurar a base de dados MySQL (MariaDB):

O MariaDB é um sistema de gerenciamento de banco de dados de código aberto, usado com frequência como uma alternativa ao MySQL como a parte que representa o banco de dados da famosa pilha LAMP (Linux, Apache, MySQL, PHP/Python/Perl). Ele foi criado como um substituto do MySQL.

No momento em que este tutorial está sendo escrito, os repositórios APT padrão do Ubuntu 20.04 incluem a versão 10.3.32 do MariaDB.

Proceda a instalação do MariaDB:
apt install mariadb-server

 

Após concluída a instalação, verifique se o habilite para iniciar no boot e reinicie o MariaDB:
systemctl enable mariadb

systemctl restart mariadb

 

Confira a versão do MariaDB:
mariadb --version

  

Confira a versão do MariaDB:
mariadb --version

 

Antes de criar a base de dados, vamos tornar o MariaDB mais seguro. Execute o comando a seguir e, quando solicitado, defina a "senha do usuário root do MariaDB", remova o "usuário anônimo", "mantenha o login remoto pelo usuário root do banco de dados" e exclua a base de dados "test":

/usr/bin/mysql_secure_installation

Quando solicitado, responda às perguntas abaixo:

Enter current password for root (enter for none): Pressione Enter
Change the root password? [Y/n]: Digite Y
New password: Digite a senha do SGBD
Re-enter new password: Digite a senha novamente
Remove anonymous users? [Y/n]: Digite Y
Disallow root login remotely? [Y/n] : Digite Y
Remove test database and access to it? [Y/n]: Digite Y
Reload privilege tables now? [Y/n]: Digite Y
 

Faça login ao servidor do banco de dados MariaDB com o respectivo usuário root e entre com a respectiva senha definida acima:
mysql -u root -p

 Estando na interface de administração do MariaDB, crie a base de dados do seu NextCloud:

create database NomeDB_nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Defina o respectivo usuário e uma senha forte para esse banco de dados.

grant all on NomeDB_nextcloud.* to 'UsuarioDB_nextcloud'@'localhost' identified by 'SENHA_UsuárioDB';

 Atribua os respectivos privilégios: 

flush privileges;

Saia da interface de administração do MariaDB: 

exit

 

 

5. INSTALAÇÃO DO NextCloud Server

 

5.1. Faça o download da última versão do NextCloud na pasta padrão do Apache:

 

Acesse a pasta "/var/www":

cd /var/www

 

Remova a subpasta padrão "html", pois colocaremos a pasta "nextcloud" em "/var/www":
rm -r /var/www/html/

 No momento da elaboração desse artigo, a última versão do NextCloud é a 23.0. Faça o download da última versão do NextCloud. :

wget https://download.nextcloud.com/server/releases/latest.zip

Descompacte o arquivo recém baixado:

unzip latest.zip

Após descomapctado, remova o arquivo compactado recém baixado:
rm latest.zip

  O shopt é um comando interno do shell Bash que pode ativar ou desativar as opções da sessão atual do shell. No caso, o bash inclui nomes de arquivos que começam com ‘ . ‘nos resultados do nome do caminho global:

shopt -s dotglob

 

O usuário "www-data" é o padrão para operação normal para servidores Web no Ubuntu como o Apache. Defina esse usuário como proprietário da pasta: 
chown -R www-data:www-data /var/www

 

5.2. Definir permissões adequadas da pasta do NextCloud:

Para isso faremos o download e usaremos um shell script. Continue na pasta /var/www e faça o download a partir do github da Nextcloud.

wget https://raw.githubusercontent.com/nextcloud/vm/master/static/setup_secure_permissions_nextcloud.sh

Torne o script executável:

chmod +x setup_secure_permissions_nextcloud.sh

Como esse script busca um outro script que deve estar em uma pasta específica (/var/scripts). Crie essa pasta:

mkdir -p /var/scripts

 Acesse essa pasta:

cd /var/scripts

 Faça o download do arquivo com o nome que está indicado no script de permissões segura:

wget -O fetch_lib.sh https://raw.githubusercontent.com/nextcloud/vm/master/lib.sh 

Torne o script executável:

chmod +x fetch_lib.sh

Volte para a pasta "/var/www":cd /var/www

Execute o script:./setup_secure_permissions_nextcloud.sh

 

 

5.3. Crie um site na configuração do Apache:

Crie o arquivo "nextcloud.conf" na pasta "/etc/apache2/sites-available":

cd /etc/apache2/sites-available

nano nextcloud.conf

Coloque o seguinte conteúdo, ajustando de acordo com suas configurações:

<VirtualHost *:80>
ServerName nextcloud.SeuDominio.com
ServerAlias www.nextcloud.SeuDominio.com
DocumentRoot /var/www/nextcloud

<Directory "/var/www/nextcloud">
Require all granted
AllowOverride All
Options -Indexes +FollowSymLinks
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>

ErrorLog /var/log/apache2/nextcloud.SeuDominio.com-error.log
CustomLog /var/log/apache2/nextcloud.SeuDominio.com-requests.log combined
</VirtualHost>

 

Saia do editor (nano) e habilite o site nextcloud:

a2ensite nextcloud

 

Como vamos utilizar somente o site nextcloud, desabilite o site padrão definido em "000-default.conf":

sudo a2dissite 000-default.conf

Reinicie o Apache para fazer com que estas alterações tenham efeito:

sudo systemctl restart apache2

 

Agora você deve conseguir acessar e ver o Nextcloud no navegador. Mas não comece a instalação ainda.

 

 

5.4. Instalação do Certificado Digital:

Instalaremos o certbot do Let’s encrypt e obteremos um certificado para o Ubuntu 20.04:

sudo apt install certbot python3-certbot-apache

Crie um certificado de acordo com o seu caminho de instalação do NextCloud e com seu respectivo domínio:certbot certonly --webroot -w /var/www/nextcloud -d nextcloud.SeuDominio.com

O certificado Let's Encrypt tem duração de 3 meses, para realizar a renovação de forma automática, vamos executar a instrução no "crontab":crontab -e

Adicione o seguinte conteúdo ao "crontab":

#Renovação ocorre todo dia às 4:30
30 04 * * * certbot renew

Atualize o arquivo do site nextcloud para adicionar a porta 443 (SSL):

nano /etc/apache2/sites-enabled/nextcloud.conf

 Coloque o seguinte conteúdo, ajustando de acordo com suas configurações:

<VirtualHost *:80>
ServerName nextcloud.SeuDominio.com
ServerAlias www.nextcloud.SeuDominio.com
DocumentRoot /var/www/nextcloud
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

<Directory "/var/www/nextcloud">
Require all granted
AllowOverride All
Options -Indexes +FollowSymLinks
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>

ErrorLog /var/log/apache2/nextcloud.SeuDominio.com-error.log
CustomLog /var/log/apache2/nextcloud.SeuDominio.com-requests.log combined

</VirtualHost>

<VirtualHost *:443>
ServerName nextcloud.SeuDominio.com
ServerAlias www.nextcloud.SeuDominio.com
DocumentRoot /var/www/nextcloud

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubnextcloud.SeuDominio.coms; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff

<Directory "/var/www/nextcloud">
Require all granted
AllowOverride All
Options -Indexes +FollowSymLinks
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>

ErrorLog /var/log/apache2/nextcloud.SeuDominio.com-error.log
CustomLog /var/log/apache2/nextcloud.SeuDominio.com-requests.log combined
SSLEngine on
SSLCertificateKeyFile /etc/letsencrypt/live/nextcloud.SeuDominio.com/privkey.pem
SSLCertificateFile /etc/letsencrypt/live/nextcloud.SeuDominio.com/fullchain.pem
</VirtualHost>

  

Reinicie o Apache:

systemctl restart apache2

 

Os certificados foram baixados, instalados e carregados. Tente recarregar o seu site usando https://nextcloud.SeuDominio.com e verifique o indicador de segurança do seu navegador. Ele deve indicar que o site está devidamente protegido, normalmente com um ícone de cadeado.

Faça também um teste no site SSL Labs Server Test​​​​, e você deverá receber uma classificação A.

Agora é possível acessar o navegador web com SSL ativado. https://nextcloud.seudominio.com

 

 

5.5. Configuração inicial do NextCloud:

Acesse o nexcloud a partir de do navegador web (Firefox, Chrome, etc.) e proceda com as configurações iniciais.

 

  

6. INSTALAÇÃO DO Redis Cache

Nextcloud se tornou uma das soluções de nuvem privada mais amplamente usadas no planeta. Este software em nuvem não é apenas de código aberto, mas também é escalonável, extensível e confiável. Por padrão, o Nextcloud não habilita o armazenamento em cache. Por que você precisa de cache? O armazenamento em cache aumenta o desempenho, armazenando objetos solicitados com frequência na memória.

Ao fazer isso, a recuperação desses objetos é consideravelmente mais rápida. Já que estamos falando sobre nuvem, você pode ter centenas (até milhares) de usuários acessando esse servidor simultaneamente. Sem o cache ativado, esse servidor sofrerá um impacto significativo à medida que cada usuário recupera objetos. Felizmente, com o Nextcloud é possível adicionar esse recurso utilizando um servidor Redis, que é um tipo de banco de dados NoSQL, classificado como servidor de estrutura de dados e armazena as informações em esquemas de chave-valor na memória. Ele é Open Source e licenciado em BSD. Seu nome é um acrônimo de REmote DIctionary Server (servidor de dicionário remoto).

 

6.1. Faça a instalação e configuração do servidor Redis: 

apt install redis-server php-redis

Habilite o módulo php-redis:
phpenmod redis

Habilite e reinicie o servidor Redis:
systemctl enable redis-server

systemctl restart redis-server

Confira se o servidor Redis está em execução:

systemctl status redis-server

 

A fim de configurar o cache, edite o arquivo "config.php"
nano /var/www/nextcloud/config/config.php

 

Adicione o seguinte conteúdo ao arquivo "config.php" acima do final do bloco ");" :

'memcache.distributed' => '\\OC\\Memcache\\Redis',
'memcache.local' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
'host' => 'localhost',
'port' => 6379,
),

  

Salve e feche o arquivo e em seguida, reinicie o Apache e o PHP-FPM:
systemctl restart apache2 php7.4-fpm

 

Configure Opcache para PHP (substituir o número da versão pelo que corresponde ao PHP instalada, em nosso caso é 7.4):

nano /etc/php/7.4/apache2/php.ini

 

Descomente a linhas relacionadas ao bloco [opcache] (pode-se modificar os valores padrão conforme necessário):

; Nextcloud Opcache settings
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

 

Salve e feche o arquivo e em seguida, reinicie o Apache e o PHP-FPM:
systemctl restart apache2 php7.4-fpm

 

 

 

 

Marcado sob