Apache is the most commonly used Web Server on Linux systems. Web Servers are used to serve Web Pages requested by client computers. Clients typically request and view Web Pages using Web Browser applications such as Firefox, Opera, or Mozilla.
Utilizadores inserem Uniform Resource Locator (URL) para apontar para um servidor Web por meio do Nome de Domínio Qualificado (FQDN) e um caminho para um recurso especifico. Por exemplo, para ver a página principal de Ubuntu Web site um utilizador apenas tem de inserir o FQDN. Para requisitar informação específica sobre Suporte Pago, um utilizador vai introduzir o FQDN seguido de um caminho.
O protocolo mais utilizado para transferir páginas Web é o Protocolo de Transferência de Hiper Texto Hyper Text Transfer Protocol (HTTP). Protocolos tais como o Protocolo de Transferência de Hiper Texto sobre Camadas de Ligação Segura Hyper Text Transfer Protocol over Secure Sockets Layer (HTTPS), ou o Protocolo de transferência de Ficheiros File Transfer Protocol (FTP), que é um protocolo utilizado para enviar e receber ficheiros entre computadores, são também suportados.
Os servidores de Web Apache são frequentemente utilizados conjuntamente com o motor de base de dados MySQL, a linguagem HyperText Preprocessor (PHP), e outras linguagens populares como Python e Perl. Esta configuração é designada por LAMP (Linux, Apache, MySQL and Perl/Python/PHP) e constitui uma plataforma poderosa e robusta para o desenvolvimento e distribuição de aplicações baseadas na Web.
O servidor web Apache2 está disponível no Ubuntu Linux. Para instalar o Apache2:
Num terminal escreva o seguinte comando:
sudo apt-get install apache2
O Apache é configurado adicionando directivas em ficheiros de configuração de texto simples. O ficheiro de configuração principal é o apache2.conf
. Adicionalmente, outros ficheiros de configuração podem ser adicionados utilizando a directiva Include, podendo ser utilizados carácteres de escape para adicionar muitos ficheiros de configuração. Qualquer directiva pode ser colocada em qualquer destes ficheiros de configuração. Alterações nos ficheiros de configuração principais só são reconhecidas pelo Apache2 quando ele for iniciado ou reiniciado.
O servidor lê também um ficheiro contendo tipos de documentos mime; este ficheiro é definido pela directiva TypesConfig, e tem o nome mime.types
por omissão.
O ficheiro de configuração do Apache2, por omissão, é o /etc/apache2/apache2.conf
. Este ficheiro pode ser editado para configurar o servidor Apache2. Podem ser configurados o número da porta, a pasta de documentos de raiz, módulos, ficheiros de registo, máquinas virtuais, etc..
Esta secção explica os parâmetros de configuração essenciais do servidor Apache2. Utilize Documentação Apache2 para mais detalhes.
O Apache2 é acompanhado de uma configuração padrão de um servidor virtual, (utilizando a directiva VirtualHost), que pode ser modificada, ou utilizada tal como está se tiver apenas um site, ou ainda utilizada como modelo para criar servidores adicionais se tiver vários sites. Se for o único, o servidor pré-configurado será o seu sítio padrão, ou seja o sítio web que os utilizadores verão se o URL que escreverem não corresponder a nenuma das directivas ServerName. Para alterar a o servidor virtual padrão edite o ficheiro /etc/apache2/sites-available/default
. Se pretender configurar um novo servidor virtual ou um novo site copie este ficheiro para o directório com um nome igual ao que escolher. Por exemplo, sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mynewsite Edite o novo ficheiro para configurar o novo sítio utilizando algumas das directivas referidas abaixo.
A directiva ServerAdmin especifica o endereço de correio electrónico a ser apresentado como sendo o do administrador do servidor. O valor por omissão é webmaster@localhost. Este deve ser alterado para um endereço de correio electrónico você receba (se você for o administrador do servidor). Se o seu site web tiver um problema, o Apache2 apresentará uma mensagem de erro contendo este endereço de correio electrónico para que o erro possa ser reportado. Encontra esta directiva no ficheiro de configuração dos seus sites /etc/apache2/sites-available
.
A directiva Listen especifica a porta, e opcionalmente o endereço IP que o Apache2 escutará e onde receberá os pedidos. Se o IP não for especificado, o Apache2 escutará todos os endereços atribuídos à máquina onde estiver a correr. O valor por omissão para a directiva Listen é 80. Alterá-la para 127.0.0.1:80 provocará que o Apache2 escutará apenas o interface 'loopback' portanto não será acessível a partir da Internet, para (por exemplo) 81 para alterar a porta que será escutada, ou deixe a ditectiva tal como está para um funcionamento normal. Esta directiva pode ser encontrada e alterada no ficheiro /etc/apache2/ports.conf
.
A directiva ServerName é opcional e especifíca o FQDN o seu sítio deve responder. O servidor virtual por omissão não tem definida a directiva ServerName, por isso responderá a todos os pedidos que não correspondam à directiva ServerName de outro servidor virtual. Se apenas adquiriu o nome de domínio ubunturocks.com e pretende alojá-lo no seu servidor Ubuntu, o valor da directiva ServerName no ficheiro de configuração do seu servidor virtual deverá ser ubunturocks.com . Adicione esta directiva ao ficheiro de servidores virtuais criado antes (/etc/apache2/sites-available/mynewsite
).
![]() |
|
Também pode alterar o seu site para responder como www.ubunturocks.com, dado que muitos utilizadores assumem a utilização do prefixo www. Utilize para isto a directiva ServerAlias. Também pode utilizar carácteres de substituição na directiva ServerAlias. Por exemplo, ServerAlias *.ubunturocks.com fará com que o seu sítio responda a qualquer pedido de um domínio terminado em .ubunturocks.com . |
A directiva DocumentRoot especifíca onde é que o Apache deve procurar os ficheiros que constituem o seu sítio web. O valor por omissão é /var/www . Não existe nenhum sítio configurado nesta pasta, mas se descomentar a directiva RedirectMatch do ficheiro /etc/apache2/apache2.conf
os pedidos serão redireccionados para /var/www/apache2-default onde existe um sítio pré-definido pelo Apache2. Altere este valor no seu ficheiro de servidores virtuais, e lembre-se de criar o directório se necessário!
![]() |
|
O directório /etc/apache2/sites-available not processado pelo Apache2. A ligação simbólica symbolic link /etc/apache2/sites-enabled aponta para sítios "disponíveis". Utilize o utilitário a2ensite (Apache2 Enable Site) para criar estas ligações simbólicas, desta forma: sudo a2ensite omeunovositio em que o ficheiro de configuração do seu sítio é |
Esta secção explica as configurações pré-definidas do servidor Apache2. Por exemplo, se adicionar um servidor virtual, os parâmetros que configurar serão utilizados por esse servidor virtual. Caso uma determinada directiva não esteja configurada para o servidor virtual, serão utilizados os parâmetros pré-definidos do Apache2.
A directiva DirectoryIndex é a página por omissão apresentada pelo servidor quando um utilizador solicitar o conteúdo de um directório, colocando uma barra (/) após o nome do directório.
Por exemplo, quando um utilizador solicita a página http://www.exemplo.pt/este_directorio/, ele/a obterá a página DirectoryIndex se esta existir, a listagem dos ficheiros do directório, gerada pelo servidor, se a página não existir, ou a página Permissão Negada Permission Denied caso as anteriores hipóteses não sejam verdadeiras. O servidor tentará encontrar um dos ficheiros existentes na directiva DirectoryIndex e devolverá o primeiro que encontrar. Se não encontrar nenhum desses ficheiros e se a directiva Options Indexes apontar para esse directório, o servidor gerará e devolverá uma lista, em formato HTML, das sub-directórios e ficheiros existentes no directório. O valor por omissão, existente no ficheiro /etc/apache2/apache2.conf
é " index.html index.cgi index.pl index.php index.xhtml". Assim, se o Apache2 encontrar um ficheiro no directório pedido que corresponda a um destes nomes, o primeiro deles será apresentado.
A directiva ErrorDocument permite-lhe especificar um ficheiro que o Apache utilizará para erros específicos. Por exemplo, se um utilizador solicitar um recurso que não exista ocorrerá um erro 404, e na configuração pré-definida do Apache2, o ficheiro /usr/share/apache2/error/HTTP_NOT_FOUND.html.var
será apresentado. Este ficheiro não está no servidor em DocumentRoot, mas existe uma directiva Alias no ficheiro /etc/apache2/apache2.conf
que redirecciona os pedidos para o directório de erros /usr/share/apache2/error/ . Para ver a lista das directivas de erro ErrorDocument pré-definidas, utilize o comando: grep ErrorDocument /etc/apache2/apache2.conf .
Por omissão, o servidor escreve as transferências executadas para o ficheiro de registos /var/log/apache2/access.log . Pode alterar isto para uma configuração baseada sítio a sítio na ficheiro de configuração dos seus sítios virtuais com a directiva CustomLog, ou omiti-la para aceitar o valor pré-definido, indicado no ficheiro /etc/apache2/apache2.conf
. Também pode indicar o ficheiro no qual serão feitos os registos de erros, através da directiva ErrorLog, que por omissão é /var/log/apache2/error.log
. Estes registos são mantidos separados dos das transferências para ajudar na resolução de problemas com o seu servidor Apache2. Também pode especificar o nível de registo LogLevel (o valor pré-definido é aviso "warn") e o Formato de Registo LogFormat (veja o ficheiro /etc/apache2/apache2.conf
para o valor pré-definido).
Algumas opções são especificadas num sistema de directórios em vez do sistema de servidor. Opção é uma das dorectivas. Uma stanza de directório é um conjunto de tags tipo-XML, como :
<Directory /var/www/mynewsite>
...
</Directory>
a directiva de Opções dentro da stanza de directório apenas aceita um ou mais dos seguintes valores (entre outros), separados por espaços:
ExecCGI - Permitir execução de scripts CGI. Os scripts CGI não são executados se esta opção não for escolhida.
![]() |
|
Grande parte dos ficheiros não devem ser executados como scripts CGI. Isso seria muito perigoso. Scripts CGI devem ser mantidos num directório separado e fora do directório de raiz DocumentRoot, e apenas esse directório deve ter a opção ExecCGI definida. Isto é o predefinido, e a localização por omissão dos scripts CGI é /usr/lib/cgi-bin. |
Includes - Permite inclusões no servidor, isto é, permite que um ficheiro HTML incluir include outros ficheiros. Esta opção não é frequente. Consulte Apache2 SSI - Como fazer para obter mais informação.
IncludesNOEXEC - Permite a inclusão de ficheiros do servidor, mas desabilita os comandos #exec e #include nos programas GCI.
Indexes - Apresenta uma lista formatada do conteúdo do directório, se um dos ficheiros indicados na directiva DirectoryIndex (como por exemplo o index.html) não existir no directório pedido.
![]() |
|
Por razões de segurança, esta opção não deve ser utilizada, e não deve ser certamente utilizada no Directório de Raiz. Habilite esta opção cuidadosamente, directório a directório e apenas se tiver a certeza que os utilizadores vejam o conteúdo completo do directório. |
Multiview - Suporta a apresentação múltipla de conteúdos "negociados"; esta opção está desabilitada por omissão por motivos de segurança. Consulte ulink url="http://httpd.apache.org/docs/2.0/mod/mod_negotiation.html#multiviews">A documentação do Apache2 sobre esta opção
SymLinksIfOwnerMatch - Apenas segue as ligações sinmbólicas se o ficheiro ou directório indicado pela ligação pertencer ao proprietário da ligação.
A opcção Servidores Virtuais permite correr vários servidores em diferentes endereços IP, diferentes nomes de Sítios Web, ou diferentes portas na mesma máquina. Por exemplo, pode ter os sítio web http://www.exemplo.pt e http://www.outroexemplo.pt no mesmo servidor web utilizando servidores virtuais. Esta opção corresponde à directiva <VirtualHost> para o servidor virtual por omissão e para os servidores virtuais baseados em endereços IP. Corresponde à directiva <NameVirtualHost> para servidores virtuais baseados no nome.
As directivas configuradas para um determina servidor virtual, aplicam-se apenas a ele. Se uma determinada directiva for configurada para o servidor global, e não for definida para o servidor virtual, é utilizada a configuração pré-definida para essa directiva. Por exemplo, pode definir um endereço de correio electrónico para o servidor principal, e não definir um endereço específico para cada servidor virtual.
Ajuste a directiva DocumentRoot para o directório que contém o documento de raiz do sítio web (por exemplo index.html). O valor por omissão de DocumentRoot é /var/www
.
A directiva ServerAdmin dentro da stanza do VirtualHost é o endereço de email usado no footer das páginas de erro se escolher mostrar um footer com um endereço de email na página de erros.
Esta secção explica como efectuar as configurações básicas do servidor.
LockFile - A directiva LockFile indica qual o caminho para o ficheiro de bloqueios que o servidor utiliza quando compilado seja com USE_FCNTL_SERIALIZED_ACCEPT ou USE_FLOCK_SERIALIZED_ACCEPT. Deve ser guardado num disco local. Deve ser deixado no valor por omissão a não ser que o directório de registos esteja localizado numa partilha NFS. Neste caso, o valor por omissão deve ser alterado para um directório no disco local que tenha permissões de leitura apenas para o root.
PidFile - A directiva PidFile indica qual o ficheiro em que o servidor deve gravar os seus identificadores de processos Process ID (pid). Este ficheiro deve ter acesso de leitura apenas pelo root. Na maioria dos casos deve ser deixado com o valor por omissão.
User - A directiva User indica a identificação de utilizador utilizada pelo servidor para responder aos pedidos. Esta configuração determina o acesso ao servidor. Quaisquer ficheiros inacessíveis a este utilizador serão também inacessíveis aos visitantes do sítio web. O valor por omissão para User é www-data.
![]() |
|
A não ser que saiba exactamente o que está a fazer, não coloque na directiva User root. Utilizar o root como User criará grandes falhas de segurança no seu servidor Web. |
A directiva Group é semelhante à directiva User. Group indica qual o grupo para o qual o servidor responderá aos pedidos. O grupo por omissão também é www-data.
O Apache é um servidor modular. Isto implica que apenas as funcionalidades mais básicas estão incluídas no núcleo do servidor. Funções adicionais estão disponíveis sob a forma de módulos que podem ser carregados para o Apache. Por omissão, um conjunto base de módulos é incluído no servidor na altura da compilação. Se o servidor estiver configurado para utilizar módulos de carregamento dinâmico, então os módulos podem ser compilados separadamente e adicionados em qualquer altura utilizando a directiva LoadModule. Caso contrário, o Apache tem de ser recompilado para adicionar ou remover módulos. O Ubuntu compila o Apache2 para permitir o carregamento dinâmico de módulos. As directivas de configuração podem ser incluídas condicionalmente para a presença de um módulo em particular colocando-o na secção <IfModule> . Pode instalar módulos adicionais para o Apache2 e incluí-los no seu servidor Web. Pode instalar módulos para o apache utilizando o comando apt-get . Por exemplo, para instalar o módulo do Apache2 para autenticação com o MYSQL, pode utilizar o seguinte comando num terminal:
sudo apt-get install libapache2-mod-auth-mysql
Uma vez instalado o módulo, ele estará disponível no directório /etc/apache2/mods-available
. Pode utilizar o comando a2enmod para habilitar um módulo. Para desabilitá-lo utilize o comando a2dismod. Uma vez habilitado um módulo este estará disponível no directório /etc/apache2/mods-enabled
.
O módulo mod_ssl adiciona uma importante funcionalidade ao servidor Apache2 - a capacidade de codificar comunicações. Assim, quando o seu navegador comunicar utilizando codificação SSL, o prefixo https:// é utilizado no início do Uniform Resource Locator (URL) na barra de endereços.
O módulo mod_ssl está disponível no pacote apache2-common. Se instalou este pacote, pode executar o seguinte comando num terminal para habilitar o módulo mod_ssl.
sudo a2enmod ssl
Para configurar o seu servidor seguro, utilize a encriptação pública de chaves para criar um par chave pública e chave privada. Na maioria dos casos, você envao p seu pedido de certificado (incluindo a sua chave pública), comprova a identidade da sua empresa, e um pagamento para uma Autoridade de Certificação (AC) Certificate Authority (CA) . A AC verifica o pedido de certificado e a sua identidade, e seguidamente envia um certificado para o seu servidor seguro.
Alternativamente, você pode criar o seu próprio certificado auto-autenticado. Note, no entanto, que o certificados auto-autenticados não devem ser utilizados na maioria dos ambientes de trabalho. Os certificados auto-autenticados não são automaticamente aceites pelos navegadores dos utilizadores, sendo solicitado a esses solicitado a esses utilizadores que aceitem o certificado e criem a ligação segura.
Uma vez que tenha criado um certificado auto-autenticado ou um certificado assinado por uma AC, necessita instalá-la no seu servidor seguro.
Você necessita uma chave e um certificado para o funcionamento do seu servidor seguro, o que significa que pode gerar um certificado auto-autenticado ou adquirir um certificado autenticado por uma Autoridade de Certificação. O certificado adquirido fornece duas importantes capacidades ao seu servidor.
Os navegadores (habitualmente) reconhecem o certificado e permitem o estabelecimento de uma ligação segura sem perguntar ao utilizador.
Quando uma Autoridade de Certificação emite um certificado assinado, está garantida a identidade da organização que fornece as páginas web ao navegador.
A maioria dos navegadores Web que suportam SSL têm uma lista de ACs cujos certificados são automaticamente aceites. Se um navegador encontra um certificado cuja AC não está na lista, o navegador pergunda ao utilizador se aceita ou não a ligação.
Pode gerar um certificado auto assinado para o seu servidor seguro, mas tenha conciência de que esse certificado não oferece as mesmas funcionalidades que o certificado assinado por uma AC. Um certificado auto assinado não é automaticamente reconhecido pela maioria dos navegadores e não garante a identidade da organização que fornece o sítio web. Um certificado assinado por uma AC oferece estas duas importantes funcionalidades para um servidor seguro. O processo de obtenção de um certificado de uma AC é bastante simples. Numa rápida visão é como se segue:
Criar um par chave privada e chave pública de codificação.
Criar um pedido de certificado baseado numa chave pública. O pedido de certificado contém informação acerca do seu servidor e da empresa que o hospeda.
Envie o pedido de certificado junto com documentos comprovando a sua identidade para a Autoridade de Certificação. Não podemos dizer-lhe qual autoridade de certificação a escolher. A sua decisão pode ser baseada em experiências anteriores, experiências de amigos ou colegas ou até em factores económicos.
Uma vez se tenha decidido sobre uma AC, necessita seguir as instruções que eles lhe tenham fornecido sobre a obtenção do certificado.
Quando a AC se considerar que você ou a sua empresa são quem afirmam ser, enviar-lhe-ão o certificado digital.
Instale esse certificado no seu servidor seguro, e comece a utilizar transacções seguras.
Quer obtenha um certificado de uma AC quer gere o seu próprio certificado, o primeiro passo é gerar uma chave.
Para gerar o Pedido de Assinatura de Certificado (CSR), deve criar a sua própria chave. Pode executar o seguinte comando num terminal para criar a chave:
openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus .....................++++++ .................++++++ unable to write 'random state' e is 65537 (0x10001) Enter pass phrase for server.key:
Pode agora digitar a sua palavra passe. Para melhor segurança, ela deve conter pelo menos oito carácteres. O comprimento mínimo quando se especifica -des3 é quatro carácteres. Deve conter algarismos e/ou pontuação e não ser uma palavra de dicionário. Lembre-se ainda que a sua palavra passe é sensível a carácteres maiúsculos ou minúsculos.
Volte a inserir a palavra passe para verificação. Uma vez que a tenha reinserido correctamente, a chave do servidor é gerada e guardada no ficheiro server.key
.
![]() |
|
Pode ainda correr o seu servidor web seguro sem palavra passe. Isso é conveniente porque assim não vai precisar de inserir a palavra passe sempre que inicie o seu servidor web seguro. No entanto isso é altamente inseguro e uma chave comprometida significa também o comprometimento do servidor. |
Em qualquer dos casos, pode optar por correr o seu servidor web seguro sem a palavra passe deixando de fora a opção -des3 aquando da fase de geração ou utilizando o seguinte comando num terminal:
openssl rsa -in server.key -out server.key.insecure
Uma vez que tenha executado o comando anterior, a chave insegura vai ser guardada no ficheiro server.key.insecure
. Pode usar este ficheiro para gerar o CSR sem palavra passe.
Para criar o CSR, execute o seguinte comando no terminal:
openssl req -new -key server.key -out server.csr
Ele vai pedir-lhe que insira a frase passe. Se inserir a frase correcta , vai pedir-lhe que indique o nome da empresa (Company Name), o endereço do servidor Web (Site Name), correio electrónico (Email ld), etc.. Após o fornecimento de todos estes dados, o seu CSR será gerado e guardado no ficheiro server.csr
. Pode submeter este ficheiro CSR a um AC para processamento. O CAN utilizará este CSR e emitirá o certificado. Por outro lado, pode criar um certificado auto assinado utilizando este CSR.
Para criar um certificado auto assinado, execute o seguinte comando num terminal:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
O comando anterior vai solicitar-lhe a frase passe. Uma vez introduzida a frase correcta, o seu certificado será gerado e guardado no ficheiro server.crt
.
![]() |
|
Se o seu servidor seguro se destina a ser usado num ambiente de produção, provavelmente vai necessitar de um certificado AC assinado. Não é recomendado o uso de certificados auto assinados. |
Pode instalar o ficheiro chave server.key
e o ficheiro de certificado server.crt
ou ainda o ficheiro certificado enviado pelo seu AC executando os seguintes comandos no terminal:
sudo cp server.crt /etc/ssl/certs sudo cp server.key /etc/ssl/private
Deverá adicionar as quatro linhas seguintes ao ficheiro /etc/apache2/sites-available/default
ou ao ficheiro de configuração da sua máquina virtual segura. Deve colocar as linhas na secção VirtualHost. Devem ser colocadas depois da linha DocumentRoot:
SSLEngine on SSLOptions +FakeBasicAuth +ExportCertData +CompatEnvVars +StrictRequire SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key
HTTPS deverá escutar no número de porto 443. Deverá adicionar a linha seguinte ao ficheiro /etc/apache2/ports.conf
:
Listen 443
Uma vez instalado o certificado, deverá reiniciar o seu servidor web. Para o reiniciar pode executar o comando seguinte num terminal:
sudo /etc/init.d/apache2 restart
![]() |
|
Deve relembrar e inserir a frase passe de cada vez que inicia o seu servidor web seguro. |
A frase passe ser-lhe-á pedida. Uma vez que tenha introduzido a frase correcta, o servidor web seguro será iniciado. Para aceder às páginas do servidor seguro digite https://nome_seu_servidor/url/ na barra de endereços do seu navegador.