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.
[