Configurando um servidor LAMP



Documentos relacionados
No Fedora, instalamos os pacotes "mysql" e "mysql-server", usando o yum:

Instalação Apache + MySQL + PHPMyAdmin CentOS

5/7/2010. Apresentação. Introdução. Ponto de vista do usuário. Curso Tecnologia em Telemática. Disciplina Administração de Sistemas Linux

Você pode testar se está tudo OK, abrindo um navegador no Debian Linux e acessando qualquer site.

FACULDADE DE TECNOLOGIA SENAC GESTÃO DA TECNOLOGIA DA INFORMAÇÃO LABORATORIO DE REDE

Guia de instalação para ambiente de Desenvolvimento LINUX

Desenvolvendo Websites com PHP

Atividade Proposta da Disciplina: Laboratório de Rede de Computadores

Entendendo como funciona o NAT

Sistemas Operacionais Livres. Servidor Web Apache

Aula 14 Serviços Internet (Servidor Web Apache)

Omega Tecnologia Manual Omega Hosting

Módulos de Multiprocessamento em um servidor Web

Virtual Hosts. João Medeiros 1 / 12

Faculdade de Tecnologia Senac Goiás. Goiânia, 28 de novembro de 2014.

Sistema de log do Apache

Configurando um servidor DHCP

Servidor proxy - Squid PROFESSOR : RENATO WILLIAM

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

Instalando servidor Apache com MySQL e as linguagens ColdFusion e PHP. XAMPP (xampp-win installer.exe), veja aqui.

ServerAdmin - Se o sistema detectar algo de anômalo, um mail será enviado a bazar@projeointegador.

Prof. Samuel Henrique Bucke Brito

Instalação do PHP no Linux

SIMEC Sistema Integrado de Planejamento, Orçamento e Finanças

DarkStat para BrazilFW

Configurando o IIS no Server 2003

Nesse artigo abordaremos os principais aspectos de instalação e uso do NTOP no Fedora Core 4.

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

Redes de Computadores

Na tela dele, clique no sinal de + ao lado do nome do seu computador, para expandi-lo. A seguir, expanda também o item "Sites da web".

Instalando o Debian em modo texto

Na Figura a seguir apresento um exemplo de uma "mini-tabela" de roteamento:

Instalando o WordPress em localhost

Projeto Integrador Programação para Internet

UNIVERSIDADE FEDERAL DE GOIÁS CERCOMP (CENTRO DE RECURSOS COMPUTACIONAIS) TUTORIAL DE USO DO WEBMAIL - UFG

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH!

Procedimentos para Reinstalação do Sisloc

GUIA DE CONFIGURAÇÃO CONEXÕES VPN SSL (CLIENT TO SERVER)

LICENCIAMENTO V14 USANDO REPRISE LICENSE MANAGER

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

Instalando o Internet Information Services no Windows XP

Gravando uma Áudio Conferência

Guia Rápido de Instalação Ilustrado

CONFIGURAÇÃO MINIMA EXIGIDA:

Documentação Symom. Agente de Monitoração na Plataforma Windows

Web Design Aula 11: Site na Web

Como instalar uma impressora?

HOW TO. Instalação do Firewall 6.1 Software

10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO

02 - Usando o SiteMaster - Informações importantes

SERVIDOR WEB + LOG DE ACESSO LABORATÓRIO DE REDES DE COMPUTADORES Responsável: Ana Luíza Cruvinel

Trabalho de Sistema de Informações. Instalação e configuração aplicativo Ocomon

Lazarus pelo SVN Linux/Windows

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.

ROTEIRO PARA INSTALAÇÃO DO BITVISE, CONFIGURAÇÃO DE CHAVES SSH, DEFINIÇÃO DAS PORTAS PARA OS TÚNEIS SSH E CONFIGURAÇÃO DO THUNDERBIRD

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO

SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE 27/02/2012

MANUAL DO ANIMAIL Terti Software

GUIA INTEGRA SERVICES E STATUS MONITOR

Instalação e Configuração

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade

NetEye Guia de Instalação

