FEMP stack · 12 min read · Jan 26, 2026

Instalar Nginx, MariaDB e PHP (pilha FEMP) no FreeBSD 11

Neste tutorial, descreverei o processo de instalação e configuração da pilha FEMP no FreeBSD 11.x. A pilha de software FEMP é um acrônimo que se refere a um grupo de programas que geralmente são instalados em sistemas operacionais Unix/Linux e usados principalmente para implantar aplicações web dinâmicas. Neste caso, o acrônimo FEMP refere-se ao sistema operacional semelhante ao Unix FreeBSD, sobre o qual estão instalados esses aplicativos:

  • Nginx servidor web, que é um servidor web popular em rápido crescimento, usado principalmente para servir conteúdo HTML, mas também pode fornecer balanceamento de carga, alta disponibilidade ou proxy reverso para um servidor web ou para outros serviços de rede.
  • PHP interpretador de linguagem de programação dinâmica, usado no backend para manipular dados de bancos de dados e criar conteúdo web dinâmico que pode ser incluído em HTML simples. Os scripts PHP são executados apenas no lado do servidor, nunca no lado do cliente (nos navegadores).
  • MariaDB\MySQL RDBMS onde os dados são armazenados no backend, enquanto o processamento dinâmico é tratado pelo PHP. Neste tutorial, instalaremos e usaremos o sistema de gerenciamento de banco de dados relacional MariaDB, um fork comunitário do MySQL, em favor do banco de dados MySQL, que agora é de propriedade e desenvolvido pela Oracle.

REQUISITOS:

  • Uma instalação mínima do FreeBSD 11.x.
  • Um endereço IP estático configurado para uma interface de rede.
  • Uma conta regular configurada com privilégios de root ou acesso direto ao sistema via conta root.
  • Preferencialmente, um nome de domínio registrado publicamente configurado com os registros DNS mínimos (registros A e CNAME).

Passo 1 – Instalar o Banco de Dados MariaDB

No primeiro passo, instalaremos o sistema de banco de dados MariaDB, que é o componente FEMP que será usado para armazenar e gerenciar os dados dinâmicos do site. MariaDB/MySQL é um dos bancos de dados relacionais de código aberto mais utilizados no mundo em conjunto com o servidor web Nginx ou Apache. Ambos os servidores são altamente utilizados para criar e desenvolver aplicações web complexas ou sites dinâmicos. O MariaDB pode ser instalado no FreeBSD diretamente dos binários fornecidos pelos repositórios PORTS. No entanto, uma simples busca usando o comando ls na seção de bancos de dados do FreeBSD Ports revela várias versões do MariaDB, como mostrado na saída do comando a seguir. Além disso, executar o comando do Gerenciador de Pacotes pkg exibe os mesmos resultados.

ls -al /usr/ports/databases/ | grep mariadb
pkg search mariadb

Versões do MariaDB disponíveis para FreeBSD 11

Neste guia, instalaremos a versão mais recente do banco de dados MariaDB e do cliente usando o comando pkg, conforme ilustrado no trecho abaixo.

pkg install mariadb102-server mariadb102-client

Após a instalação do MariaDB no sistema, emita o seguinte comando para habilitar o servidor MySQL em todo o sistema. Além disso, certifique-se de iniciar o daemon do MariaDB conforme mostrado abaixo.

sysrc mysql_enable="YES"
service mysql-server start

Em seguida, precisaremos proteger o banco de dados MariaDB executando o script mysql_secure_installation. Ao executar o script, uma série de perguntas será feita. O objetivo dessas perguntas é fornecer um nível de segurança para o mecanismo MySQL, como configurar uma senha root para o usuário root do MySQL, remover o usuário anônimo, desabilitar o login remoto para o usuário root e excluir o banco de dados de teste. Após escolher uma senha forte para o usuário root do MySQL, responda sim a todas as perguntas, conforme ilustrado no exemplo abaixo do script. Não confunda o usuário root do banco de dados MariaDB com o usuário root do sistema. Embora essas contas tenham o mesmo nome, root, elas não são equivalentes e são usadas para propósitos diferentes, uma para administração do sistema e a outra para administração do banco de dados.

