Configurando LAMP no CentOS 6

Esse artigo é um guia rápido para configurar um ambiente LAMP (Linux, Apache, MySQL e PHP) no CentOS 6. Ele foi compilado enquanto eu fazia a instalação do servidor que uso para hospedar esse e outros sites.

Instalação

O texto não cobre a instalação do CentOS, eu utilizo servidores virtuais da Linode e o guia inicia logo após o deploy da imagem mínima do CentOS disponibilizada por esse provedor. Se você utiliza outros serviços de hospedagem, oriente-se com o suporte sobre o deploy da imagem.

Caso você precise instalar o CentOS a partir de mídia, pode procurar ajuda na documentação oficial. Até o momento da escrita desse artigo, os manuais para versão 6 ainda não estavam disponíveis. De qualquer maneira o guia de instalação da versão 5 pode ser utilizado. Também é possível obter ajuda no guia de instalação do RHEL 6 e em diversos guias pela internet.

Criação de usuário e atualização do sistema

Após a instalação, realize o reboot do servidor e conecte-se como root. Vamos criar um usuário administrativo para evitar o uso direto do root. O usuário deve fazer parte do grupo wheel e terá permissão administrativa através de sudo.

Para criar o usuário foobar e adiciona-lo ao grupo wheel:

[root@centos ~]# useradd -G wheel foobar
[root@centos ~]# passwd foobar

Agora vamos atualizar o sudo e configurar permissão para todos usuários do grupo wheel:

[root@centos ~]# yum install sudo
[root@centos ~]# visudo

Basta alterar a linha baixo removendo o '#' inicial dela, salvar e sair.

# %wheel    ALL=(ALL)   NOPASSWD: ALL

Com isso podemos passar a usar o novo usuário que terá direitos administrativos através do sudo. Efetue logout como root e conecte-se agora com o novo usuário.

Vamos atualizar o servidor. Antes de fazer isso costumo configurar os repositórios EPEL. Esses repositórios contém pacotes diversos para distribuições como RHEL, CentOS e Scientific Linux. Para habilitar basta baixar o pacote RPM e instala-lo:

[foobar@centos ~]$ wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
[foobar@centos ~]$ sudo rpm -ivh epel-release-6.5.noarch.rpm

Agora fazemos a atualização do sistema:

[foobar@centos ~]$ sudo yum check-update
[foobar@centos ~]$ sudo yum upgrade

Instalando o Apache

Com o Linux instalado, já temos o L do LAMP, agora vamos instalar o Apache e configura-lo para subir junto com o boot do servidor. Para isso basta executar os comandos:

[foobar@centos ~]$ sudo yum install httpd httpd-manual
[foobar@centos ~]$ sudo chkconfig httpd on

É necessário editar o arquivo /etc/httpd/conf/httpd.conf para fazer a configuração inicial do Apache. Não é preciso modificar muita coisa do padrão, basta alterar os trechos indicados abaixo.

Abra o arquivo no seu editor de textos favorito, procure o trecho abaixo:

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

E altere-o para:

<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>

Mais uma modificação, procure o trecho abaixo:

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride None

E altere para:

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride All

Por fim, alterar o trecho abaixo de:

#
# Use name-based virtual hosting.
#
# NameVirtualHost *:80
#

Para:

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80
#

Salve o arquivo, saia e em seguida reinicie o Apache com o comando:

[foobar@centos ~]$ sudo service httpd restart

Para testar a configuração basta acessar através de qualquer navegador o o endereço IP do seu servidor. Antes precisamos apenas criar uma regra no firewall permitindo conexão na porta 80 que é bloqueada por padrão no CentOS:

[foobar@centos ~]$ sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

Após é interessante salvar a regra para que seja aplicada toda vez que o iptables for carregado:

[foobar@centos ~]$ sudo service iptables save

Me dê um M: Instalando MySQL Server

Com o Apache testado e funcionando, podemos instalar o MySQL Server:

[foobar@centos ~]$ sudo yum install mysql-server mysql

Após a instalação é importante Fazer a configuração inicial de segurança do MySQL Server rodando o script abaixo:

[foobar@centos ~]$ sudo /usr/bin/mysql_secure_installation

P de PHP

Para finalizar o ambiente LAMP só falta o PHP. Basta instalar os pacotes abaixo:

[foobar@centos ~]$ sudo yum install php php-mysql php-pear

Configurando o primeiro site

Nesse momento já temos o ambiente LAMP configurado, é possível fazer a instalação de alguma aplicação PHP como por exemplo o Wordpress. Abaixo um exemplo de configuração de virtual host para prover o site www.dominio.com.br nesse servidor recém instalado.

Primeiro vamos criar o diretório onde o site será hospedado:

[foobar@centos ~]$ sudo mkdir /var/www/dominio.com.br/

Agora vamos criar a configuração de virtual host no Apache, basta criar o arquivo /etc/httpd/conf.d/dominio-com-br.conf com o conteudo:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName dominio.com.br
    ServerAlias www.dominio.com.br

    DocumentRoot /var/www/dominio.com.br

    ErrorLog /var/log/httpd/dominio.com.br-error.log
    LogLevel warn
    CustomLog /var/log/httpd/dominio.com.br-access.log combined
</VirtualHost>

Basta popular o diretório /var/www/dominio.com.br com o seu site e reiniciar o Apache:

[foobar@centos ~]$ service httpd restart

Com essa configuração o seu servidor já pode responder por esse site. Claro que para o site se torne acessível ao público, o DNS desse domínio deve ser configurado para apontar pro seu servidor. Essa configuração foge do escopo desse rápido guia.

Concluindo

LAMP no CentOS é simples, rápido e fácil. Em alguns minutos você já tem a configuração inicial de um servidor web. Evidentemente ainda faltam algumas várias configurações importantes antes de colocar esse servidor em produção. É importante atentar a segurança, também fazer algum tunning no que foi instalado.

Como esse é apenas um guia rápido, não vou abordar essas configurações. Em textos futuros pretendo relatar algumas delas, sempre me baseando nas configurações reais que usei quando montei o servidor que roda esse site.

[, , , , , , , ]

Comentários