Explicarei o passo a passo, da forma mais completa e detalhada possível para implantarmos o LAMP em um VPS (Servidor Virtual Privado) com Linux UBUNTU 16.04. Utilizaremos linhas de comandos executados dentro de um terminal LINUX, fique calmo, seguindo o passo a passo ficará bem fácil.

Neste tutorial vamos configurar o Apache + MySql + PhpMyAdmin + PHP 7.0 + SSL, realizaremos também algumas configurações básicas para tornar sua instalação mais segura.

Para este Tutorial utilizarei a DigitalOcean, que oferece servidores virtuais privados com planos a partir de $5 dólares mês. Cadastre-se através do Link para receber Bônus em crédito e poder testar a plataforma.

Clique Aqui para se Cadastrar!

Segue alguns links que podem ser úteis antes de inciarmos as configurações deste tutorial.

PlayList com todos os Vídeos

CONTINUE APÓS PUBLICIDADE


ÍNDICE

  1. Primeiros Comandos SSH | Update e HostName
  2. Criar um usuário comum NON-ROOT | Linux
  3. Instalar o Apache 2.4 + PHP 7 + MySql (LAMP)
  4. Instalar o PhpMyAdmin para Gerenciar o MySql na Web
  5. Bloquear/Permitir o PhpMyAdmin apenas para IPs específicos
  6. Criar Usuário e banco de dados no MySql por SSH
  7. Configurando/Editando seu php.ini (Básico) | Ubuntu 16.04 + Apache
  8. Como configurar o Multi Domínios Ubuntu 16.04
  9. Configurar o Let’s Encrypt | SSL Grátis em seu VPS
  10. Como alterar a porta padrão do SSH (22)
  11. Desabilitar conexão por senha no SSH | Somente com chave
  12. Conectando ao SFTP do seu VPS para transferir arquivos | FileZilla

1. PRIMEIROS COMANDOS SSH | UPDATE E HOSTNAME

Legenda:
# Comandos executados como Root
$ Comandos Executados como Non-Root

Ao copiar o código, não utilizar # ou $

Atualizando o Sistema

# sudo apt-get update && sudo apt-get -y upgrade

Alterar o nome do servidor

# hostname nomeseuservidor

2. CRIAR UM USUÁRIO COMUM NON-ROOT

Criar um novo Usuário

# adduser novousuario

Crie uma senha e pressione ENTER (Não será mostrada a digitação de senha por segurança)
Confirme a senha e pressione ENTER
– Informe o nome do usuário e pressione ENTER
– Basta pressionar ENTER nas próximas opções
– Confirme a inclusão pressionando “Y” e ENTER

Permissão SUDO para o novo usuário

# sudo usermod -aG sudo novousuario

Realizar login com o novo usuário

# sudo su novousuario

Voltar diretório para RAIZ

$ cd ~

3. INSTALAR O APACHE + PHP 7.0 + MYSQL (LAMP)

Reparem que agora já não estamos mais como root, o sinal passou a ser “$

Instalando o Maria DB Server (MySql)

$ sudo apt–get install mariadb–server –y

[sudo] informe a senha criada no passo 2 para o novo usuário e pressione enter (Não será mostrada a digitação de senha por segurança) e aguarde a instalação terminar.

Segurança MySql

O comando mysql secure installation é muito importante e deve ser usado no servidor de produção, o assistente irá nos guiar através de algumas opções que vem configuradas por padrão.

$ sudo mysql_secure_installation

Este é o momento para criamos uma senha para o usuário ROOT no MySql.
Recomendo utilizar senhas seguras, anote sempre essas senhas durante a instalação, Clique Aqui para gerar senhas seguras.

As perguntas serão parecidas como as abaixo:

– Enter current password for root (enter for none): Pressione Enter
– Set root password? [Y/n] <— Y
– New password: <— Crie uma nova senha
– Re–enter new password:<— Confirme a nova senha

Responda Y e pressione ENTER para o restante das opções.

– Reload privilege tables now? [Y/n] <— Y
– Remove anonymous users? [Y/n] <— Y
– Disallow root login remotely? [Y/n] <— Y
– Reload privilege tables now? [Y/n] <— Y

Instalando o Apache