/usr/local/bin/mysql_secure_installation
NOTA: É RECOMENDADO EXECUTAR TODAS AS PARTES DESTE SCRIPT PARA TODOS OS SERVIDORES MariaDB
      EM USO DE PRODUÇÃO!  POR FAVOR, LEIA CADA ETAPA CUIDADOSAMENTE!
 
Para fazer login no MariaDB e protegê-lo, precisaremos da senha atual
para o usuário root.  Se você acabou de instalar o MariaDB, e
você ainda não definiu a senha root, a senha estará em branco,
portanto, você deve apenas pressionar enter aqui.
 
Digite a senha atual para root (pressione enter para nenhum):
OK, senha usada com sucesso, prosseguindo...
 
Definir a senha root garante que ninguém possa fazer login no MariaDB
como usuário root sem a devida autorização.
Definir senha root? [Y/n] y
Nova senha:
Reinsira a nova senha:
Senha atualizada com sucesso!
Recarregando tabelas de privilégios..
 ... Sucesso!
Por padrão, uma instalação do MariaDB tem um usuário anônimo, permitindo que qualquer um
faca login no MariaDB sem ter uma conta de usuário criada para
elas.  Isso é destinado apenas para testes e para tornar a instalação
mais suave.  Você deve removê-los antes de passar para um
environmento de produção.
Remover usuários anônimos? [Y/n] y
 ... Sucesso!
Normalmente, o root deve ser permitido apenas conectar-se a partir de 'localhost'.  Isso
garante que alguém não possa adivinhar a senha root pela rede.
Desabilitar login remoto do root? [Y/n] y
 ... Sucesso!
Por padrão, o MariaDB vem com um banco de dados chamado 'teste' que qualquer um pode
acessar.  Isso também é destinado apenas para testes e deve ser removido
antes de passar para um ambiente de produção.
Remover banco de dados de teste e acesso a ele? [Y/n] y
 - Excluindo banco de dados de teste...
 ... Sucesso!
 - Removendo privilégios no banco de dados de teste...
 ... Sucesso!
Recarregar as tabelas de privilégios garantirá que todas as alterações feitas até agora
vão ter efeito imediatamente.
Recarregar tabelas de privilégios agora? [Y/n] y**
 ... Sucesso!
Limpando...
Tudo pronto!  Se você completou todos os passos acima, sua instalação do MariaDB
deve agora estar segura.
Obrigado por usar o MariaDB!

Finalmente, após ter terminado de proteger o banco de dados MariaDB, teste se você está autorizado a realizar login local no banco de dados a partir da conta root executando o seguinte comando. Uma vez conectado ao prompt do banco de dados, basta digitar quit ou exit para sair do console do banco de dados e retornar ao prompt do console do usuário do sistema, conforme mostrado na captura de tela abaixo.

mysql -u root -p
*MariaDB> quit*

**Teste o login do banco de dados MariaDB

Executar o comando sockstat no FreeBSD revela rapidamente o fato de que o MariaDB está aberto a conexões de rede externas e pode ser acessado remotamente de qualquer rede via porta 3306/TCP.

sockstat -4 -6

Verificar socket e porta do MariaDB

Para desabilitar completamente as conexões de rede remotas ao MariaDB, você precisa forçar o socket de rede do mysql a se vincular apenas à interface loopback adicionando a seguinte linha ao arquivo /etc/rc.conf com o comando abaixo.

sysrc mysql_args="--bind-address=127.0.0.1"

Depois, reinicie o daemon do MariaDB para aplicar as alterações e execute novamente o comando sockstat para exibir o socket de rede para o serviço mysql. Desta vez, o serviço MariaDB deve escutar conexões de rede apenas no socket localhost:3306.

service mysql-server restart
sockstat -4 -6|grep mysql

MariaDB está vinculado à interface localhost

