Pesquisa de site

Como instalar pilha Nginx, MariaDB e PHP (FEMP) no FreeBSD


Este tutorial irá guiá-lo sobre como instalar e configurar o FBEMP na versão mais recente do FreeBSD 11.x. FBEMP é um acrônimo que descreve a seguinte coleção de software:

FreeBSD 11.1 distribuição semelhante a Unix, servidor web Nginx, sistema de gerenciamento de banco de dados relacional MariaDB (um fork da comunidade do MySQL) e linguagem de programação dinâmica PHP que roda no lado do servidor.

Requisitos

  1. Instalação do FreeBSD 11.x
  2. 10 coisas a fazer após a instalação do FreeBSD

Etapa 1: Instale o servidor Web Nginx no FreeBSD

1. O primeiro serviço que instalaremos para nossa pilha FBEMP no FreeBSD é o servidor web, representado por Nginx >software.

O servidor web Nginx tem mais pacotes pré-compatíveis disponíveis em FreeBSD 11.x PORTS. Para obter uma lista de binários Nginx dos repositórios Ports, emita os seguintes comandos no terminal do seu servidor.

ls /usr/ports/www/ | grep nginx
pkg search -o nginx

2. Nesta configuração específica, instalaremos a versão principal do pacote do Nginx emitindo o comando abaixo. O gerenciamento de pacotes pkg perguntará se você deseja prosseguir com a instalação do pacote nginx. Responda sim (y na linha de comando) para iniciar o processo de instalação.

pkg install nginx

3. Após a instalação do pacote do servidor web Nginx em seu sistema, execute os seguintes comandos para ativar o daemon em todo o sistema e iniciar o serviço em seu sistema.

sysrc nginx_enable="yes"
service nginx start

4. Em seguida, usando o comando sockstat, verifique os soquetes de rede do serviço Nginx, se eles estão vinculados à porta 80/TCP, emitindo o comando abaixo comando. A saída do comando Sockstat será canalizada através do utilitário grep para reduzir os resultados retornados apenas para a string nginx.

sockstat -4 | grep nginx

5. Por fim, abra um navegador em um computador desktop em sua rede e visite a página da web padrão do Nginx via protocolo HTTP. Escreva o FQDN da sua máquina ou do seu nome de domínio ou o endereço IP do seu servidor no URL do navegador arquivado para solicitar a página padrão do servidor web Nginx. A mensagem “Bem-vindo ao nginx!” deve ser exibida em seu navegador, conforme ilustrado na imagem abaixo.

http://yourdomain.com
http://your_server_IP
http://your_machine_FQDN

6. O diretório weboot padrão para o conteúdo da web Nginx está localizado no caminho absoluto do sistema /usr/local/www/nginx/. Neste local você deve criar, copiar ou instalar arquivos de conteúdo web, como arquivos .html ou .php, para o seu site.

Para alterar esse local, edite o arquivo de configuração principal do nginx e altere a diretiva root para refletir seu novo caminho webroot.

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

Aqui, pesquise e atualize a seguinte linha para refletir seu novo caminho webroot:

root	/path/to/new/webroot;

Passo 2: Instale o PHP no FreeBSD

7. Ao contrário do servidor Apache HTTP, o Nginx não tem a capacidade de processar código PHP nativamente. Em troca, o servidor web Nginx passa solicitações PHP para um interpretador PHP, como o daemon php-fpm FastCGI, que inspeciona e executa o código. O código resultante é então retornado ao Nginx, que remonta o código de volta ao formato html solicitado e envia o código posteriormente ao navegador do visitante.

Os repositórios do FreeBSD 11.x Ports oferecem múltiplas versões binárias para a linguagem de programação PHP, como PHP 5.6, PHP 7.0 e PHP 7.1< lançamentos. Para exibir todas as versões pré-compiladas do PHP disponíveis no FreeBSD 11.x, execute os comandos abaixo.

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

8. Você pode optar por instalar qualquer versão do PHP que achar mais adequada para a aplicação web executada em seu sistema. No entanto, neste guia instalaremos a versão mais recente do PHP.

Para instalar a versão PHP 7.1 e alguns módulos importantes do PHP necessários para diversos aplicativos da web, execute o seguinte comando.

pkg install php71 php71-mysqli php71-mcrypt php71-zlib php71-gd php71-json mod_php71 php71-mbstring php71-curl

9. Depois de instalar os pacotes PHP em seu sistema, abra o arquivo de configuração PHP-FPM para Nginx e ajuste os valores de usuário e grupo para corresponder ao valor no tempo de execução do Nginx usuário, que é www. Primeiro, faça um backup do arquivo com o comando abaixo.

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

Em seguida, abra o arquivo e atualize as seguintes linhas conforme apresentado no exemplo abaixo.

user = www
group = www

