Pesquisa de site

Como instalar a pilha Linux, Apache, MySQL, PHP (LAMP) no Ubuntu 16.04


Introdução

A pilha LAMP é um conjunto de software de código aberto que normalmente é instalado em conjunto para permitir que um servidor hospede sites dinâmicos e aplicativos da web. Este termo é um acrônimo que representa o sistema operacional Linux, com o servidor web Apache. Os dados do site são armazenados em um banco de dados MySQL e o conteúdo dinâmico é processado por PHP.

Neste guia, obteremos uma pilha LAMP instalada em um servidor Ubuntu 16.04. O Ubuntu cumprirá nosso primeiro requisito: um sistema operacional Linux.

Pré-requisitos

Antes de começar com este guia, você deve ter uma conta de usuário separada, não root, com privilégios sudo configurados em seu servidor. Você pode aprender como fazer isso concluindo as etapas 1–4 em nosso tutorial inicial de configuração do servidor para o Ubuntu 16.04.

Passo 1 — Instalando o Apache e ajustando o firewall

O servidor web Apache está entre os servidores web mais populares do mundo. Está bem documentado e tem sido amplamente utilizado durante grande parte da história da web, o que o torna uma ótima opção padrão para hospedar um site.

Podemos instalar o Apache facilmente usando o gerenciador de pacotes do Ubuntu, apt. Um gerenciador de pacotes nos permite instalar a maioria dos softwares sem problemas a partir de um repositório mantido pelo Ubuntu. Você pode aprender mais sobre como usar o apt aqui.

Para nossos propósitos, podemos começar digitando estes comandos:

  1. sudo apt-get update
  2. sudo apt-get install apache2

Como estamos usando um comando sudo, essas operações são executadas com privilégios de root. Ele solicitará a senha do seu usuário regular para verificar suas intenções.

Depois de inserir sua senha, o apt informará quais pacotes planeja instalar e quanto espaço extra em disco eles ocuparão. Pressione y e pressione ENTER para continuar, e a instalação prosseguirá.

Configurando Global ServerName para Suprimir Avisos de Sintaxe

Em seguida, adicionaremos uma única linha ao arquivo /etc/apache2/apache2.conf para suprimir uma mensagem de aviso. Embora inofensivo, se você não definir ServerName globalmente, receberá o seguinte aviso ao verificar a configuração do Apache em busca de erros de sintaxe:

  1. sudo apache2ctl configtest
Output
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message Syntax OK

Abra o arquivo de configuração principal com sua edição de texto:

  1. sudo nano /etc/apache2/apache2.conf

Dentro, na parte inferior do arquivo, adicione uma diretiva ServerName, apontando para seu nome de domínio principal. Se você não tiver um nome de domínio associado ao seu servidor, poderá usar o endereço IP público do seu servidor:

Observação: se você não souber o endereço IP do seu servidor, pule para a seção sobre como encontrar o endereço IP público do seu servidor para encontrá-lo.

. . .
ServerName server_domain_or_IP

Salve e feche o arquivo quando terminar.

Em seguida, verifique se há erros de sintaxe digitando:

  1. sudo apache2ctl configtest

Como adicionamos a diretiva global ServerName, tudo o que você deve ver é:

Output
Syntax OK

Reinicie o Apache para implementar suas alterações:

  1. sudo systemctl restart apache2

Agora você pode começar a ajustar o firewall.

Ajustando o firewall para permitir o tráfego da Web

Em seguida, supondo que você tenha seguido as instruções iniciais de configuração do servidor para habilitar o firewall UFW, certifique-se de que seu firewall permita o tráfego HTTP e HTTPS. Você pode garantir que o UFW tenha um perfil de aplicativo para Apache da seguinte forma:

  1. sudo ufw app list
Output
Available applications: Apache Apache Full Apache Secure OpenSSH

Se você observar o perfil Apache Full, ele deve mostrar que permite o tráfego para as portas 80 e 443:

  1. sudo ufw app info "Apache Full"
Output
Profile: Apache Full Title: Web Server (HTTP,HTTPS) Description: Apache v2 is the next generation of the omnipresent Apache web server. Ports: 80,443/tcp