Manual de Utilização do Zimbra

MANUAL DE CONFIGURAÇÃO DO BACKUP

Faculdade de Tecnologia SENAC Goiás. Disciplina: Gerenciamento de Rede de Computadores. Goiânia, 16 de novembro de 2014.

INTRODUÇÃO: 1 - Conectando na sua conta

Índice. Manual Backup Online. 03 Capítulo 1: Visão Geral

MANUAL PORTAL CLIENTE AVANÇO

Instalação e Configuração do Servidor HTTPD Apache

Operador de Computador. Informática Básica

Senha Admin. Nessa tela, você poderá trocar a senha do administrador para obter acesso ao NSControl. Inicialização

STK (Start Kit DARUMA) Extensão PHP para DarumaFrameWork

ADMINISTRAÇÃO DE SISTEMAS OPERACIONAIS SERVIÇOS IMPRESSÃO. Professor Carlos Muniz

Kerio Exchange Migration Tool

Google Drive. Passos. Configurando o Google Drive

OneDrive: saiba como usar a nuvem da Microsoft

Procedimentos para Instalação do SISLOC

OCOMON PRIMEIROS PASSOS

Sistema Operacional Unidade 13 Servidor Samba. QI ESCOLAS E FACULDADES Curso Técnico em Informática

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5.

AS VERSÕES DESCRIÇÃO DAS FUNÇÕES

Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede

LABORATÓRIO WIRESHARK: DNS

2 de maio de Remote Scan

Integração entre o IBM HTTP SERVER, APACHE WEB Server e IBM Websphere Application Server

1 - Como Instalar e Configurar Apache, PHP e MySQL no Windows

Procedimentos para Instalação do Sisloc

TUTORIAL DE INSTALAÇÃO APACHE PHP POSTGRESQL 8.2

Instalando o IIS 7 no Windows Server 2008

Instalando o IIS 7 no Windows Server 2008

Manual de Instalação PIMSConnector em Linux

UNIVERSIDADE FEDERAL DE PELOTAS

Como incluir artigos:

Instalando o Lazarus e outros sistemas de suporte. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Arquitetura de Rede de Computadores

Manual de backup do banco de dados PostgreSQL - Versão 2. Setembro-2011

Instalando um pacote LAMP (Linux, Apache, MySQL, PHP) no Mandriva

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

Transcrição:

Configurando um servidor LAMP Introdução (Linux + Apache + MySQL + PHP) Os servidores web são a espinha dorsal da Internet, são eles que hospedam todas as páginas, incluindo os mecanismos de busca e servem como base para todo tipo de aplicativo via web, incluindo os webmails. No futuro, esta tendência deve se acentuar, com páginas web dinâmicas e aplicativos via web substituindo cada vez mais os aplicativos desktop. Nos primórdios da internet, eram utilizadas apenas páginas html estáticas e scripts CGI. O Apache em si continua oferecendo suporte apenas a esses recursos básicos, mas ele pode ser expandido através de módulos, passando a suportar scripts em PHP, acessar bancos de dados MySQL, entre inúmeros outros recursos. Sempre que é solicitada uma página em PHP ou outra linguagem, entra em ação o módulo apropriado, que faz o processamento necessário e devolve ao Apache a página html que será exibida. Entram em ação, então, os gestores de conteúdo e fóruns, que combinam os recursos do PHP com um banco de dados como o MySQL, acessado através dele. A combinação de tudo isso forma a solução que é popularmente chamada de "LAMP" (Linux + Apache + MySQL + PHP). O Apache e o MySQL, juntamente com o suporte a PHP podem ser também instalados sobre o Windows (formando o "WAMP"), uma solução relativamente popular entre administradores Microsoft que não se sentem à vontade em usar o IIS. Segundo a Netcraft, pouco mais de 50% dos servidores web do mundo rodam o Apache (http://news.netcraft.com/archives/web_server_survey.html), a maior parte deles sobre o Linux. O percentual real é na verdade um pouco maior, pois um grande número de administradores configuram seus servidores para divulgarem informações falsas sobre o servidor web usado, de forma a não fornecer qualquer informação que possa facilitar ataques. Estes servidores não-identificados aparecem na pesquisa como "other". Além de ser um dos servidores web mais antigos e um dos mais seguros, o Apache possui inúmeros módulos, que adicionam suporte aos mais exóticos recursos. A maioria das páginas atuais utiliza uma estrutura em PHP, freqüentemente com um banco de dados MySQL ou PostgreSQL. Existem, inclusive, muitos sistemas prontos, como o phpbb (fórum) e o WordPress (para gerenciamento de conteúdo),

que podem ser instalados sem muita dificuldade depois que o servidor web já estiver rodando. Além do servidor web em si, você quase sempre vai precisar configurar também um servidordns, que responderá pelo domínio do seu site ou empresa. Aprender a configurar o DNS corretamente é importante, caso contrário você pode ter problemas ao enviar e-mails (pela falta do DNS reverso), ou mesmo ter problemas mais graves com o registro do domínio. A Apache permite hospedar vários sites no mesmo servidor, recurso chamado de virtual hosts. Apenas os sites mais acessados são capazes de saturar os recursos de um servidor dedicado de configuração razoável, por isso hospedar vários sites no mesmo servidor é uma forma de economizar recursos e trabalho.

Instalando o Apache O Apache pode ser dividido em duas grandes famílias: o Apache 2.x e o Apache 1.3 que, apesar de muito antigo, ainda é usado em muitos servidores. O Apache 2 trouxe muitas vantagens, sobretudo do ponto de vista do desempenho, além de oferecer novos módulos e mais opções de segurança, mas sua adoção foi retardada nos primeiros anos por um detalhe muito simples: o fato de ele ser incompatível com os módulos compilados para o Apache 1.3. Como os módulos são a alma do servidor web, muitos administradores ficavam amarrados ao Apache 1.3 devido à falta de disponibilidade de alguns módulos específicos para o Apache 2. Conforme o tempo foi passando, mais e mais módulos foram portados, sem falar de novos módulos desenvolvidos diretamente para uso em conjunto com o Apache 2. Hoje em dia, o Apache 1.3 ainda sobrevive em muitas instalações devido à inércia natural que temos dentro do ramo de servidores, mas não existe nenhum bom motivo para usá-lo em uma nova instalação. O Apache 2 é simplesmente melhor em todos os quesitos. 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 Se você estiver utilizando o CentOS ou o Fedora, instale o pacote "httpd", que contém o Apache 2 e os utilitários: # yum install httpd Diferente do Debian, o serviço não será configurado para ser ativado no boot por padrão e nem mesmo inicializado automaticamente após a instalação. Para ativá-lo, é necessário ativar o serviço e, em seguida, criar os links para início automático usando o chkconfig # service httpd start

# chkconfig httpd on Seguindo os nomes dos pacotes, no Debian o serviço se chama "apache2", enquanto no Fedora e no CentOS ele se chama "httpd". Para reiniciar o servidor você usa, respectivamente, os comandos "/etc/init.d/apache2 restart" e "service httpd restart". 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.

Instalando o suporte a PHP No início, existiam apenas páginas html estáticas, com links atualizados manualmente. Depois, surgiram os scripts CGI (geralmente escritos em Perl), que permitiram criar vários tipos de formulários e automatizar funções. Finalmente, surgiu o PHP, adotado rapidamente como a linguagem padrão para criação de todo tipo de página dinâmica, fórum ou gerenciador de conteúdo. Além da linguagem ser bastante flexível, um script em PHP chega a ser mais de 100 vezes mais rápido que um script CGI equivalente, além de mais seguro. Em resumo, um script CGI é um executável, que precisa ser carregado na memória, executado e descarregado cada vez que é feita uma requisição. No caso do PHP, o interpretador fica carregado continuamente e simplesmente vai executando de forma contínua os comandos recebidos dos scripts incluídos nas páginas. Para quem programa em Perl, existe a possibilidade de utilizar o mod-perl, instalável através do pacote "apache-mod-perl" ou "libapache2-mod-perl2". Assim como o PHP, o mod-perl é um módulo do Apache que fica continuamente carregado na memória, executando os scripts Perl de uma forma bem mais rápida e segura que os scripts CGI. Voltando ao assunto principal, no Debian 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 No caso do CentOS e do Fedora, é usado um pacote unificado, o "php", que inclui a versão mais recente do interpretador, eliminando a confusão: # yum install php 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 ou: # service httpd restart No caso do CentOS/Fedora o mod_php é instalado junto com o pacote "php" e ativado automaticamente, através da criação do arquivo "/etc/httpd/conf.d/php.conf". Dentro dele, você encontra as linhas que carregam o módulo e criam a associação com os arquivos.php, como em: LoadModule php5_module modules/libphp5.so AddHandler php5-script.php AddType text/html.php DirectoryIndex index.php Se você tiver a curiosidade de olhar o conteúdo dos arquivos "/etc/apache2/modsenabled/php5.conf" e "/etc/apache2/mods-enabled/php5.load" em uma distribuição derivada do Debian, vai perceber que as linhas contidas neles são muito similares. Na verdade, o Apache usado no Debian e o usado no CentOS é o mesmo software, apenas configurado de forma ligeiramente diferente. Com o suporte a PHP ativado, o Apache continua exibindo diretamente páginas com extensão.htm ou.html, mas passa a entregar as páginas.php ou.phps ao interpretador php, que faz o processamento necessário e devolve uma página html simples ao Apache, que se encarrega de enviá-la ao cliente. Estas páginas processadas são "descartáveis": cada vez que um cliente acessa a página, ela é processada novamente, mesmo que as informações não tenham sido alteradas. Dependendo do número de funções usadas e da complexidade do código,

as páginas em PHP podem ser bastante pesadas. Não é incomum que um site com 100.000 pageviews diários (o que corresponde a umas 5 a 8 requisições por segundo nos horários de pico) precise de um servidor dedicado, de configuração razoável. Quase sempre, os sistemas desenvolvidos em PHP utilizam também um banco de dados MySQL ou Postgre SQL. Naturalmente, é perfeitamente possível que os scripts simplesmente salvem as informações em arquivos de texto dentro do diretório do site, mas isso resultaria em um desempenho muito ruim, sem falar em eventuais brechas de segurança. Utilizar um banco de dados permite armazenar um volume muito maior de informações, acessíveis de forma mais segura. 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 No caso do PostgreSQL, é utilizado o módulo "php5-pgsql", que tem a mesma função: # apt-get install php5-pgsql Não se esqueça de reiniciar o Apache, para que as alterações entrem em vigor: # /etc/init.d/apache force-reload No caso do Fedora e do CentOS, muda apenas o nome do pacote, que passa a se chamar simplesmente "php-mysql": # yum install php-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:

Depois de verificar, remova o arquivo, pois não é interessante que essas informações fiquem disponíveis ao público.

Instalando o MySQL O MySQL é um banco de dados extremamente versátil, usado para os mais diversos fins. Você pode acessar o banco de dados a partir de um script em PHP, através de um aplicativo desenvolvido em C ou C++, ou praticamente qualquer outra linguagem (até mesmo através de um shell script! :). Existem vários livros publicados sobre ele, por isso vou me limitar a falar sobre a instalação e a configuração necessária para utilizá-lo em um servidor LAMP, em conjunto com o Apache e o PHP. 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 No CentOS ou Fedora, instalamos os pacotes "mysql" e "mysql-server", usando o yum: # yum install mysql mysql-server Você pode instalar também os pacotes "mysql-client" (o cliente que permite acessar os dados e fazer modificações no banco de dados) e o "mysql-navigator" (uma interface gráfica para ele). Para que o serviço seja configurado para ser carregado durante o boot, ative-o usando o chkconfig: # chkconfig mysqld on 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

No caso do Fedora e do CentOS, o serviço se chama "mysqld", ao invés de simplesmente "mysql", como no caso do Debian: # service mysqld 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 ou: # yum install phpmyadmin O pacote para instalação em outras distribuições, que não incluam o pacote por padrão, pode ser encontrado no: http://www.phpmyadmin.net/. 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.

Criando Virtual Hosts O suporte a virtual hosts é um daqueles recursos fundamentais, que possibilitaram o surgimento da Internet da forma como a conhecemos hoje. Ele permite hospedar diversos sites, com domínios ou subdomínios diferentes usando um único servidor e um único endereço IP. Os únicos limitantes com relação ao volume de sites que é possível hospedar são os recursos de hardware do servidor e a banda disponível. Serviços de hospedagem compartilhada (os planos de shared hosting) utilizam este recurso de forma intensiva, de forma a espremer o maior número possível de clientes em cada servidor, sem falar nos serviços de hospedagem gratuita onde, em muitos casos, um único servidor pode hospedar dezenas de milhares de sites diferentes. Ao usar virtual hosts, os arquivos de cada site ficam guardados em uma pasta diferente e o servidor se encarrega de direcionar cada visitante à pasta correta. Os recursos do servidor (HD, memória, processamento e link) são divididos entre os sites hospedados, assim como vários programas abertos simultaneamente disputam os recursos da máquina. Isso faz muito sentido no caso de sites pequenos ou médios, que não possuem um número suficiente de visitas para saturarem, sozinhos, o servidor. Em geral, o servidor é configurado de forma que os usuários tenham direito a uma determinada quota de espaço em disco, possam acessar os arquivos do site via FTP ou SFTP e tenham acesso a uma ou mais bases de dados do servidor MySQL, o que permite a instalação de gestores de conteúdo como o WordPress. Entretanto, eles não podem instalar novos pacotes nem alterar a configuração do servidor. Feitas as apresentações, vamos à configuração. :) Invariavelmente, ao hospedar vários domínios, você precisa configurar um servidor DNS para responder por todos os domínios hospedados no servidor, entregando o endereço IP do seu servidor Apache. O cliente acessa então o servidor, solicitando o site desejado, como em "joao.com.br"; o servidor web verifica a configuração e entrega os arquivos apropriados ao cliente. A configuração do servidor DNS é pouco intuitiva, mas não chega a ser tão complicada quanto muitos dizem. Em resumo, você precisaria instalar o bind no servidor e editar a configuração, adicionando uma nova configuração de zona para cada domínio hospedado. Isso é feito em duas etapas. Na primeira, você edita o