$ sudo apt–get install apache2 –y

Abra seu navegador e digite o IP do seu servidor (Pode ser encontrado no Droplet da DigitalOcean, utilizamos esse IP para se conectar ao SSH)

Uma página do Apache deve ser carregada, indicando que a instalação ocorreu com sucesso.

Reiniciando o Apache

$ sudo service apache2 restart

Instalando PHP 7.0

$ sudo apt–get –y install php7.0 libapache2–mod–php7.0

Instalando algumas dependências do PHP

$ sudo apt–get install php7.0–mysql php7.0–zip php7.0–curl php7.0–json php–memcached php7.0–mcrypt php7.0–sqlite3 –y

Instalando o ZIP

$ sudo apt–get install zip –y

Ativando o mcrypt

$ sudo phpenmod mcrypt

Reiniciando o Apache

$ sudo service apache2 restart

4. INSTALAR O PHPMYADMIN | GERENCIAR O MYSQL NA WEB

Instalar o PhpMyAdmin

$ sudo apt–get install phpmyadmin –y

Selecione “Apache2” pressionando a barra de espaço no teclado e pressione ENTER

Próxima tela:
“Configure database for phpmyadmin with dbconfig-common?”
Selecione Sim e Enter

Próxima tela:
Crie uma senha para o usuário “phpmyadmin”
Use uma senha forte novamente! Clique Aqui para gerar senhas seguras.

Pressione Enter, confirme a senha e Enter para finalizar a instalação

Até o momento devemos ter anotado os seguintes dados:

NON-ROOT
Usuário: novousuario
Senha: Senha Criada

MySql
Usuário: Root
Senha: Senha criada

Usuário: phpmyadmin
Senha: Senha criada

CONTINUE APÓS PUBLICIDADE


5. BLOQUEAR/PERMITIR O PHPMYADMIN APENAS PARA IPS ESPECÍFICOS

O PhpMyAdmin é sempre alvo de muitos ataques, por isso, devemos criar uma ação simples para adicionar uma camada extra de segurança. Iremos permitir o acesso apenas a partir de determinados IPs, será necessário alterar essa configuração a cada mudança de IP por parte do seu provedor. Sim, realmente é chato, mas o processo é simples e garante uma segurança extra para seus bancos de dados, permitindo o acesso apenas através do seu endereço IP.

Edite o Arquivo apache.conf

$ sudo nano /etc/phpmyadmin/apache.conf

Dentro de: <Directory /usr/share/phpmyadmin>

Insira as seguintes linhas:

Order Deny,Allow
Deny from All
Allow from 158.144.152.33

(Substitua “158.144.152.33” pelo seu IP local, saiba seu IP Clicando Aqui)

Adicione mais linhas “Allow from” para liberar outros IPs de acesso

O Resultado final será parecido com isso:

LAMP UBUNTU 16.04 - VITOR FAUSTINO

Após inserir as linhas e seu IP
CTRL +X para sair | “Y” para salvar | ENTER para gravar

Alterar URL (Aliases) de acesso ao PhpMyAdmin (Opcional)

Para evitar problemas relacionados a Bots e Invasores que continuamente estão analisando servidores que utilizam a url padrão do PhpMyAdmin é recomendável que você altere a URL para outro endereço.

Vamos editar o Arquivo apache.conf

$ sudo nano /etc/phpmyadmin/apache.conf

Altere a Linha “Alias /phpmyadmin/usr/share/phpmyadmin”

Neste exemplo abaixo, estou alterando “phpmyadmin” para “dircustom” utilize o nome que achar melhor.

# phpMyAdmin default Apache configuration
Alias /dircustom/usr/share/phpmyadmin

Após alterar as linhas
CTRL +X para sair | “Y” para salvar | ENTER para gravar

Reiniciando o Apache

$ sudo service apache2 restart

6. CRIAR USUÁRIO E BANCO DE DADOS NO MYSQL POR SSH

Vamos acessar o MySql e criar um novo Banco de Dados e um Usuário, não se esqueça de alterar os campos “usuário“, “senha“, “nomedobanco“. Mantenha dentro das aspas simples, altere somente o texto.

Acessando o MySql

$ sudo mysql -u root -p

Informe a senha do usuário Root

