Como instalar e configurar VPS para WordPress com PHP 8.2, Nginx, WP-CLI e MariaDB no Ubuntu 22.04

como criar, instalar e configurar um servidor web com nginx, mariadb, php 8.2 para wordpress.

Neste tutorial, vamos dar continuidade na série de tutoriais sobre como configurar uma VPS com o Ubuntu 22.04 para criar um servidor web com Nginx, MariaDB para uso com WordPress. Se você ainda não revisou a segurança da sua VPS, recomendamos que leia o artigo sobre como melhorar a segurança de uma VPS para WordPress. Como estamos criando um servidor do zero para hospedar sites WordPress com Nginx, tenha muita atenção e não pule nenhuma etapa. Antes de tudo lembre-se de verificar o outro tutorial sobre VPS Nginx WordPress: configurando a segurança inicial da VPS em 2023.

Motivos para escolhermos o Nginx ao invés do Apache

O Nginx é um servidor web de alto desempenho que pode lidar com grandes volumes de tráfego. Ele foi criado em 2002 por Igor Sysoev, um engenheiro russo, para resolver o problema do C10K, que se refere à capacidade de um servidor de lidar com 10.000 conexões simultâneas.

O Nginx se diferencia do Apache por usar um modelo de processamento assíncrono e baseado em eventos, em vez de um modelo baseado em threads. Isso significa que o Nginx pode servir mais requisições com menos recursos e menor latência.

Segundo alguns benchmarks, o Nginx consegue executar 1000 conexões de conteúdo estático simultaneamente com o dobro de velocidade do Apache utilizando menos memória. Em relação à execução de conteúdos dinâmicos, ambos possuem a mesma velocidade.

O Nginx é uma melhor opção para quem possui um site mais estático, que precisa de uma entrega rápida e eficiente de arquivos como imagens, CSS e JavaScript. Além disso, o Nginx pode ser usado como um proxy reverso em frente ao Apache, o que permite aproveitar as vantagens de ambos os servidores.

Instalação do NGINX no Ubuntu 22.04

Para começar vamos instalar o NGINX no Ubuntu, e para isso iremos utilizar um repositório famoso que é mantido por Ondrej Surý. O Ubuntu por si só fornece o pacote do NGINX, porém costuma ser desatualizado. Desta forma, para garantir a versão mais recente do NGINX no Ubuntu e para gantir que tudo esteja atualizado, execute os comandos abaixo no Terminal.

Com este comando vamos adicionar o repositório citado do NGINX ao Ubuntu:

sudo add-apt-repository ppa:ondrej/nginx -y && sudo apt update

Antes de instalar o NGINX, vamos verificar se algo no sistema é necessário ser atualizado antes de instalarmos o NGINX. Isso evita problemas de depêndencia:

sudo apt dist-upgrade -y

Agora, vamos instalar o NGINX no Ubuntu com o comando abaixo:

sudo apt install nginx -y

Para verificar a versão instalada execute o comando abaixo:

nginx -v

Se você acessar o seu site através do IP vai visualizar a tela abaixo:

Note que ao ver a tela anterior o servidor foi inicialmente instalado corretamente. Agora, vamos precisar configurar para termos um servidor otimizado e rápido. Assim, seguindo essas instruções, você terá um servidor web com NGINX totalmente otimizado para WordPress.

Configurando o NGINX para o WordPress

Para iniciar a configuração do WordPress precisamos de algumas informações adicionais. A primeira é o número de núcleos do seu processador e também o limite de arquivos aberto que o seu servidor suporta. Saiba que essas duas informações são essenciais para que você evite sobrecarga desnecessárias.

Coletando informações da configuração do servidor

Para saber exatamente quantos núcleos o seu servidor tem execute o comando abaixo:

grep processor /proc/cpuinfo | wc -l

Agora, vamos verificar qual o limite de arquivos abertos o seu servidor suporta:

ulimit -n

Ajustando o arquivo de configuração do NGINX