Permitir tráfego de entrada para este perfil:

  1. sudo ufw allow in "Apache Full"

Você pode fazer uma verificação imediata para verificar se tudo correu como planejado visitando o endereço IP público do seu servidor em seu navegador da Web (consulte a observação no próximo título para descobrir qual é o seu endereço IP público se você não tiver essa informação já):

http://your_server_IP_address

Você verá a página da Web padrão do Ubuntu 16.04 Apache, que existe para fins informativos e de teste. Deve ser algo como isto:

Se você vir esta página, seu servidor web agora está corretamente instalado e acessível através de seu firewall.

Encontrando o endereço IP público do seu servidor

Se você não sabe qual é o endereço IP público do seu servidor, há várias maneiras de encontrá-lo. Normalmente, este é o endereço que você usa para se conectar ao seu servidor por meio do SSH.

Na linha de comando, você pode encontrar algumas maneiras. Primeiro, você pode usar as ferramentas iproute2 para obter seu endereço digitando isto:

  1. ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Isso lhe dará duas ou três linhas de volta. Todos eles são endereços corretos, mas seu computador pode usar apenas um deles, portanto, sinta-se à vontade para experimentar cada um deles.

Um método alternativo é usar o utilitário curl para entrar em contato com uma parte externa para informar como ele vê seu servidor. Você pode fazer isso perguntando a um servidor específico qual é o seu endereço IP:

  1. sudo apt-get install curl
  2. curl http://icanhazip.com

Independentemente do método que você usa para obter seu endereço IP, você pode digitá-lo na barra de endereços do seu navegador para acessar seu servidor.

Passo 2 — Instalando o MySQL

Agora que temos nosso servidor web funcionando, é hora de instalar o MySQL. MySQL é um sistema de gerenciamento de banco de dados. Basicamente, ele irá organizar e fornecer acesso a bancos de dados onde nosso site pode armazenar informações.

Novamente, podemos usar apt para adquirir e instalar nosso software. Desta vez, também instalaremos alguns outros pacotes ajudantes que nos ajudarão a fazer com que nossos componentes se comuniquem entre si:

  1. sudo apt-get install mysql-server

Nota: Neste caso, você não precisa executar sudo apt-get update antes do comando. Isso ocorre porque recentemente o executamos nos comandos acima para instalar o Apache. O índice de pacotes em nosso computador já deve estar atualizado.

Novamente, você verá uma lista dos pacotes que serão instalados, juntamente com a quantidade de espaço em disco que eles ocuparão. Digite Y para continuar.

Durante a instalação, seu servidor solicitará que você selecione e confirme uma senha para o usuário \root do MySQL. Esta é uma conta administrativa no MySQL que tem privilégios aumentados. Pense nisso como sendo semelhante à conta root do próprio servidor (no entanto, a que você está configurando agora é uma conta específica do MySQL.) Certifique-se de que esta seja uma senha forte e única e não a deixe em branco.

Quando a instalação estiver concluída, queremos executar um script de segurança simples que removerá alguns padrões perigosos e bloqueará um pouco o acesso ao nosso sistema de banco de dados. Inicie o script interativo executando:

  1. mysql_secure_installation

Você será solicitado a inserir a senha definida para a conta root do MySQL. Em seguida, você será perguntado se deseja configurar o VALIDATE PASSWORD PLUGIN.

Aviso: habilitar esse recurso é uma espécie de julgamento. Se ativado, as senhas que não correspondem aos critérios especificados serão rejeitadas pelo MySQL com um erro. Isso causará problemas se você usar uma senha fraca em conjunto com um software que configura automaticamente as credenciais de usuário do MySQL, como os pacotes do Ubuntu para phpMyAdmin. É seguro deixar a validação desativada, mas você sempre deve usar senhas fortes e exclusivas para credenciais de banco de dados.

Responda y para sim ou qualquer outra coisa para continuar sem habilitar.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