10. Além disso, crie um arquivo de configuração PHP usado para produção emitindo o comando abaixo. Neste arquivo você pode fazer alterações personalizadas que serão aplicadas ao interpretador PHP em tempo de execução.

cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

Por exemplo, altere a configuração date.timezone do interpretador PHP para atualizar a localização física da sua máquina, conforme mostrado no exemplo abaixo. A lista de fuso horário do PHP pode ser encontrada aqui: http://php.net/manual/en/timezones.php.

vi /usr/local/etc/php.ini

Adicione o seguinte fuso horário (defina o fuso horário de acordo com o seu país).

date.timezone = Europe/London

Você também pode ajustar outras variáveis PHP, como o tamanho máximo do arquivo enviado, que pode ser aumentado modificando os valores abaixo:

upload_max_filesize = 10M
post_max_size = 10M

11. Depois de fazer as configurações personalizadas para PHP, habilite e inicie o daemon PHP-FPM para aplicar as novas configurações emitindo os comandos abaixo.

sysrc php_fpm_enable=yes
service php-fpm start

12. Por padrão, o daemon PHP-FPM no FreeBSD se liga a um soquete de rede local na porta 9000/TCP. Para exibir os soquetes de rede PHP-FPM execute o seguinte comando.

sockstat -4 -6| grep php-fpm

13. Para que o servidor web Nginx passe os scripts PHP para o servidor gateway FastCGI, que está escutando no soquete 127.0.0.1:9000, abra o arquivo de configuração principal do Nginx e adicione o seguinte bloco de código conforme ilustrado no exemplo abaixo.

vi /usr/local/etc/nginx/nginx.conf

Bloco de código 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;
        	}

14. Para visualizar as informações atuais do PHP para o seu servidor, crie um arquivo info.php no caminho weboot do Nginx emitindo o seguinte comando.

echo "<?php phpinfo(); ?>" | tee /usr/local/www/nginx/info.php

15. Em seguida, teste e reinicie o daemon Nginx para aplicar as configurações do PHP FastCGI e visite a página info.php em um navegador.

nginx -t # Test nginx configuration file for syntax errors
service nginx restart

Substitua o endereço IP ou nome de domínio nos links abaixo de acordo. A página de informações do PHP deve exibir informações conforme ilustrado na imagem abaixo.

http://yourdomain.com/info.php
http://server_IP-or-FQDN/info.php

Etapa 3: Instale o MariaDB no FreeBSD

16. O último componente que falta na sua pilha FEMP no banco de dados. MariaDB/MySQL é um dos softwares RDBMS de código aberto mais associados ao servidor web Nginx usado para implantação de sites dinâmicos.

Na verdade, o MariaDB/MySQL é um dos bancos de dados relacionais mais utilizados no mundo. Pesquisando em Portas do FreeBSD, você pode encontrar múltiplas versões do MariaDB/MySQL.

Neste guia instalaremos o banco de dados MariaDB, que é uma bifurcação comunitária do banco de dados MySQL. Para procurar versões disponíveis do MariaDB, emita os seguintes comandos no terminal.

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

17. Para instalar a versão mais recente do servidor de banco de dados MariaDB, execute o seguinte comando. Você também deve instalar o módulo de driver de banco de dados relacional PHP usado por scripts PHP para conexão com MySQL.

pkg install mariadb102-server php71-mysqli

18. Após a instalação do banco de dados, habilite o daemon MySQL e inicie o serviço de banco de dados executando os seguintes comandos.

sysrc mysql_enable="YES" 
service mysql-server start

19. Além disso, certifique-se de reiniciar o daemon PHP-FPM para carregar a extensão do driver MySQL.

service php-fpm restart
20. On the next step, secure MariaDB database by launching mysql_secure_installation script. Use the below sample of the installation script in order to answer the questions. Basically, say yes (y) for all asked questions to secure the database and type a strong password for MySQL root user.
/usr/local/bin/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
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none):
OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set 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
access.  This is also intended only for testing, and should be removed
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!

21. Para testar a conexão do banco de dados MariaDB no console, execute o comando abaixo.

mysql -u root -p -e "show status like ‘Connections’"

22. Para proteger ainda mais o MariaDB, que por padrão escuta conexões de rede de entrada no soquete 0.0.0.0:3306/TCP, emita o comando abaixo para forçar o serviço para vincular a interface de loopback e proibir completamente o acesso remoto. Depois, reinicie o serviço MySQL para aplicar a nova configuração.

sysrc mysql_args="--bind-address=127.0.0.1"
service mysql-server restart

Verifique se a ligação localhost foi aplicada com sucesso executando o comando netstat conforme mostrado no exemplo abaixo.

netstat -an -p tcp

Isso é tudo! Você instalou com sucesso o servidor web Nginx, o banco de dados relacional MariaDB e a linguagem de programação do lado do servidor PHP no FreeBSD. Agora você pode começar a construir páginas da web dinâmicas para fornecer conteúdo da web aos visitantes.