Agora que já temos as informações primordiais para um servidor web com nginx para WordPress, execute o comando abaixo e ajuste os campos do arquivo que vamos destacar.

sudo nano /etc/nginx/nginx.conf

Ao abrir a configuração padrão do NGINX, você verá o seguinte conteúdo, o exemplo abaixo é o modelo padrão, sem as modificações que precisamos fazer.

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
        worker_connections 768;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

Para começar a nossa configuração do NGINX focada no WordPress troque o seguintes campos:

  • user emanuel; (Altere conforme o seu usuário)
  • worker_processes 8; (Altere de acordo com o primeiro comando que executamos para saber o número de núcleos).
  • worker_connections 1024; (Neste item, troque pelo número de arquivos que o seu servidor suporta). Este cálculo é simples, como neste exemplo tenho o número de 8 worker_processes e o limite de conexões é 1024, assim basta multiplicar 8×1024. A mesma situação você deve fazer com sua VPS. Veja como é simples configurar o Nginx para o WordPress.

No meu exemplo, o arquivo vai ficar com meu usuário emanuel, 8 núcleos de CPU e o limite de arquivo do meu servidor é 1024.

user emanuel;
worker_processes 8;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
        worker_connections 1024;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

Ainda no mesmo arquivo precisamos descomentar a linha multi_accept on, ou seja, remova o # da linha para que o arquivo esteja conforme exemplo abaixo:

user emanuel;
worker_processes 8;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
        worker_connections 1024;
        multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

Agora, observe o próximo bloco de configuração do NGINX, o Basic Settings:

 ##
        # Basic Settings
        ##

        keepalive_timeout 15;
        sendfile on;

Vamos descomentar a linha sendfile on; pois queremos fazer upload de arquivos no WordPress. E ao mesmo tempo vamos inserir a linha keepalive_timeout 15; para que os visitantes do site não fiquem conectados por mais de 15 segundos. Afinal, a conexão de um site até o seu carregamento final não deve ultrapassar 2 segundos. Dito isso, 15 segundos é um bom tempo.

Agora no bloco http descomente a linha server_tokens e confira está com o parâmetro off. Isso é muito importante por questões de segurança. Logo abaixo inseria a linha client_max_body_size 64m; essa linha garante que os arquivos enviados não sejam maiores que 64m.

Observe que se você vai subir vídeo talvez tenha que ajustar para 2g que remete a 2gigas ou pode inserir 2048m que também quer dizer 2gigas. Desta forma, ajuste como preferir, se quiser também pode reduzir o tamanho.

Agora vamos para o GZIP, descomente a linha gzip on; e a linha gzip_proxied any; ele permite que nossas páginas sejam compactas antes mesmo de ir ao navegador do usuário. Inclusive o campo gzip_comp_level deve ser definido de 1 até 9, no exemplo está em 5. Saiba que quanto maior o nível compactação mais processamento será consumido. Isso quer dizer que se você deixar em 9 o consumo de CPU do seu servidor vai aumentar. Em seguida, desmarque a linha gzip_types Ajuste o GZIP no NGINX e teste. Isso vai deixar o seu site mais rápido, veja como você deve deixar o bloco abaixo:

 ##
    # Gzip Settings
    ##

    gzip on;

    # gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 5;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

Resumo do arquivo com tudo o que já ajustamos até agora.

user emanuel;
worker_processes 8;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 1024;
    multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 15;
    types_hash_max_size 2048;
    server_tokens off;
    client_max_body_size 64m;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;

    # gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 5;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

    server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name _;
        return 444;
    }
}

Agora, salve o arquivo pressionando Ctrl + X e digite Y para salvar as alterações.

Configurando o PHP para funcionar corretamente no NGINX

Como estamos usando o PHP-FPM para este tutorial e estamos focados em ter um site WordPress rápido com NGINX, precisamos configurar tudo corretamente. Assim, em breve vamos configurar o cache de página vamos usar o FastCGI e o cache de objetos vamos usar o Redis.

Vamos verificar se uma linha de parâmetros para o FastCGI está no arquivo abaixo, se não estiver adicione.