arquivo named.conf, adicionando uma entrada com esta, especificando o domínio e o arquivo com a configuração: zone "joao.com.br" IN { type master; file "/etc/bind/db.joao"; allow-transfer {64.234.23.13;}; } Dentro do arquivo "/etc/bind/db.joao", especificado no arquivo, iria uma configuração similar a esta, especificando o domínio, o nome do servidor e o endereço IP usado por ele, assim como o nome e o endereço IP do servidor DNS secundário: @ IN SOA servidor.joao.com.br. hostmaster.joao.com.br.( 2008061645 3H 15M 1W 1D ) NS servidor.joao.com.br. NS ns2.joao.com.br. IN MX 10 servidor.joao.com.br. joao.com.br. A 64.234.23.12 www A 64.234.23.12 ns1 A 64.234.23.13 Não é necessário que o DNS esteja instalado no mesmo servidor que o Apache, a função dele será unicamente responder às requisições dos clientes, fornecendo o IP correto. Para ativar o uso dos virtual hosts, o primeiro passo é criar uma pasta separada para cada site que será hospedado. Você pode usar a própria pasta "/var/www", como em: # mkdir /var/www/joao # mkdir /var/www/maria

Em seguida, é necessário adicionar uma nova seção dentro da configuração do Apache para cada um, logo depois da configuração do site default. Nas distribuições derivadas do Debian, são usados arquivos de configuração separados para cada site, armazenados na pasta "/etc/apache2/sites-available". Imagine que vamos hospedar os sites "www.joao.com.br" e "www.maria.com.br", usando as duas pastas criadas anteriormente. Criaríamos, então, um arquivo para cada site, contendo o seguinte: - /etc/apache2/sites-available/joao: <VirtualHost *:80> ServerAdmin joao@joao.com.br ServerName www.joao.com.br ServerAlias joao.com.br www.joao.com.br DocumentRoot /var/www/joao </VirtualHost> - /etc/apache2/sites-available/maria: <VirtualHost *:80> ServerAdmin maria@gmail.com ServerName www.maria.com.br ServerAlias maria.com.br www.maria.com.br DocumentRoot /var/www/maria </VirtualHost> Note que adicionei uma nova diretiva, a "ServerAlias", que permite que o site seja acessado tanto com, quanto sem o "www". A linha "ServerAdmin" é, na verdade, opcional, contém apenas o e-mail de contato do administrador do site. A mesma configuração é usada se você quiser hospedar os sites usando subdomínios, como em "joao.gdhn.com.br" e "maria.gdhn.com.br". Nesse caso, não usamos o "www" e, por isso, não precisamos da linha "ServerAlias":