Se você está desenvolvendo uma aplicação web remota que precisa acessar o banco de dados nesta máquina, reverta as alterações feitas até agora no socket do MySQL removendo ou comentando a linha mysql_args=”–bind-address=127.0.0.1” do arquivo /etc/rc.conf e reinicie o banco de dados para refletir as alterações. Neste caso, você deve considerar outras alternativas para limitar ou desabilitar o acesso remoto ao MySQL, como executar um firewall localmente e filtrar os endereços IP dos clientes que precisam de login remoto ou criar usuários MySQL com os devidos privilégios de endereços IP para fazer login no servidor.

Passo 2 – Instalar o Servidor Web Nginx

O próximo daemon importante que instalaremos no FreeBSD para nossa pilha FEMP é o servidor web, representado pelo serviço Nginx. O processo de instalação do servidor web Nginx no FreeBSD é bastante simples. O servidor web Nginx pode ser instalado a partir dos binários fornecidos pelos Ports do FreeBSD 11.x. Uma simples busca nos repositórios Ports na seção www pode mostrar uma lista das versões pré-compiladas disponíveis para o software Nginx, como mostrado no trecho de comando abaixo.

ls /usr/ports/www/ | grep nginx

Emitir o comando de gerenciamento de pacotes pode exibir os mesmos resultados, como mostrado na imagem abaixo.

pkg search –o nginx

Lista de versões do Nginx no FreeBSD

Para instalar a versão mais comum do Nginx no FreeBSD, execute o comando abaixo. Durante a instalação do pacote binário, o gerenciador de pacotes perguntará se você concorda em baixar e instalar o pacote Nginx. Normalmente, você deve digitar a palavra sim ou y no prompt para iniciar o processo de instalação. Para evitar o prompt, adicione a flag –y ao emitir o comando: pkg –y install nginx.

pkg install nginx

Instalar Nginx no FreeBSD

Após o software do servidor web Nginx ter sido instalado em seu sistema, você deve habilitar e executar o serviço emitindo os comandos abaixo.

sysrc nginx_enable="yes"
service nginx start

Você pode executar o comando sockstat para verificar se o serviço Nginx está iniciado em seu sistema e em quais sockets de rede ele se vincula. Normalmente, ele deve se vincular por padrão ao socket TCP :80. Você pode usar o filtro de linha de comando grep para exibir apenas os sockets que correspondem ao servidor *nginx.

sockstat -4 -6 | grep nginx

Para visitar a página web padrão do Nginx, abra um navegador em um computador na sua rede e navegue até o endereço IP do seu servidor via protocolo HTTP. Caso você tenha registrado um nome de domínio ou esteja usando um servidor DNS local em suas instalações, você pode escrever o nome de domínio totalmente qualificado da sua máquina ou o nome de domínio no campo URI do navegador. Uma mensagem de título dizendo “Bem-vindo ao nginx!” juntamente com algumas linhas HTML deve ser exibida em seu navegador, como mostrado na captura de tela a seguir.

Página de boas-vindas do Nginx

O local onde os arquivos web são armazenados para o Nginx no FreeBSD 11.x é o diretório /usr/local/www/nginx/. Este diretório é um link simbólico para o diretório nginx-dist. Para implantar um site, copie os arquivos html ou scripts php para este diretório. Para alterar o diretório webroot padrão do Nginx, abra o arquivo de configuração do Nginx do diretório /usr/local/etc/nginx/ e atualize a linha da declaração root conforme mostrado no exemplo abaixo.

nano /usr/local/etc/nginx/nginx.conf

Este será o novo caminho do webroot para o Nginx:

*root       /usr/local/www/new_html_directory;*

Alterar diretório raiz do Nginx

Passo 3 – Instalar a Linguagem de Programação PHP

Por padrão, o servidor web Nginx não pode analisar diretamente scripts PHP, o Nginx precisa passar o código PHP através do gateway FastCGI para o daemon PHP-FPM, que interpreta e executa os scripts PHP. Para instalar o daemon PHP-FPM no FreeBSD, procure por pacotes binários pré-compilados de PHP disponíveis emitindo os comandos abaixo.

ls /usr/ports/lang/ | grep php
pkg search –o php

Dentre a multitude de versões de PHP disponíveis nos repositórios Ports do FreeBSD, escolha instalar a versão mais recente do interpretador PHP, atualmente a versão PHP 7.1, emitindo o seguinte comando.

