Configurando um servidor LAMP no Linux

Instalando o Apache2

Ao instalar o Apache 2, o suporte a SSL é instalado automaticamente junto com o pacote principal. Instale também o pacote apache2-utils, que contém diversos utilitários de gerenciamento que usaremos a seguir:

# apt-get install apache2 apache2-utils

Se desejar ativar o suporte a páginas seguras, você vai precisar também do pacote “ssl-cert”, necessário para ativar o suporte a SSL e gerar os certificados. Ele não é instalado por padrão ao fazer uma instalação enxuta do Debian ou do Ubuntu:

# apt-get install ssl-cert

Acessando o endereço “http://127.0.0.1“, você verá uma página de boas-vindas, que indica que o servidor está funcionando. Se não houver nenhum firewall no caminho, ele já estará acessível a partir de outros micros da rede local ou da internet.

Por enquanto, temos apenas uma versão básica do Apache, que simplesmente exibe arquivos html e executa scripts CGI. Por padrão, o diretório raiz do servidor Web é “/var/www” (no Debian) ou “/var/www/html” (no Fedora). Com isso, a página “http://seu.servidor/index.html” é, na verdade, o arquivo “/var/www/index.html” ou “/var/www/html/index.html”.

Como de praxe, o diretório raiz é definido através de uma opção dentro do arquivo principal de configuração (a opção “DocumentRoot”) e pode ser alterado caso desejado. Ao hospedar diversos sites no mesmo servidor, você define uma pasta raiz diferente para cada um. Como pode ver, a instalação do Apache propriamente dita é bastante simples, o grande desafio é configurar e otimizar o servidor.

O arquivo principal fica em /etc/apache2/sites-enabled e o nome do arquivo é 000-default. É um link para /etc/apache2/sites-available.

Instalando o suporte a PHP

O suporte a PHP é instalado através do pacote “php5” (ou “php4″, de acordo com a versão escolhida). Para instalá-lo, basta usar o gerenciador de pacotes da distribuição em uso, como em:

# apt-get install php5

Com o interpretador PHP instalado, falta instalar o módulo do Apache 2, que no Debian está disponível através do pacote “libapache2-mod-php5″ (ou “libapache2-mod-php4″, de acordo com a versão desejada):

# apt-get install libapache2-mod-php5

O módulo “libapache2-mod-php5″ é instalado dentro da pasta “/usr/lib/apache2/modules/” e é ativado de uma forma diferente que no Apache 1.3. Ao invés de adicionar as linhas que ativam o módulo e criam as associações de arquivos no final do arquivo httpd.conf, são criados dois arquivos dentro da pasta “/etc/apache2/mods-available/”, com, respectivamente, a ativação do módulo e as associações de arquivos. Os links são criados automaticamente ao instalar o pacote, mas você pode tirar qualquer dúvida usando o comando a2enmod:

# a2enmod php5

Não esqueça de reiniciar o serviço para que o módulo seja carregado e a configuração entre em vigor:

# /etc/init.d/apache2 force-reload

Para que o interpretador PHP seja capaz de acessar o banco de dados, é necessário ter instalado (além do servidor MySQL propriamente dito) o módulo “php5-mysql” (ou “php4-mysql”), que faz a junção entre os dois componentes:

# apt-get install php5-mysql

Para verificar se o suporte a PHP está realmente ativo, crie um arquivo de texto chamado “info.php” (ou outro nome qualquer, seguido da extensão .php) dentro da pasta do servidor web, contendo apenas a linha abaixo:

<?php phpinfo(  ); ?>

Salve o arquivo e abra a página através do navegador. A função “phpinfo”, que usamos no arquivo, faz com que o servidor exiba uma página com detalhes da configuração do PHP e dos módulos ativos.

Instalando o MySQL

O primeiro passo é instalar o servidor MySQL propriamente dito. Nas distribuições derivadas do Debian precisamos instalar apenas o pacote “mysql-server” usando o apt-get:

# apt-get install mysql-server mysql-client mysql-navigator

Antes de iniciar o serviço, rode o comando “mysql_install_db”. Ele prepara o terreno, criando a base de dados “mysql” (usada para armazenar a configuração do servidor MySQL, incluindo informações sobre os usuários e sobre as demais bases de dados) e também uma base de dados chamada “test”, que pode ser usada para testar o servidor:

# mysql_install_db

O passo seguinte é ativar o servidor MySQL:

# /etc/init.d/mysql start

O MySQL possui um usuário padrão chamado “root”, que, assim como o root do sistema, tem acesso completo a todas as bases de dados e é usado para fazer a configuração inicial do sistema, assim como tarefas de manutenção. Esta conta inicialmente não tem senha, por isso você deve definir uma logo depois de iniciar o serviço, usando o comando “mysqladmin -u root password senha”, incluindo a senha desejada diretamente no comando, como em:

# mysqladmin -u root password psUT7wq01

Se você precisar trocar a senha posteriormente, é necessário acrescentar o parâmetro “-p” antes do “password” e, em seguida, especificar a nova senha, como em:

# mysqladmin -u root -p password psUT7wq01

Enter password: ********

Veja que nesse caso é necessário incluir a senha antiga ao executar o comando, antes de continuar, já que do contrário teríamos uma brecha óbvia de segurança.

Continuando, depois de definir a senha, o próximo passo é criar uma base de dados. Você pode instalar vários scripts diferentes (um fórum, um chat e um gestor de conteúdo, por exemplo) no mesmo servidor e, inclusive, várias cópias de cada um. Isso é cada vez mais utilizado, tanto dentro de sites que oferecem diversos serviços, quanto em servidores compartilhados, onde os responsáveis por cada site têm a liberdade de instalar os sistemas de sua preferência.

Instalando o phpMyAdmin

Depois dessa configuração inicial, você pode experimentar instalar um gerenciador gráfico para facilitar a manutenção do seu servidor MySQL. Uma boa opção neste caso é o phpMyAdmin.

Para instalá-lo, basta instalar o pacote “phpmyadmin”, como em:

# apt-get install phpmyadmin

O phpMyAdmin é um gestor de configuração escrito em PHP que trabalha em conjunto com o Apache. Ele permite que você crie bases de dados, ajuste as permissões de acesso dos usuários, faça backup, e diversas outras atividades administrativas de uma forma mais simples que através do prompt de comando.

Uma vez instalado, ele pode ser acessado através do endereço “http://servidor/phpmyadmin/ ou https://servidor/phpmyadmin/. Na tela inicial, você pode se logar usando qualquer uma das contas registradas no MySQL. Use o root para tarefas administrativas, quando for necessário ter acesso a todas as bases ou fazer backup de tudo, e uma das contas restritas para acessar uma base específica:

O acesso via HTTPS é preferível para acessos feitos via web, já que evita que as senhas de acesso e outras informações fiquem circulando em texto puro por aí. O pacote do Debian se encarrega de ativar o suporte a SSL no phpMyAdmin automaticamente, mas para usá-lo é necessário também ativar o suporte a SSL na configuração do Apache.

Caso, mesmo depois de gerar o certificado e ativar o SSL no Apache, você continue recebendo um erro ao tentar acessar a interface do phpMyAdmin via SSL, experimente reconfigurar o pacote usando o dpkg-reconfigure, como em:

# dpkg-reconfigure phpmyadmin

Selecione a opção “apache2″ quando o script perguntar sobre o servidor web usado e responda “sim” quando ele perguntar se você deseja reiniciar o serviço.

No CentOS e em diversas outras distribuições o phpMyAdmin vem configurado por padrão para permitir conexões apenas a partir da máquina local, uma precaução de segurança. Com isso, ao tentar acessar a interface remotamente, você recebe um “Forbidden. You don’t have permission to access /phpmyadmin/ on this server”. Para solucionar o problema, edite o arquivo “/etc/httpd/conf.d/phpmyadmin.conf” e comente a linha “Deny from All”, dentro da seção “<Directory “/usr/share/phpmyadmin”>”, como em:

<Directory “/usr/share/phpmyadmin”>

Order Deny,Allow

# Deny from all

Allow from 127.0.0.1

</Directory>

Uma observação importante é que ao ser usado em conjunto com o Apache, instalado no mesmo servidor que ele, o MySQL é acessado apenas localmente, através da interface de loopback. O Apache envia a requisição ao módulo PHP que faz o acesso ao banco de dados, tudo localmente. Nessa configuração, o servidor MySQL não deve ficar disponível para a Internet. Configure o firewall para bloquear a porta 3306 usada pelo servidor MySQL, além de todas as outras portas que não forem explicitamente necessárias.

Caso o servidor MySQL precise ficar acessível para outros servidores (você pode configurar o phpBB e outros scripts para utilizarem um servidor MySQL externo), configure o firewall para deixar a porta aberta apenas para os endereços IP dos servidores que forem ter acesso. Como os servidores dedicados sempre utilizam endereços fixos (ao contrário dos servidores domésticos), esta configuração fica mais simples.

Para administrar seu servidor MySQL remotamente, o ideal é que se conecte ao servidor via SSH e faça todo o trabalho através dele. Se precisar acessar diretamente alguma ferramenta de configuração, como o Webmin ou o phpMyAdmin, você pode criar um túnel (novamente usando o SSH) ligando a porta correspondente do servidor a uma porta da sua máquina e fazer o acesso através dela.

Felipe Cordeiro