<VirtualHost *:80> ServerAdmin hostmaster@gdhn.com.br ServerName maria.gdhn.com.br DocumentRoot /var/www/maria </VirtualHost> Depois de feita a configuração, ative ambos os sites usando o comando a2ensite, o que criará links para eles na pasta "/etc/apache2/sites-enabled": # a2ensite joao # a2ensite maria Para que a configuração funcione, é necessário editar também o arquivo "/etc/apache2/sites-available/default", substituindo as linhas: NameVirtualHost * <VirtualHost *> Por: NameVirtualHost *:80 <VirtualHost *:80> Essa configuração é necessária para que você possa ativar o suporte a SSL para os virtual hosts. Sem ela, além do SSL não funcionar, você precisaria modificar a configuração de cada um, usando sempre "<VirtualHost *>" ao invés de "<VirtualHost *:80>". Você pode adicionar quantos sites quiser usando esses mesmos passos. Sempre que alterar a configuração, é necessário atualizar a configuração do Apache. Nesse caso, o parâmetro "reload" é suficiente (o "force-reload" é necessário apenas ao ativar ou desativar módulos): # /etc/init.d/apache2 reload Além de configurar o servidor web, é preciso configurar também um servidor FTP ou SFTP, para que os usuários possam acessar os arquivos de suas respectivas pastas, a fim de atualizarem seus sites. A forma mais simples de fazer isso é criar

