(servidor de páginas HTTP)
O servidor de páginas HTTP mais utilizado e conhecido do mundo é o Apache. Ele é bastante robusto, rápido e aceita scripts cgi. Este artigo mostra como instalar e configurar tal servidor.
Instalação do Apache
# apt-get update ; apt-get install apache2
# vi /etc/default/apache2
NO_START=0(linha padrão, se o valor for "0", o Apache será iniciado durante o boot do sistema. Se o valor for "1", o Apache não será iniciado. Deixe o valor em "0")
Salve e Saia do arquivo
Testando
Abra um browser e digite na URL: http://IP_servidor_apache("IP_servidor_apache" deve ser substituído pelo endereço IP do servidor onde foi instaldo o Apache)
Uma messagem "It works!" deverá aparecer"(conforme figura a seguir)

Desabilite o redirecionamento
# vi /etc/apache2/sites-available/default
Comente a linha a seguir deixando-a da seguinte forma:
#RedirectMatch ^/$ /apache2-default/(esta linha redireciona o cliente para o diretório "/var/www/apache2-default/" toda vez que ele acessar o servidor. Após comentar esta linha, basta colocar os seus arquivos html/php em "/var/www/")
Salve e Sai do arquivo
Agora, armazene as suas páginas em:
/var/www
Digite o comando:
/etc/init.d/apache2 restart
Até aqui foram vistas as configurações mínimas para o servidor Apache funcionar. Mas a seguir, será mostrado outras possibilidades que se pode realizar com o Apache ;-)
/etc/init.d/apache2 start (inicia o servico/daemon do Apache, lendo os arquivos de configuracao correspondentes)
/etc/init.d/apache2 stop(para o servico/daemon do Apache)
/etc/init.d/apache2 restart(reinicia o servico/daemon do Apache, lendo os arquivos de configuracao correspondentes)
/etc/init.d/apache2 reload(inicia o servico/daemon do Apache, lendo os arquivos de configuracao correspondentes. Se o servico/daemon nao estiver rodando, ele sera iniciado. O "reload" diferencia de um "restart", pois as conexoes ja abertas nao serao fechadas. O "reload" deve ser sempre usado em um ambiente de producao quando modificar algum arquivo de configuracao, pois os clientes nao notarao que o servico foi reiniciados, ou seja, ocorrera tudo transparentemente)
/etc/init.d/apache2 force-reload(idem)
apache2ctl start (inicia o servico/daemon do Apache, lendo os arquivos de configuracao correspondentes)
apache2ctl stop (para o servico/daemon do Apache)
apache2ctl restart (reinicia o servico/daemon do Apache, lendo os arquivos de configuracao correspondentes)
apache2ctl graceful (idem ao "/etc/init.d/apache2 reload")
apache2ctl graceful-stop (para o servico/daemon do Apache, so que as conexoes ja abertas nao serao fechadas)
apache2ctl configtest (confere a sintaxe dos arquivos de configuracao do Apache)
apache2 -k start (inicia o servico/daemon do Apache, lendo os arquivos de configuracao correspondentes)
apache2 -k stop (para o servico/daemon do Apache)
apache2 -k restart (reinicia o servico/daemon do Apache, lendo os arquivos de configuracao correspondentes)
apache2 -k graceful (idem ao "/etc/init.d/apache2 reload")
apache2 -k graceful-stop (para o servico/daemon do Apache, so que as conexoes ja abertas nao serao fechadas)
apache2 -t (confere a sintaxe dos arquivos de configuracao do Apache)
apache2 -M (mostra os modulos que foram carregados para o Apache)
Para quem trabalha com scripts CGI, eles devem ser colocados em "/usr/lib/cgi-bin/" e fazer os procedimentos a seguir:
# ln -s /usr/lib/cgi-bin/ /var/www/ (cria um link simbólico do local onde estão os scripts cgi)
Para testar, coloque algum script CGI no diretório indicado, abra um browser e digite na URL: http://IP_servidor/cgi-bin/nome_script_cgi(o "IP_servidor" deverá ser substituido pelo endereço IP do servidor Apache e "nome_script_cgi" pelo nome do script CGI. Geralmente, esses scripts tem a extensão ".cgi")
Caso necessite, se pode restringir o acesso a determinados IP ou host
# vi /etc/apache2/sites-available/default(existe um link simbólico para esse arquivo em "/etc/apache2/sites-enabled/000-default")
Vão existir três entradas "Directory /var/www/", "Directory /usr/lib/cgi-bin" e "Directory /usr/share/doc/";
Cada entrada está relacionada aos diretórios "/var/www/", "/usr/lib/cgi-bin" e "/usr/share/doc/", respectivamente;
Em outras palavras, correspondem, na mesma ordem, as páginas HTML, Scripts SGI e Documentos do servidor Apache;
Em cada entrada vai existir uma linha chamada "Allow from all". Basta substituir o "all" pelo o enderço IP ou nome de host que podem ter acesso. Coforme as linhas a seguir:
Allow from 127.0.0.1(endereço IP local)
Allow from 127.0.0.0/255.0.0.0(endereço e máscara de subrede local)
Allow from 172.16.200.20(endereço IP)
Allow from 172.16.200.0/255.255.255.0(endereço e máscara de subrede)
Allow from financeiro01(nome de host)
Allow from matrix.br(somente aos equipamentos desse domínio)
Os endereços que estiverem fora deste escopo, não poderão acessar ;-)
Salve e Saia do arquivo. Digite o comando: "/etc/init.d/apache2 restart"
Caso o servidor Apache tenha mais de uma interface de rede, se pode escolher por qual ele vai trabalhar através do endereço IP. Além disso, se pode mudar a porta TCP:
vi /etc/apache2/ports.conf
Listen 80(linha original indicando que a porta TCP que o servidor trabalha será a 80)
Listen 172.16.200.254:80(especifica que a única interface de rede que o Apache vai trabalhar é a que possui o endereço IP "172.16.200.254". Inclusive será impedido o acesso pelo endereço 127.0.0.1)
Obs: se pode definir mais de um "Listen" e portas diferentes. Conforme linhas abaixo:
Listen 192.168.1.254:80
Listen 10.1.1.254:500
Salve e Saia do arquivo. Digite o comando: "/etc/init.d/apache2 restart"
Em alguns casos não é necessário desabilitar o redirecinamento em "/etc/apache2/sites-available/default" mostrado anteriormente, mas sim realizar um redirecionamento dentro de "/var/www/apache2-default/index.html", como é o caso de páginas web que são instaladas em "/var/lib/nome_software/". Um exemplo é o MediaWiki da Wipedia. O redirecinamento que é mostrado a seguir server para esconder aquela página padrão do Apache e para diminuir o tamanho da URL. Por exemplo, ao invés do cliente digitar "www.matrix.com.br/mediawiki", ele digitará somente "www.matrix.com.br". Na prática isto quer dizer que ao digitar no browser o endereço "www.matrix.com.br/", a página será redirecionada para "www.matrix.com.br/mediawiki". Mais fácil, não:
Para redirecinamento de páginas HTTP# vi /var/www/apache2-default/index.html
<meta http-equiv="refresh" content="0; url=http://nome_da_pagina.html">
Obs: não é necessário reiniciar o serviço do apache ;-)
Para redirecinamento de páginas PHP
# mv /var/www/apache2-default/index.html /var/www/apache2-default/index.html.bkp
# vi /var/www/apache2-default/index.php
<?php header("Location: http://nome_da_pagina.php"); ?>
Obs: apesar dos redirecionamentos, mostrados acima, serem uma mão na roda, não gosto muito, pois ao atualizar o apache (ex: com o apt-get) o arquivo "/var/www/apache2-default/index.html" voltará ao estado original.
Um utilitario importante
# apt-get install apache2-utils
# ab -n 100 -c 1 http://www.hugoazevedo.eti.br:80/
Instalar o OpenSSL
# apt-get install openssl
Módulo SSL para o Apache
# a2enmod ssl (o "a2enmod" tem a função de habilitar módulos para o Apache)
Obs: Os módulos disponíveis ficam em "/etc/apache2/mods-available" e os módulos habilitados ficam em "/etc/apache2/mods-enabled".
Opções para SSL no Apache
# vi /etc/apache2/sites-available/default-ssl ()
SSLEngine on ()
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem (certificado gerado automaticamente ao instalar o Apache)
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key (chave privada RSA gerada automaticamente ao instalar o Apache)
Abrir a porta 443 para o HTTPs
# ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/ ()
# vi /etc/apache2/ports.conf ()
<IfModule mod_ssl.c> ()
Listen 443 ()
</IfModule> ()
Restartando o serviço do Apache
# /etc/init.d/apache2 restart ()
Testando
Abra um browser e digite na URL: https://IP_servidor_apache ("IP_servidor_apache" deve ser substituído pelo endereço IP do servidor onde foi instaldo o Apache)
Uma mensagem relacionada ao certificado deve aparecer. Aceite.
Uma messagem "It works!" deverá aparecer"
Nessa parte relacionada ao HTTPS foi utilizado o certificado e a chave privado RSA padrão que são gerados automaticamente ao instalar o Apache. Contudo, se quiser utilizar seu próprio certificado e chave acesse o artigo relacionado ao CA (Certificate Authority).
MÓDULOS
# httpd -M (ver módulos)
# apache2ctl -M (ver módulos)
# cat /proc/PID_DO_APACHE/maps (ver módulos)
HTPASSWD
# htpasswd -nb admin qweqwe (gera senha em MD5 para o usuário "admin")
# htpasswd -nbm admin qweqwe (idem)
# htpasswd -nbs admin qweqwe (idem, mas para SHA)
# htpasswd -nbB admin qweqwe (idem, mas com muita segurança)
# htpasswd -nbd admin qweqwe (idem, mas com pouca segurança)
# htpasswd -nbp admin qweqwe (idem, mas sem criptografar. Texto puro/claro)
# htpasswd -c /var/www/html/.htpasswd admin (gera senha em MD5 para o usuário "admin" e cria o arquivo oculto ".htpasswd" com essas informações. Se o arquivo ".htpasswd" existir, ele será apagado)
# htpasswd /var/www/html/.htpasswd admin (atualiza a senha em MD5 para o usuário "admin" e acrescenta isso no arquivo oculto ".htpasswd" com essas informações)
VIRTUAL HOST (REDHAT)
vim /etc/httpd/conf.d/matrinux.com.br.conf
<VirtualHost *:80>
ServerName www.matrinux.com.br
DocumentRoot /var/www/html/matrinux.com.br
</VirtualHost>
VIRTUAL HOST COM SERVER ALIAS (REDHAT)
vim /etc/httpd/conf.d/matrinux.com.br.conf
<VirtualHost *:80>
ServerName www.matrinux.com.br
ServerAlias matrinux.com.br
DocumentRoot /var/www/html/matrinux.com.br
</VirtualHost>
VIRTUAL HOST COM LOGS ESPECÍFICOS (REDHAT)
vim /etc/httpd/conf.d/matrinux.com.br.conf
<VirtualHost *:80>
ServerName matrinux.com.br
CustomLog /var/log/httpd/matrinux.com.br-access.log combined
ErrorLog /var/log/httpd/matrinux.com.br-error.log
DocumentRoot /var/www/html/matrinux.com.br
</VirtualHost>
VIRTUAL HOST COM PERMISSÃO 1 (REDHAT)
vim /etc/httpd/conf.d/matrinux.com.br.conf
<VirtualHost *:80>
ServerName www.matrinux.com.br
DocumentRoot /var/www/html/matrinux.com.br
<Directory /var/www/html/caderno.datasebrae.com.br>
Order allow,deny (o deny terá prioridade sobre o allow. Por isso, nesse caso não será utilizado o "Deny from all")
Allow from 10.1.1.15 (permite somente o 10.1.1.15)
</Directory>
</VirtualHost>
VIRTUAL HOST COM PERMISSÃO 2 (REDHAT)
vim /etc/httpd/conf.d/matrinux.com.br.conf
<VirtualHost *:80>
ServerName www.matrinux.com.br
DocumentRoot /var/www/html/matrinux.com.br
<Directory /var/www/html/caderno.datasebrae.com.br>
Order deny,allow (o allow terá prioridade sobre o deny. Por isso, nesse caso deve ser utilizado o "Deny from all")
Deny from all
Allow from 10.1.1.15 (permite somente o 10.1.1.15)
</Directory>
</VirtualHost>
VIRTUAL HOST COM O ".htaccess" (REDHAT)
vim /etc/httpd/conf.d/matrinux.com.br.conf
<VirtualHost *:80>
ServerName www.matrinux.com.br
DocumentRoot /var/www/html/matrinux.com.br
<Directory /var/www/html/caderno.datasebrae.com.br>
AllowOverRide Limit (essa opção informa que as configurações definidas dentro do arquivo oculto ".htaccess" terão prioridade sobre as que estão nos arquivos de configuração do Apache. Ao se modificar esse arquivo ".htacess" não é necessário fazer "reload" ou "restart" no serviço do Apache. O "Limit" especificas que aceitará dentro do ".htaccess" o "Order", "Allow" e "Deny")
</Directory>
</VirtualHost>
vim /var/www/html/matrinux.com.br/wp-admin/.htaccess
Order allow,deny
Allow from 10.1.1.15 (permite acesso ao diretório "/var/www/html/matrinux.com.br/wp-admin" somente ao IP "10.1.1.15". O "wp-admin" seria o diretório/página de administração dessa aplicação)
VIRTUAL HOST - TUDO - VER (REDHAT)
vim /etc/httpd/conf.d/matrinux.com.br.conf
<VirtualHost *:80>
ServerName www.matrinux.com.br
ServerAlias matrinux.com.br
CustomLog /var/log/httpd/matrinux.com.br-access.log combined
ErrorLog /var/log/httpd/matrinux.com.br-error.log
DocumentRoot /var/www/html/matrinux.com.br
<Directory /var/www/html/caderno.datasebrae.com.br>
Options Indexes FollowSymLinks
AllowOverRide all
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
vim /var/www/html/matrinux.com.br/wp-admin/.htaccess
Order allow,deny
Allow from 10.1.1.15 (permite acesso ao diretório "/var/www/html/matrinux.com.br/wp-admin" somente ao IP "10.1.1.15". O "wp-admin" seria o diretório/página de administração dessa aplicação)
Módulo SSL para o Apache
# a2enmod ssl (o "a2enmod" tem a função de habilitar módulos para o Apache)
Obs: Os módulos disponíveis ficam em "/etc/apache2/mods-available" e os módulos habilitados ficam em "/etc/apache2/mods-enabled".
Referências Bibliográgicas
http://imasters.com.br/artigo/11311/apache/configuracao_do_ssl_no_apache/