Instalando e configurando Apache2 com suporte PHP e SSL

Instalando os pacotes

Primeiramente vamos instalar os pacotes necessários

root@debian:~# aptitude install apache2 apache2-utils libapache2-mod-php5
root@debian:~# aptitude install php5 php5-cgi php5-gd php5-snmp php-pear

Configurando o Apache2

No Debian GNU/Linux, a configuração do apache é extremamente enxuta, não havendo, no meu ponto de vista, realizar quqlquer alteração no arquivo apache2.conf. As alterações ficarão por conta dos domínios virtuais que veremos mais adiante.

Domínios Virtuais

root@debian:~# cd /etc/apache2/sites-available
root@debian:/etc/apache2/sites-available# ls

default

Note que o único arquivo que vem configurado por padrão é o arquivo default. No Debian GNU/Linux, existe um link simbólico que é criado em /etc/apache2/sites-enabled que habilita/desabilita os domínios virtuais do apache2.

root@debian:/etc/apache2/sites-available# ls -l ../sites-enabled/

total 0
lrwxrwxrwx 1 root root 36 2009-02-09 05:57 000-default -> /etc/apache2/sites-available/default

Nesse ponto, vamos desabilitar o ambiente default que o apache2 cria na instalação e criar o(s) nosso(s) próprio(s) .

root@debian:/etc/apache2/sites-available# a2dissite default
Site default disabled.
Run '/etc/init.d/apache2 reload' to activate new configuration!
root@debian:/etc/apache2/sites-available# ls -l ../sites-enabled/
total 0

Note que o apache2 pede para realizar um reload no serviço, mas não precisamos realizar isso agora, pois ainda iremos fazer mais alterações no ambiente.

O passo agora é criar o(s) domínio(s) virtual(is) desejados.

root@debian:/etc/apache2/sites-available# vi www.dominio.com.br

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

        DocumentRoot /var/www/site
        <Directory /var/www/site>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /var/www/site/cgi-bin/
        <Directory "/var/www/cgi-bin">
                AllowOverride None
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On
</VirtualHost>

Obs.: Um modelo de arquivo para domínio virtual pode ser baixado em http://downloads.fabriciovc.eti.br/apache/.

Nota: Para outros domínios virtuais, apenas crie um arquivo igual ao apresentado para cada domínio virtual desejado.

Em seguida cadastre o IP que será utilizado pelo domínio que está sendo confurado.

root@debian:/etc/apache2/sites-available# vi ../httpd.conf

NameVirtualHost 72.233.116.82:80

Não podemos esquecer de ativar o domínio recem configurado.

root@debian:/etc/apache2/sites-available# a2ensite www.dominio.com.br
Enabling site www.dominio.com.br.
Run '/etc/init.d/apache2 reload' to activate new configuration!
root@debian::/etc/apache2/sites-available# l ../sites-enabled/
total 0
lrwxrwxrwx 1 root root 49 2009-02-13 12:13 www.dominio.com.br -> /etc/apache2/sites-available/www.dominio.com.br

Também precisamos acertar o arquivo ports.conf pois não estamos usando a configuração default.

root@debian:/etc/apache2/sites-available# vi ../ports.conf

#NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>

E para finalizar, reinicie o serviço do apache2.

root@debian:/etc/apache2/sites-available# /etc/init.d/apache2 stop
root@debian:/etc/apache2/sites-available# /etc/init.d/apache2 start

Configurando o suporte a SSL

Primeiramente precisamos habilitar o módulo SSL.

root@debian:~# a2enmod ssl

Enabling module ssl.

Run '/etc/init.d/apache2 restart' to activate new configuration!

Gerando o certificado

O próximo passo, é gerar a chave privada(.key), a requisição de certificado(.csr) e o certificado(.crt) para o funcionamento do apache com criptografia.

root@debian:~# mkdir /etc/apache2/ssl
root@debian:~# cd /etc/apache2/ssl
root@debian:/etc/apache2/ssl# openssl genrsa -out dominio.com.br.key 1024
root@debian:/etc/apache2/ssl# openssl req -new -key dominio.com.br.key -out dominio.com.br.csr
root@debian:/etc/apache2/ssl# openssl x509 -req -days 3650 -in dominio.com.br.csr -signkey dominio.com.br.key -out dominio.com.br.crt

Configurando o apache

Editando os arquivos de configuração.

root@debian:~# vi /etc/apache2/ports.conf

#NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
</IfModule>
root@debian:~# vi /etc/apache2/httpd.conf

NameVirtualHost 72.233.116.82:80
NameVirtualHost 72.233.116.82:443
root@debian:~# cd /etc/apache2/sites-available
root@debian:/etc/apache2/sites-available# vi www.dominio.com.br

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

        DocumentRoot /var/www/site
        <Directory /var/www/site>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /var/www/site/cgi-bin/
        <Directory "/var/www/cgi-bin">
                AllowOverride None
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On
</VirtualHost>

<VirtualHost www.dominio.com.br:443>
        ServerAdmin webmaster@dominio.com.br
        ServerName www.dominio.com.br
        ServerAlias www.dominio.com.br

        DocumentRoot /var/www/site
        <Directory /var/www/site>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

	SSLEngine on

	SSLCertificateFile /etc/apache2/ssl/dominio.com.br.crt
	SSLCertificateKeyFile /etc/apache2/ssl/dominio.com.br.key

        ScriptAlias /cgi-bin/ /var/www/site/cgi-bin/
        <Directory "/var/www/cgi-bin">
                AllowOverride None
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On
</VirtualHost>

Reinicie o serviço apache.

root@debian:~# /etc/init.d/apache2 stop
root@debian:~# /etc/init.d/apache2 start

Voltar

linux/artigos/apache-completo_php_ssl.txt · Última modificação: 13/01/2015 10:44 (edição externa)