um usuário para cada um e dar acesso a eles via FTP. Outra opção é utilizar o SFTP, que permite acesso seguro. Veja que as três coisas acabam se integrando: o Bind resolve os nomes de domínio, o Apache fornece as páginas e o FTP ou SFTP permite que os webmasters atualizem os sites. Continuando, ao utilizar o Fedora, CentOS ou outra distribuição derivada do Red Hat, a configuração de todos os virtual hosts é adicionada na seção final do arquivo "/etc/httpd/conf/httpd.conf", depois do "# Section 3: Virtual Hosts". Procure pela seção "Virtual Hosts", perto do final do arquivo, e descomente a linha: NameVirtualHost *:80 A partir daí, você pode adicionar cada um dos sites hospedados no servidor usando a mesma configuração que vimos anteriormente, como em: <VirtualHost *:80> ServerName www.joao.com.br ServerAlias joao.com.br www.joao.com.br DocumentRoot /var/www/joao </VirtualHost> <VirtualHost *:80> ServerName www.maria.com.br ServerAlias maria.com.br www.maria.com.br DocumentRoot /var/www/maria </VirtualHost> A principal diferença nesse caso é que para desativar um determinado site você precisa abrir novamente o arquivo de configuração e remover (ou comentar) a seção referente a ele, em vez de utilizar o "a2dissite", como no Debian. Depois de fazer alterações no arquivo, é necessário recarregar a configuração para que elas entrem em vigor: # service httpd reload