Criar Usuário

CREATE USER ‘usuario‘@’localhost’ IDENTIFIED BY ‘senha‘;

Criar Banco de Dados

CREATE DATABASE nomedobanco;

Privilégios

GRANT ALL PRIVILEGES ON nomedobanco.* TO ‘usuario‘@’localhost’;

Recarregar Privilégios

FLUSH PRIVILEGES;

Sair

exit

Faça um teste acessando o PhpMyAdmin “http://seudominio.com.br/phpmyadmin”, (Substitua phpmyadmin para o diretório personalizado caso tenha alterado no passo opcional “5”. entre com o usuário e senha criado.

7. CONFIGURANDO SEU PHP.INI (BÁSICO) | UBUNTU 16.04 + APACHE

Editar o php.ini (PHP 7.0)

$ sudo nano /etc/php/7.0/apache2/php.ini

Procure pelos termos que não estão comentados com “;” e altere conforme valores em Vermelho.

display_errors = Off
allow_url_fopen = Off
upload_max_filesize = 20M
max_file_uploads = 100
memory_limit = 256M
post_max_size = 20M
max_execution_time = 90

Dica: Pressione “CTRL + W” para localizar termos

Após alterar as linhas
CTRL +X para sair | “Y” para salvar | ENTER para gravar

Voltar diretório para RAIZ

$ cd ~

Reiniciar Apache

$ sudo service apache2 restart

8. CONFIGURAR O MULTI DOMÍNIOS LINUX UBUNTU + APACHE

Realize esse procedimento para cada site que for configurado em seu VPS, alterando para o domínio desejado.

Criar diretório do Site (Altere seudominio.com.br)

$ sudo mkdir -p /var/www/seudominio.com.br/public_html

Definir Usuário como proprietário do diretório (Altere seudominio.com.br e seuusuario)

$ sudo chown -R seuusuario:www-data /var/www/seudominio.com.br/public_html

Permissão ao diretório WWW

$ sudo chmod -R 755 /var/www

Criar um HTML para teste (Altere seudominio.com.br)

$ sudo echo “Site seudominio.com.br – OK!” > /var/www/seudominio.com.br/public_html/index.html

Criando e Configurando seu arquivo .conf (Altere seudominio.com.br)

$ sudo nano /etc/apache2/sites-available/seudominio.com.br.conf

Cole as informações abaixo (Altere seudominio.com.br)

ServerAdmin [email protected]seudominio.com.br
ServerName seudominio.com.br
ServerAlias www.seudominio.com.br
DocumentRoot /var/www/seudominio.com.br/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Após inserir as linhas
CTRL +X para sair | “Y” para salvar | ENTER para gravar

Ativando seu novo site (Altere seudominio.com.br)

$ sudo a2ensite seudominio.com.br.conf

Desativando a configuração padrão

$ sudo a2dissite 000–default.conf

Ativação de Módulos

$ sudo a2enmod headers
$ sudo a2enmod rewrite
$ sudo a2enmod expires

Reiniciar Apache

$ sudo service apache2 restart

Editando o arquivo Hosts

$ sudo nano /etc/hosts

Adicione um nova linha abaixo de 127.0.0.1, troque a numeração 98.143.156.87 pelo IP do seu servidor e seu domínio:

Ex: 98.143.156.87 seudominio.com.br

Ficando algo parecido com a imagem abaixo:

LAMP UBUNTU 16.04 - VITOR FAUSTINO

Após inserir as linhas
CTRL +X para sair | “Y” para salvar | ENTER para gravar

Reiniciar o Apache

$ sudo service apache2 restart

CONTINUE APÓS PUBLICIDADE


9. CONFIGURAR O LET’S ENCRYPT | SSL GRÁTIS EM SEU VPS

O projeto Let’s Encrypt permite gerar um certificado SSL gratuitamente para seu site ou loja virtual, se quiser saber mais sobre o projeto Clique Aqui.

Para que todo processo funcione, seu domínio deve estar apontado para o IP do seu servidor, bem como aliases “www”, o arquivo “hosts” deve estar configurado (Passo 8). E DNS propagados (Geralmente em até 24 horas).

Instalação – Adicionando o Repositório