Você será solicitado a selecionar um nível de validação de senha. Lembre-se de que, se inserir 2, para o nível mais forte, você receberá erros ao tentar definir qualquer senha que não contenha números, letras maiúsculas e minúsculas e caracteres especiais ou que seja baseada em palavras comuns do dicionário.

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Se você habilitou a validação de senha, você verá uma força de senha para a senha root existente e perguntará se deseja alterar essa senha. Se estiver satisfeito com sua senha atual, digite n para \no no prompt:

Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

Para o restante das perguntas, você deve pressionar Y e pressionar a tecla Enter em cada prompt. Isso removerá alguns usuários anônimos e o banco de dados de teste, desativará logins root remotos e carregará essas novas regras para que o MySQL respeite imediatamente as alterações que fizemos.

Neste ponto, seu sistema de banco de dados está configurado e podemos seguir em frente.

Passo 3 — Instalando o PHP

O PHP é o componente da nossa configuração que processará o código para exibir o conteúdo dinâmico. Ele pode executar scripts, conectar-se aos nossos bancos de dados MySQL para obter informações e entregar o conteúdo processado ao nosso servidor da Web para exibição.

Podemos mais uma vez aproveitar o sistema apt para instalar nossos componentes. Também vamos incluir alguns pacotes auxiliares, para que o código PHP possa ser executado no servidor Apache e se comunicar com nosso banco de dados MySQL:

  1. sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql

Isso deve instalar o PHP sem problemas. Vamos testar isso em um momento.

Na maioria dos casos, queremos modificar a maneira como o Apache serve arquivos quando um diretório é solicitado. Atualmente, se um usuário solicitar um diretório do servidor, o Apache primeiro procurará um arquivo chamado index.html. Queremos dizer ao nosso servidor web para preferir arquivos PHP, então faremos o Apache procurar um arquivo index.php primeiro.

Para fazer isso, digite este comando para abrir o arquivo dir.conf em um editor de texto com privilégios de root:

  1. sudo nano /etc/apache2/mods-enabled/dir.conf

Isso parecerá assim:

<IfModule mod_dir.c>
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

Queremos mover o arquivo de índice PHP destacado acima para a primeira posição após a especificação DirectoryIndex, assim:

<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

Quando terminar, salve e feche o arquivo pressionando Ctrl-X. Você terá que confirmar o salvamento digitando Y e, em seguida, pressione Enter para confirmar o local de salvamento do arquivo.

Depois disso, precisamos reiniciar o servidor web Apache para que nossas alterações sejam reconhecidas. Você pode fazer isso digitando isto:

  1. sudo systemctl restart apache2

Também podemos verificar o status do serviço apache2 usando systemctl:

  1. sudo systemctl status apache2
Sample Output
● apache2.service - LSB: Apache2 web server Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Wed 2016-04-13 14:28:43 EDT; 45s ago Docs: man:systemd-sysv-generator(8) Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS) Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS) Tasks: 6 (limit: 512) CGroup: /system.slice/apache2.service ├─13623 /usr/sbin/apache2 -k start ├─13626 /usr/sbin/apache2 -k start ├─13627 /usr/sbin/apache2 -k start ├─13628 /usr/sbin/apache2 -k start ├─13629 /usr/sbin/apache2 -k start └─13630 /usr/sbin/apache2 -k start Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Stopped LSB: Apache2 web server. Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Starting LSB: Apache2 web server... Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: * Starting Apache httpd web server apache2 Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerNam Apr 13 14:28:43 ubuntu-16-lamp apache2[13605]: * Apr 13 14:28:43 ubuntu-16-lamp systemd[1]: Started LSB: Apache2 web server.

Instalar Módulos PHP

Para aprimorar a funcionalidade do PHP, podemos opcionalmente instalar alguns módulos adicionais.

Para ver as opções disponíveis para módulos e bibliotecas PHP, você pode canalizar os resultados de apt-cache search para less, um pager que permite percorrer a saída de outros comandos :

  1. apt-cache search php- | less

Use as teclas de seta para rolar para cima e para baixo e q para sair.

Os resultados são todos os componentes opcionais que você pode instalar. Ele fornecerá uma breve descrição para cada um:

libnet-libidn-perl - Perl bindings for GNU Libidn
php-all-dev - package depending on all supported PHP development packages
php-cgi - server-side, HTML-embedded scripting language (CGI binary) (default)
php-cli - command-line interpreter for the PHP scripting language (default)
php-common - Common files for PHP packages
php-curl - CURL module for PHP [default]
php-dev - Files for PHP module development (default)
php-gd - GD module for PHP [default]
php-gmp - GMP module for PHP [default]
…
:

Para obter mais informações sobre o que cada módulo faz, você pode pesquisar na Internet ou consultar a longa descrição do pacote digitando:

  1. apt-cache show package_name

Haverá muitas saídas, com um campo chamado Description-en que terá uma explicação mais longa da funcionalidade que o módulo fornece.

Por exemplo, para descobrir o que o módulo php-cli faz, podemos digitar isto:

  1. apt-cache show php-cli

Juntamente com uma grande quantidade de outras informações, você encontrará algo parecido com isto:

Output
… Description-en: command-line interpreter for the PHP scripting language (default) This package provides the /usr/bin/php command interpreter, useful for testing PHP scripts from a shell or performing general shell scripting tasks. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. . This package is a dependency package, which depends on Debian's default PHP version (currently 7.0). …

Se, depois de pesquisar, você decidir que gostaria de instalar um pacote, você pode fazê-lo usando o comando apt-get install como temos feito para nossos outros softwares.

Se decidirmos que php-cli é algo que precisamos, poderíamos digitar:

  1. sudo apt-get install php-cli

Se você deseja instalar mais de um módulo, pode fazer isso listando cada um, separado por um espaço, seguindo o comando apt-get install, assim:

  1. sudo apt-get install package1 package2 ...

Neste ponto, sua pilha LAMP está instalada e configurada. Ainda devemos testar nosso PHP.

Etapa 4 — Testando o processamento PHP em seu servidor Web

Para testar se nosso sistema está configurado corretamente para PHP, podemos criar um script PHP bem básico.

Chamaremos esse script de info.php. Para que o Apache encontre o arquivo e o sirva corretamente, ele deve ser salvo em um diretório bem específico, que é chamado de web root.

No Ubuntu 16.04, este diretório está localizado em /var/www/html/. Podemos criar o arquivo nesse local digitando:

  1. sudo nano /var/www/html/info.php

Isso abrirá um arquivo em branco. Queremos colocar o seguinte texto, que é um código PHP válido, dentro do arquivo:

<?php
phpinfo();
?>

Quando terminar, salve e feche o arquivo.

Agora podemos testar se nosso servidor web pode exibir corretamente o conteúdo gerado por um script PHP. Para experimentar, basta visitar esta página em nosso navegador. Você precisará do endereço IP público do seu servidor novamente.

O endereço que você deseja visitar será:

http://your_server_IP_address/info.php

A página que você acessa deve ser mais ou menos assim:

Esta página basicamente fornece informações sobre o seu servidor da perspectiva do PHP. É útil para depuração e para garantir que suas configurações sejam aplicadas corretamente.

Se isso foi bem-sucedido, seu PHP está funcionando conforme o esperado.

Você provavelmente deseja remover este arquivo após este teste porque ele pode fornecer informações sobre seu servidor para usuários não autorizados. Para fazer isso, você pode digitar isso:

  1. sudo rm /var/www/html/info.php

Você sempre pode recriar esta página se precisar acessar as informações novamente mais tarde.

Conclusão

Agora que você tem uma pilha LAMP instalada, você tem muitas opções para o que fazer a seguir. Basicamente, você instalou uma plataforma que permitirá instalar a maioria dos tipos de sites e softwares da web em seu servidor.

Como próxima etapa imediata, você deve garantir que as conexões com seu servidor da Web sejam seguras, servindo-as via HTTPS. A opção mais fácil aqui é usar o Let's Encrypt para proteger seu site com um certificado TLS/SSL gratuito.

Algumas outras opções populares são:

  • Instale o Wordpress, o sistema de gerenciamento de conteúdo mais popular da Internet.
  • Configure o PHPMyAdmin para ajudar a gerenciar seus bancos de dados MySQL a partir do navegador da web.
  • Saiba mais sobre o MySQL para gerenciar seus bancos de dados.
  • Aprenda a usar o SFTP para transferir arquivos de e para seu servidor.