pkg install php71

Para instalar algumas extensões PHP extras, que podem ser necessárias para implantar aplicações web complexas, emita o comando abaixo. Uma lista de extensões PHP oficialmente suportadas pode ser encontrada visitando o seguinte link: http://php.net/manual/en/extensions.alphabetical.php

Se você está planejando construir um site baseado em um sistema de gerenciamento de conteúdo, revise a documentação do CMS para descobrir os requisitos para o seu sistema, especialmente quais módulos ou extensões PHP são necessários.

php71-mcrypt mod_php71 php71-mbstring php71-curl php71-zlib php71-gd php71-json

Como estamos executando um servidor de banco de dados em nossa configuração, também devemos instalar a extensão do driver de banco de dados PHP, que é usada pelo interpretador PHP para se conectar ao banco de dados MariaDB.

pkg install php71-mysqli

Em seguida, atualize o usuário e grupo do PHP-FPM para corresponder ao usuário em tempo de execução do Nginx editando o arquivo de configuração do PHP-FPM. Altere as variáveis de linha de usuário e grupo para www, conforme mostrado no trecho abaixo.

cp /usr/local/etc/php-fpm.d/www.conf{,.backup}
nano /usr/local/etc/php-fpm.d/www.conf

Altere as seguintes linhas para ficarem assim.

user = www  
group = www

**Alterar usuário PHP

Por padrão, o daemon Nginx é executado com os privilégios do usuário de sistema ‘nobody‘. Altere o usuário em tempo de execução do Nginx para corresponder ao usuário em tempo de execução do PHP-FPM, editando o arquivo /usr/local/etc/nginx/nginx.conf e atualizando a seguinte linha:

user www;

Usuário www

Por padrão, o daemon PHP-FPM no FreeBSD abre um socket de rede na porta TCP localhost:9000 em estado de escuta. Para exibir este socket, você pode usar o comando sockstat conforme mostrado no exemplo abaixo.

sockstat -4 -6| grep php-fpm

Verificar socket do php-fpm

Para que o servidor web Nginx troque scripts PHP com o gateway PHP FastCGI no socket de rede 127.0.0.1:9000, abra o arquivo de configuração do Nginx e atualize o bloco PHP-FPM conforme mostrado no exemplo abaixo.

Exemplo de gateway PHP FastCGI para Nginx:

        location ~ \.php$ {  
        root               /usr/local/www/nginx;  
        fastcgi_pass   127.0.0.1:9000;  
        fastcgi_index  index.php;  
        fastcgi_param SCRIPT_FILENAME $request_filename;      
        include        fastcgi_params;  
               }

Configuração PHP do Nginx

Depois de fazer todas as alterações acima, crie um arquivo de configuração para PHP com base no arquivo de produção padrão emitindo o seguinte comando. Você pode alterar as configurações de tempo de execução do PHP editando as variáveis presentes no arquivo php.ini.

ln -s /usr/local/etc/php.ini-production /usr/local/etc/php.ini

Finalmente, para aplicar todas as alterações feitas até agora, habilite o daemon PHP-FPM em todo o sistema e reinicie os serviços PHP-FPM e Nginx emitindo os comandos abaixo.

sysrc php_fpm_enable=yes
service php-fpm restart

Teste as configurações do nginx para erros de sintaxe:

ginx –t   
service nginx restart

Testar sintaxe do nginx e reiniciar nginx

Para obter as informações atuais do PHP disponíveis para sua pilha FEMP no FreeBSD, crie um arquivo phpinfo.php no diretório raiz do documento do seu servidor emitindo o seguinte comando.

echo "" | tee /usr/local/www/nginx/phpinfo.php

Em seguida, abra um navegador e navegue até a página phpinfo.php visitando o nome de domínio ou endereço IP público do seu servidor seguido do arquivo /phpinfo.php, conforme ilustrado na captura de tela abaixo.

Saída do PHPinfo

É isso! Você instalou e configurou com sucesso a pilha FEMP no FreeBSD 11. O ambiente agora está pronto e totalmente funcional para começar a implantar aplicações web dinâmicas em suas instalações.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.