Fazendo dessa forma, os logs de acessos serão misturados no log principal do Apache, o "/var/log/apache2/access.log". Isso não é problema se você está utilizando o Google Analytics ou outra ferramenta externa para auditar os acessos dos sites (ou se simplesmente você não está preocupado em medir os acessos), mas é um grande obstáculo se você pretende usar o webalizer para gerar os relatórios de acesso. Para que cada site tenha seus logs separados, você deve adicionar duas linhas adicionais, na configuração de cada virtual host, especificando a localização do arquivo que será usado. Você com certeza não gostaria que os logs ficassem disponíveis ao público, por isso é importante usar diretórios diferentes para os arquivos do site e para os logs, como em: <VirtualHost *:80> ServerAdmin joao@joao.com.br ServerName www.joao.com.br ServerAlias joao.com.br www.joao.com.br DocumentRoot /var/www/joao/html ErrorLog /var/www/joao/logs/error.log CustomLog /var/www/joao/logs/access.log combined </VirtualHost> Você pode também salvar os logs na pasta de logs padrão do Apache, de forma a se beneficiar do rotacionamento automático de logs oferecido pelo logrotate. Nesse caso, você precisa apenas especificar um arquivo de log diferente para cada site, todos salvos dentro da pasta padrão, como em: <VirtualHost *:80> ServerAdmin joao@joao.com.br ServerName www.joao.com.br ServerAlias joao.com.br www.joao.com.br DocumentRoot /var/www/joao/html ErrorLog /var/log/apache2/joao.error.log CustomLog /var/log/apache2/joao.access.log combined

</VirtualHost> Note que, como todos os sites ficam hospedados no mesmo servidor, a única forma de chegar ao site desejado é fazendo o acesso através do domínio. Se você tentar acessar diretamente o IP do servidor, vai cair no site padrão (configurado através do arquivo "/etc/apache2/sites-available/default"), que, por padrão, usa o raiz da pasta "/var/www". Esta página default pode ser usada para mostrar alguma publicidade da empresa responsável pelo servidor, ou uma lista dos sites hospedados, por exemplo.

Otimizando a configuração do servidor Ao colocar um site no ar, seu objetivo é quase sempre fazer com que ele seja acessado pelo maior volume possível de visitantes. Entretanto, o sucesso tem um preço: o maior volume de requisições faz com que seu servidor web seja mais exigido e ele passe a consumir mais recursos da máquina. A partir de um certo ponto, o servidor passará a ficar saturado nos horários de maior acesso, tornando o acesso ao site lento e fazendo com que o site comece a perder visitantes. Uma das soluções seria simplesmente atualizar o hardware do servidor, resolvendo o problema na base da força bruta. A segunda seria otimizar a configuração do Apache, fazendo com que ele trabalhe de forma mais eficiente. Não existe uma "configuração perfeita" para o Apache, já que a configuração ideal varia de acordo com o tipo de tráfego do site, mas aqui vão algumas dicas que podem ajudar. Uma das configurações mais diretamente relacionadas à performance do servidor e ao consumo de memória é o número de instâncias do servidor httpd. O Apache é capaz de responder a um número indefinido de acessos simultâneos, de acordo com a velocidade do link e dos recursos da máquina. Para cada requisição simultânea, é necessário que exista uma instância do Apache carregada na memória. Quando o cliente acessa uma página, ele monopoliza uma dessas instâncias abertas até que a requisição seja concluída, ou seja, até que a página seja carregada ou o arquivo baixado. Em horários de alta demanda, são abertas mais instâncias do servidor Apache, que vão sendo fechadas (para economizar memória) conforme os acessos diminuem. Nos momentos de pico, o Apache precisa manter mais processos ativos, o que aumenta o consumo de memória no servidor. O uso de processamento, por sua vez, varia bastante de acordo com o tipo de páginas servidas. Páginas em PHP com código não otimizado, scripts em CGI ou servlets Java, por exemplo, podem consumir bastante processamento, fazendo com que o processador se torne um gargalo muito antes da memória RAM, enquanto páginas estáticas ou arquivos disponibilizados para download consomem pouco processamento, fazendo com que a memória RAM e a otimização do servidor sejam as principais prioridades.