Edite este arquivo:

sudo nano /etc/nginx/fastcgi_params

Caso a linha abaixo não exista adicione-a. Lembre-se, linha parecida não é igual, deve ser exatamente a linha abaixo:

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

Agora, salve o arquivo pressionando Ctrl + X e digite Y para salvar as alterações.

Primeira validação do NGINX, precisamos conferir se tudo está funcionando corretamente, execute o comando abaixo:

sudo nginx -t

Se tudo estiver correto como mostramos até agora, verá a seguinte mensagem:

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

Se você apagou alguma } sem querer ou inseriu algum item errado, a mensagem vai informar a linha e o erro, basta refazer este tutorial. Por isso, nada de pressa.

Uma vez que a mensagem diga que os testes foram um sucesso, reinicie o Nginx com o comando abaixo:

sudo service nginx restart

Instalando o PHP 8.2 no Nginx

Para instalar o PHP 8.2 execute o comando abaixo. Você pode mudar a numeração do versionamento do PHP para uma versão anterior se preferir. Neste exemplo, vamos instalar o PHP 8.2 em nosso servidor NGINX para ser utilizado pelo WordPress. Neste momento o PHP 8.2 segue com suporte beta no WordPress, mas a maioria dos plugins já aderiram as versões. Assim, caso você não queira usar a versão 8.2 pode trocar para qualquer versão de sua escolha.

A PPA é a mesma para todas as versões, a partir do PHP 7.4 até o PHP 8.2, todos os pacotes estáveis podem ser encontrados na mesma PPA.

Adicione o repositório do PHP através do comando abaixo:

sudo add-apt-repository ppa:ondrej/php -y && sudo apt update && sudo apt dist-upgrade -y

Agora, vamos instalar os pacotes do PHP 8.2, todas as extensões do PHP para WordPress estão listadas, você não precisará de mais nada.

sudo apt install php8.2-fpm php8.2-common php8.2-mysql \
php8.2-xml php8.2-xmlrpc php8.2-curl php8.2-gd \
php8.2-imagick php8.2-cli php8.2-dev php8.2-imap \
php8.2-mbstring php8.2-opcache php8.2-redis \
php8.2-soap php8.2-zip -y

Configurando o PHP 8.2 e o PHP-FPM

Agora que já instalamos tudo o que precisamos vamos para a configuração do PHP 8.2 e do PHP-FPM.

Edite o arquivo do PHP com o comando abaixo:

sudo nano /etc/php/8.2/fpm/pool.d/www.conf

A primeira coisa a fazer é mudar os campos abaixo www-data pelo seu usuário. O mesmo que foi utilizado na configuração inicial do NGINX. Caso tenha dificuldades em localizar visualmente os campos, utilizar a busca do nano através do atalho Ctrl + w e digite um trecho do campo e pressione ENTER:

user = www-data
group = www-data

listen.owner = www-data
listen.group = www-data

Agora, salve o arquivo pressionando Ctrl + X e digite Y para salvar as alterações.

Em seguida, vamos editar o arquivo php.ini, vamos ajustar alguns campos nele também:

sudo nano /etc/php/8.2/fpm/php.ini

Agora, com o Ctrl + w localizar estes dois campos para ficar igual ao exemplo abaixo. Observe que se você vai subir vídeo talvez tenha que ajustar para 2g que remete a 2gigas ou pode inserir 2048m que também quer dizer 2gigas. Desta forma,ajuste como preferir, se quiser também pode reduzir o tamanho.

upload_max_filesize = 64M
post_max_size = 64M

Agora, salve o arquivo pressionando Ctrl + X e digite Y para salvar as alterações.

Por fim, vamos verificar se você configurou o PHP 8.2 e o PHP-FPM corretamente com o comando abaixo:

sudo php-fpm8.2 -t

Você deve ver uma mensagem parecida com este exemplo:

NOTICE: configuration file /etc/php/8.2/fpm/php-fpm.conf test is successful

