
Definições:
- NGINX (Engine X) ⇒ Servidor WEB open source e proxy reverso para os protocolos HTTP, SMTP, POP3 e IMAP
- PHP7 ⇒ Linguagem de programação adequada especialmente para o desenvolvimento web.
- MariaDB ⇒ Servidor de banco de dados baseado no MYSQL.
Procedimentos:
Passo 1: Atualize os componentes do Ubuntu 16 (pacotes, kernel, patch de segurança):
Passo 2 – Altere o nome do host da sua máquina caso necessário:
Você pode alterar o nome do host sem precisar reiniciar a máquina com o comando abaixo, para terminar o tutorial:
Mas para que o mesmo permaneça fixo e necessário alterar os arquivos de hosts:
Passo 3 – Instale os seguintes utilitários, para facilitar o gerenciamento do servidor:
- net-tools ⇒ Pacote que inclui ferramentas para controlar o sub-sistema de rede do kernel linux.
- wget ⇒ Utilitário para recuperar arquivos da web.
- curl ⇒ Ferramenta de linha de comando para transferir dados com sintaxe de URL.
Passo 4 – Instalação do servidor NGINX a partir do repositório oficial:
Poderá ser utilizado os comandos abaixo apara verificar se NGINX está escutando na porta 80.
Poderá verifcar os status do daemon NGINX
Passo 5 – Ativando o protocolo HTTP/2.0 no nginx:
Todos os navegadores modernos (Chrome, Firefox, Edget 14+) suportam este protocolo.
Para habilitar no NGINX é necessário algumas alterações no arquivo de configuração.
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
#server_name www.domain.tld;
server_name _;
root /var/www/html;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
#SSL Certificates
ssl_certificate "/etc/nginx/ssl/cert.pem";
ssl_certificate_key "/etc/nginx/ssl/privekey.pem";
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000;
#includeSubDomains" always;
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args $uri/ =404;
}
set $cache_uri $request_uri;
location ~ /.well-known {
allow all;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
Passo 6 – Gerando as chaves TLS/SSL:
Crie um diretório onde serão armazenadas as chaves de segurança:
Gere suas chaves de segurança
Gerando a criptografia troca de chaves de Diffie-Hellman, um pouco lento :), para a gerar:
Passo 7 – Finalmente o próximo passo e habilitar sua configuração junto ao nginx:
Teste a sintaxe dos arquivos de configuração para verificar se ficou tudo certo, caso contrário reveja os passos:
Reinicie seu servidor web
Verifique se o NGINX está escutando a porta 443.
Você poderá testar seu o protocolo HTTP/2.0 neste link.
Passo 8 – Instalação do PHP7:
Vamos instalar o php-fpm (FastCGI) a partir do repositório oficial
Você pode querer instalar alguns outros módulos para PHP, pois sua aplicação pode necessitar disso, exemplo caso queira utilizar o MYSQL com PHP é necessário instalar o modulo php7.0-mysql.
Você pode utilizar o comando apt search php7.0, para localizar os módulos que necessita, abaixo estamos instalando os módulos que precisamos:
Verifique se existe o bloco de configuração abaixo no seu arquivo /etc/nginx/sites-available/default-ssl
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
Abra o arquivo nano php.ini
e altere as seguintes linhas
; descomente esta linha e altere o valor
cgi.fix_pathinfo=0
;Você poderá encontrar os fusos horários disponíveis em (/usr/share/zoneinfo)
date.timezone="Brazil/East"
Passo 9 – Instalação MariaDB:
Finalmente por último para completar nosso servidor instalação do servidor de banco de dados MariaDB, utilizaremos o repositório oficial
Por padrão uma conta de root ou com privilégios root pode acessar o banco de dados sem fornecer uma senha, podemos alterar isso para ele passe a exigir.

MariaDB › use mysql;
MariaDB › update user set plugin='' where User='root';
MariaDB › flush privileges;
MariaDB › exit
Enter current password for root (enter for none): ⇒ pressionar enter
Set root password? [Y/n] ⇒ y
New password:⇒ Digite a nova senha root aqui
Re-enter new password: ⇒ Repetir a senha root
Remove anonymous users? [Y/n] ⇒ y
Disallow root login remotely? [Y/n] ⇒ y
Reload privilege tables now? [Y/n] ⇒ y
mysql -uroot -p -e 'show databases'

Pronto, agora temos instalado um servidor web NGINX, um servidor de banco de dados MariaDB e linguagem para programação PHP, agora podemos criar nossos sites dinâmicos ou aplicativos para os visitantes.