$ sudo add-apt-repository ppa:certbot/certbot

Se solicitado, pressione Y e ENTER para confirmar a atualização dos Pacotes

Update

$ sudo apt update

Instalar Python

$ sudo apt install python-certbot-apache

Se solicitado, pressione Y e ENTER

Obter certificado SSL

Agora vamos obter o certificado para nosso domínio. Se você quiser usar o prefixo “www”, será necessário obter um certificado para ele também. Mesmo que você esteja apenas redirecionando www.seudominio.com.br para seudominio.com.br usando o .htaccess. Use “-d” para adicionar mais domínios ou sub-domínios, se desejar.

Lembre-se de alterar os comandos para seu domínio “seudominio.com.br

$ sudo certbot –apache -d seudominio.com.br -d www.seudominio.com.br

Retorno de Mensagem: Informe um e-mail de contato para receber alertas urgentes de renovações e segurança. Ou pressione “C” para não informar. “Recomendo que coloquem um e-mail nesta opção”.

Retorno de Mensagem: Aceite dos termos de serviço.
Pressione A e ENTER para aceitar e continuar.

Retorno de Mensagem: Compartilhe seu e-mail com a EFF.
Pressione N e ENTER para não compartilhar seu e-mail.

Retorno de Mensagem: Redirecionar HTTP para HTTPS

Você poderá escolher entre ativar o acesso http e https ou forçar todas as solicitações para “https”. Normalmente, é mais seguro exigir https, a não ser que você tenha necessidades específicas de tráfego http não criptografado.

Não Redirecionar: Pressione “1” e “ENTER”
Forçar HTTPS: Pressione “2” e “ENTER” (Recomendado)

Renovando Certificado automaticamente

Os certificados “Let’s Encrypt” expiram a cada 90 dias, eles precisam ser renovados periodicamente. Abaixo segue comando para automatizar o processo de renovação automática, dessa forma o Certbot será executado automaticamente duas vezes por dia e renovará qualquer certificado que esteja no prazo de trinta dias.

$ sudo certbot renew –dry-run

10. COMO ALTERAR A PORTA PADRÃO DO SSH (22) | UBUNTU 16.04

Uma questão de segurança muito importante, é alterar a porta padrão do SSH (22) para um porta aleatória disponivel, esse processo é recomendado, se não houver interesse pule para o próximo passo.

Importante: Antes de alterar a porta SSH, realize um SnapShot do seu servidor e confirme se seu servidor possui um firewall e libere a porta desejada antes de realizar o procedimento abaixo. RISCO DE SER TRANCADO PARA FORA DO SERVIDOR caso o firewall esteja bloqueando a nova porta.

Editando a configuração do SSH

$ sudo nano /etc/ssh/sshd_config

Localize a linha Port 22 e altere para porta 43000 ou qualquer porta de sua preferencia.
Observação, se a linha estiver dessa forma #Port 22, remova o comentário #.

Reiniciar o SSH

$ sudo service sshd restart

Será necessário desconectar e se conectar novamente alterando a porta do Putty para a porta configurada no arquivo, no caso aqui a 43000.

11. DESABILITAR CONEXÃO POR SENHA NO SSH | SOMENTE COM CHAVE

Como criamos um usuário NON-ROOT com permissão SUDO, por padrão esse usuário tem permissão para realizar login através do SSH, seria ideal mantermos o acesso apenas com chave SSH por questões de segurança, então caso deseje desabilitar o acesso por senha de todos usuários siga esses passos, caso contrario, pule para a próxima etapa.

Editando a configuração SSH

$ sudo nano /etc/ssh/sshd_config

Localize a opção #PasswordAuthentication no e remova o comentário apagando “#

Dica: Pressione “CTRL + W” para localizar termos

Ex.
Antes: #PasswordAuthentication no
Depois: PasswordAuthentication no

Após alterar as linhas
CTRL +X para sair | “Y” para salvar | ENTER para gravar

Reiniciar o SSH

$ sudo service sshd restart

Finalizamos aqui nossa instalação, basta acessarem o SFTP utilizando seu Cliente favorito.

Não se esqueçam, se forem se cadastrar na DigitalOcean, Clique Aqui.

Um Abraço a todos e sucesso.