Agora que já atualizamos os arquivos do PHP, precisamos reiniciar, para reiniciar o PHP-FPM execute o comando abaixo:

sudo service php8.2-fpm restart

Verificando o Nginx e o PHP em funcionamento na VPS

Agora que instalamos e configuramos o Nginx e o PHP-FPM, precisamos conferir se os serviços estão ativos e funcionando, para isso vamos utilizar o comando htop. No terminal, execute o comando abaixo:

htop

Para facilitar a localização dos processos, já que o htop atualiza rapidamente utilize o atalho no teclado Ctrl + M, isso vai exibir os processos que estão consumindo memória na sua VPS.

Você vai ver algo como o exemplo abaixo:

PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
676 root      20   0  241232  35892  29620 S   0.0   3.7   0:00.09 php-fpm8.2
680 root      20   0  630404  28408  15544 S   0.0   2.9   0:00.50 snapd
675 root      20   0   29272  17952  10292 S   0.0   1.9   0:00.03 networkd-dispat
341 root      19  -1   51464  13312  12308 S   0.0   1.4   0:00.08 systemd-journal
760 joao    20   0  241608  12916   6616 S   0.0   1.4   0:00.00 php-fpm8.2
761 joao    20   0  241608  12916   6616 S   0.0   1.4   0:00.00 php-fpm8.2
888 root      20   0   13796   8916   7472 S   0.0   0.10   0:00.00 sshd
863 root      20   0   12176   7408   6484 S   0.0   0.8   0:00.00 sshd
566 systemd+  20   0   90228   6056   5292 S   0.0   0.7   0:00.01 systemd-timesyn
998 ubuntu    20   0   13928   5992   4528 S   0.0   0.7   0:00.32 sshd
1096 joao   20   0   58988   5596   3756 S   0.0   0.7   0:00.00 nginx

Observe que nas linhas 2, 6 e 7 estão ativos o php-fpm8.2 e na linha 12 o nginx. Então, tudo está funcionando.

Configurando o Nginx e o PHP-FPM 8.2

Como eu testei todas as configurações do Nginx focadas no WordPress, não vamos precisar fazer testes de funcionando no Nginx em si, porque se você não pulou nenhum etapa, e se seguiu todas as recomendações aqui propostas, nada vai dar errado.

Então, vamos remover as configurações padrões e criar as configurações do Nginx para WordPress. Para remover execute o comando abaixo:

sudo rm /etc/nginx/sites-available/default && sudo rm /etc/nginx/sites-enabled/default

Ajustando as configurações do Nginx para WordPress

Agora, vamos abrir novamente o arquivo de configurações:

sudo nano /etc/nginx/nginx.conf

Com este arquivo aberto, utilize o atalho Ctrl + w e localize a linha:

include /etc/nginx/sites-enabled/*;

Abaixo dela, pule uma linha e cole o seguinte trecho:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    return 444;
}

Agora, salve o arquivo pressionando Ctrl + x e escrevam Y para sim e salvar as alterções que fizemos. Vamos agora validar o Nginx com o comando abaixo:

sudo nginx -t

Estando tudo certo, execute o comando abaixo para reiniciar o Nginx:

sudo service nginx restart

Por fim, compare o arquivo com o que vou deixar abaixo. Neste exemplo, temos o arquivo do nginx.conf otimizado e pensado para funcionar com o WordPress:

user emanuel;
worker_processes 8;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 8192;
    multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 15;
    types_hash_max_size 2048;
    server_tokens off;
    client_max_body_size 64m;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;

    # gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 9;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

    server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name _;
        return 444;
    }
}

Instalando o WP-CLI para gerenciar o WordPress no Nginx

Agora que já temos o nosso servidor Nginx para ser usado com o WordPress, vamos instalar o WP-ClI para facilitar tudo no que diz respeito ao WordPress.

O que é o Wp-cli?

Wp-cli é uma ferramenta de linha de comando que permite gerenciar um site WordPress sem usar o painel de administração. Com o Wp-cli, você pode instalar, atualizar, ativar, desativar e configurar plugins, temas, usuários, opções e muito mais. O Wp-cli é útil para automatizar tarefas, fazer backups, migrar dados e testar código.

Para usar o Wp-cli, você precisa ter acesso ao servidor onde o WordPress está instalado e ter o PHP e o MySQL instalados. Você também precisa baixar o arquivo wp-cli.phar e torná-lo executável. Depois disso, você pode executar comandos do Wp-cli usando a sintaxe wp <comando> <subcomando> <opções>.

Por exemplo, para instalar um plugin chamado hello-dolly, você pode usar o comando wp plugin install hello-dolly --activate. Para ver a lista de todos os comandos disponíveis, você pode usar o comando wp help.

O Wp-cli é uma ferramenta poderosa e versátil que pode facilitar a vida de quem trabalha com WordPress. Se você quiser saber mais sobre o Wp-cli, você pode visitar o site oficial https://wp-cli.org/ ou ler a documentação https://make.wordpress.org/cli/handbook/.

Instalando o WP-CLI com o Nginx

Agora, vamos executar o primeiro comando. Com o Terminal aberto execute o comando abaixo para irmos a sua pasta home:

cd ~/

Nesta etapa, vamos fazer o download do WP-CLI, entramos nesta pasta, pois é nele que o download será feito:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Em seguida, com o download concluído, vamos verificar se a ferramenta foi baixada corretamente e se há algum problema, execute o comando abaixo:

php wp-cli.phar --info

Agora, para que tudo funcione adequadamente, precisamos dar permissões de execução e criar um patch com o comando abaixo:

chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

Pronto! Se a sua saída foi neutra, tudo está correto. Para tentar executar o WP-CLI e verificar se ela está com permissão pasta digitar apenas o comando abaixo:

wp

Instalando o MariaDB para uso no WordPress com Nginx

Nesta etapa vamos usar a versão disponível no Ubuntu, não há problemas e não precisamos de repositórios extras. Além disso, os repositórios anteriores também contém alguns pacotes que podem ser atualizados para que tudo funcione com a versão do Nginx que instalamos. Assim, caso você verifique que há atualizações após instalar, pode fazer sem nenhum receio. Mas, você também pode instalar o MySQL se preferir, os comandos de criação serão os mesmos.

Vamos explicar um pouco os motivos que escolhemos o MariaDB!

MariaDB vs MySQL: Qual é a melhor opção para o seu projeto?

Se você está procurando um banco de dados relacional de código aberto para o seu projeto, é provável que você já tenha ouvido falar do MySQL e do MariaDB. Esses dois sistemas de gerenciamento de banco de dados (SGBD) são muito populares e têm muitas semelhanças, mas também algumas diferenças importantes que você deve conhecer antes de escolher um deles.

Neste artigo, vamos explicar o que é o MySQL e o MariaDB, como eles surgiram, quais são as principais diferenças entre eles e quais são as vantagens e desvantagens de cada um. Assim, você poderá tomar uma decisão mais informada e adequada ao seu caso.

O que é o MySQL?

O MySQL é um SGBD relacional criado em 1995 por Michael Widenius, David Axmark e Allan Larsson. Ele foi um dos primeiros bancos de dados de código aberto a ganhar popularidade na web, sendo usado por grandes empresas como Facebook, Google, Twitter e Wikipedia.

O MySQL é baseado na linguagem SQL (Structured Query Language), que é uma linguagem padrão para manipular dados em bancos de dados relacionais. O MySQL permite criar, consultar, atualizar e deletar dados em tabelas que se relacionam entre si por meio de chaves primárias e estrangeiras.

O MySQL tem uma licença dupla: ele pode ser usado gratuitamente sob a licença GNU GPL (General Public License), que exige que qualquer software que use o MySQL também seja de código aberto; ou ele pode ser usado comercialmente sob uma licença paga da Oracle, que é a empresa que atualmente mantém o MySQL.

O que é o MariaDB?

O MariaDB é um fork do MySQL, ou seja, um projeto derivado do código-fonte original do MySQL. Ele foi criado em 2009 por Michael Widenius, o mesmo fundador do MySQL, depois que a Oracle comprou a Sun Microsystems, que era a dona do MySQL na época.

Widenius criou o MariaDB para garantir que o MySQL continuasse sendo um projeto de código aberto e livre de restrições comerciais da Oracle. Além disso, ele queria adicionar novas funcionalidades e melhorias ao banco de dados, como mais mecanismos de armazenamento, mais extensões e plugins, mais otimizações e correções de bugs.

O MariaDB é totalmente compatível com o MySQL, ou seja, ele usa a mesma linguagem SQL, os mesmos comandos, os mesmos protocolos e os mesmos arquivos de dados. Isso significa que você pode migrar facilmente do MySQL para o MariaDB sem alterar o seu código ou os seus dados.

O MariaDB tem uma licença única: ele é totalmente gratuito e de código aberto sob a licença GNU GPL. Isso significa que você pode usar o MariaDB para qualquer propósito, sem pagar nada à Oracle ou à MariaDB Foundation, que é a organização sem fins lucrativos que mantém o MariaDB.

MariaDB vs MySQL: Quais são as principais diferenças?

Apesar de serem muito parecidos, o MariaDB e o MySQL têm algumas diferenças importantes que podem afetar o seu desempenho, a sua segurança e a sua funcionalidade. Vejamos algumas delas:

  • Mecanismos de armazenamento: O MariaDB suporta mais mecanismos de armazenamento do que o MySQL. Os mecanismos de armazenamento são formas diferentes de organizar os dados nas tabelas do banco de dados. Cada mecanismo tem suas vantagens e desvantagens em termos de velocidade, confiabilidade, recursos e requisitos. Alguns exemplos de mecanismos de armazenamento são InnoDB, MyISAM, Aria, Memory, CSV, Archive e Blackhole. O MariaDB oferece todos os mecanismos do MySQL e mais alguns exclusivos, como Spider, ColumnStore, Cassandra e Connect.
  • Pools de thread: O MariaDB lida com pools de thread de uma forma diferente do MySQL. Os pools de thread são grupos de threads (processos leves) que executam as consultas ao banco de dados. Cada thread consome recursos do servidor, como memória e CPU. O MariaDB usa um pool de thread dinâmico, que se adapta à carga de trabalho e ao número de conexões simultâneas. O MySQL usa um pool de thread estático, que tem um número fixo de threads e pode desperdiçar recursos ou causar congestionamentos.
  • Desempenho: O MariaDB geralmente oferece um melhor desempenho do que o MySQL, especialmente em cenários de alta concorrência e cargas de trabalho complexas. Isso se deve às otimizações e melhorias que o MariaDB implementa, como algoritmos de junção mais eficientes, subconsultas mais rápidas, consultas paralelas, cache de consultas aprimorado e estatísticas de índice mais precisas. Além disso, o MariaDB tem mais opções de configuração e ajuste fino do que o MySQL, o que permite otimizar o banco de dados de acordo com as suas necessidades específicas.
  • Segurança: O MariaDB tem mais recursos de segurança do que o MySQL, como criptografia de dados em repouso, autenticação baseada em funções, auditoria de banco de dados, verificação de senha e prevenção de injeção SQL. Além disso, o MariaDB lança atualizações e correções de segurança mais frequentemente do que o MySQL, o que reduz o risco de vulnerabilidades e ataques.
  • Suporte: O MariaDB tem uma comunidade mais ativa e engajada do que o MySQL, o que facilita o acesso à documentação, tutoriais, fóruns, blogs e outros recursos online. Além disso, o MariaDB tem um ciclo de desenvolvimento mais rápido e transparente do que o MySQL, o que permite que os usuários participem mais das decisões e contribuam com sugestões e feedback. Por outro lado, o MySQL tem um suporte comercial da Oracle, que pode ser útil para empresas que precisam de garantias contratuais, assistência técnica e consultoria especializada.

MariaDB vs MySQL: Qual é a melhor opção para o seu projeto?

Não há uma resposta definitiva para essa pergunta, pois depende das características e necessidades do seu projeto. No entanto, podemos fazer algumas considerações gerais:

  • Se você quer um banco de dados totalmente gratuito e de código aberto, sem restrições comerciais ou legais da Oracle, escolha o MariaDB.
  • Se você quer um banco de dados com mais funcionalidades, melhor desempenho, mais segurança e mais opções de configuração e otimização, escolha o MariaDB.
  • Se você quer um banco de dados com suporte comercial da Oracle, com garantias contratuais e assistência técnica, escolha o MySQL.
  • Se você quer um banco de dados com mais popularidade, mais material online e mais facilidade de encontrar profissionais qualificados, escolha o MySQL.

Em resumo, o MariaDB é uma versão melhorada e atualizada do MySQL, que oferece mais vantagens em termos técnicos e ideológicos. No entanto, o MySQL ainda é uma opção válida para quem prefere a estabilidade e o suporte da Oracle ou quem já está acostumado com ele.

Para instalar o MariaDB execute o comando abaixo:

sudo apt install mariadb-server -y

Ou se por algum motivo preferir o MySQL execute o comando abaixo para instalar:

sudo apt install mysql-server -y

Aprimorando a segurança do MariaDB

Primeiro vamos alterar as configurações do usuário root do MariaDB. Alterando isso, vamos aumentar a segurança do nosso servidor de banco de dados. O modo de segurança do MariaDB fará com que seja solicitado uma senha para o root. Saiba que por padrão não há senha definida para o root do MariaDB e nem do MySQL. Inclusive você pode instalar o MariaDB ou MySQl.

Agora, execute o comando abaixo para entrarmos no modo root do MariaDB ou MySQL e execute o comando abaixo:

sudo mysql

Neste passo, vamos ajustar a segurança. Execute o comando abaixo para alterar a forma como o root é autenticado, vamos pedir que seja solicitado uma senha extremamente segura. Afinal, você não pretende que o banco de dados do seu site seja exposto na internet e vendido no lado obscuro da internet.

Para isso execute o comando abaixo, troque o campo senha, mantendo as aspas pela senha que você desejar. Por questões de segurança, e para que o comando não gere erros posterior, utilize uma senha com no mínimo 30 caracteres, utilize sempre letras maiúsculas e até caracteres especiais. Recomendo que armazene ela em um bloco de notas ou na nuvem em seus arquivos. Dito isso, saiba que vamos precisar dela para entrar no modo root posteriormente.

Não se expante com o tamanho da senha, em questões de segurança nos dias atuais é melhor pecar pelo excesso do que ter mais trabalho com falta de segurança, não “dê vacilo”, o seu servidor estará exposto na web.

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'senha';

Caso você execute o comando e seja exibido algum erro no campo senha, saiba que certamente é a segurança da senha que não foi aceita, aumente o comprimento da senha.

Com tudo correto e aceito, execute o comando abaixo para sair:

exit;

Agora, vamos entrar no modo seguro e fazer o que precisamos. Execute o comando abaixo para isso:

sudo mysql_secure_installation

A saída será algo como o exemplo, lembre-se responder Y e N conforme o exemplo:

emanuel@cloud.sempreupdate.com.br:~ $ sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none) :

OK, successfully used password, moving on ...
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
Switch to unix_socket authentication [Y/n] n
... skipping.

You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n] y
New password:
Re-enter new password:

Password updated successfully!

Reloading privilege tables ..
.. Success!

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
.. Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
Success!
...

By default, MariaDB comes with a database named 'test' that anyone can
This is also intended only for testing, and should be removed
access.
before moving into a production environment.

Remove test database and access to it? [Y/n] y
- Dropping test database ...
Success!

- Removing privileges on test database ...
Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y

Success!

Cleaning up ...

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Pronto! A partir de instalação base da nossa VPS Nginx + PHP 8.2 + MariaDB para o WordPress está instalada. No próximo capítulo vamos para as configurações.