Mostrando postagens com marcador REDE LINUX. Mostrar todas as postagens
Mostrando postagens com marcador REDE LINUX. Mostrar todas as postagens

domingo, 7 de outubro de 2012

Limpando o cache do squid no Debian Squeeze

Vou mostra nesse passo a passo, super fácil, como limpar o cache do squid, estou utilizando o debian Squeeze, mas poderá ser usado como modelo em qualquer distribuição, ok, então mãos na massa:

Primeiramente vamos entrar com o comando df, assim podemos visualizar onde o espaço disponível está mais critico, como podemos verificar abaixo /var está com seu espaço totalmente comprometido.



Antes de começar com limpeza, vamos parar o serviço "squid", # /etc/init.d/squid stop , conforme imagem abaixo:


Agora sim com o serviço parado, vamos até a pasta onde o squid armazena o seu cache, # cd /var/spool/squid , aqui entramos com o comando ls para listar tudo que contém nessa pasta, conforme imagem abaixo:


digitamos o comando # rm -rf * , para apagar todos os aquivos e diretórios dentro dessa pasta, aqui é importante executar esse comando dentro da pasta squid, caso contrário teremos que criar novamente a pasta com suas devidas permissões, depois digitamos o comando ls e verificamos que a pasta squid, está vazia.



 agora precisamos recriar os diretórios excluídos, para que o squid volte a funcionar, então digitamos # squid -z , e com o comando ls verificamos que os diretórios foram recriados.


com os diretórios criados, agora vamos iniciar o serviço do squid com o comando # /etc/init.d/squid start , pronto squid funcionando e com o comando df verificamos que o espaço total utilizado diminui, agora sendo possível a nevegação na internet.



domingo, 1 de agosto de 2010

Sincronizando horário de servidor Linux com NTPD do Brasil


Instalação para GNU/Linux e outros sistemas baseados em unix.

Para GNU/Linux, FreeBSD, OpenBSD e outros sistemas baseados em unix, utilize o método de instalação apropriado para sua distribuição. Para algumas distribuições a tabela abaixo indica uma das possíveis formas de instalação. Pode haver métodos alternativos para a instalação, por isso é recomendável consultar a documentação da sua distribuição. 

Pode-se também realizar a instalação manual, baseada nos fontes, para isso consulte a seção Utilizando . Se você estiver instalando o ntp com a finalidade de ser um servidor de tempo para sua rede, é recomendável fazer a instalação à partir dos fontes.
SistemaInstalação
Debian GNU/Linux e sistemas que usam apt (Ubuntu, Kurumin, Conectiva, etc)root@host# apt-get update root@host# apt-get install ntp
RedHat GNU/Linux e sistemas que usam rpm (Fedora, etc):root@host# yum install ntp
Gentoo GNU/Linux:root@host# emerge sync root@host# emerge ntp
Slackware GNU/Linux:root@host# slackpkg update root@host# slackpkg install ntp
FreeBSD e OpenBSD# cd /usr/ports/net/ntp # make install
As distribuições acima podem ter métodos alternativos para a instalação, verifique a documentação de sua distribuição. Para outras distribuições verifique o método de instalação recomendado na documentação. Pode-se também realizar a instalação manual, baseada nos fontes, para isso consulte a seção Utilizando deste site. Após instalar o ntp, crie o arquivo ntp.drift com o comando:
# touch /etc/ntp.drift
Se a hora de seu computador estiver com um erro maior do que 16min o ntp pode não funcionar. Se for o caso, ajuste a hora manualmente, antes de iniciar o ntpd. Ou então execute o ntpd com os parâmetros abaixo, para um primeiro ajuste, e depois inicie o serviço:
# ntpd -q -g 
Substitua o conteúdo do arquivo de configuração padrão /etc/ntp.conf pela configuração abaixo. Esse arquivo pode ser baixado aqui.

# "memoria" para o escorregamento de frequencia do micro
# pode ser necessario criar esse arquivo manualmente com
# o comando touch ntp.drift
driftfile /etc/ntp.drift

# estatisticas do ntp que permitem verificar o historico
# de funcionamento e gerar graficos
statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

# servidores publicos do projeto ntp.br
server a.ntp.br iburst
server b.ntp.br iburst
server c.ntp.br iburst

# outros servidores
# server outro-servidor.dominio.br iburst

# configuracoes de restricao de acesso
restrict default kod notrap nomodify nopeer

Após modificar a configuração é preciso reiniciar o ntpd.





Configurando o APT no Debian



Para utilizar o APT é necessário, antes de mais nada, configurá-lo. A primeira coisa a
ser fazer é escolher um repositório de pacotes do Debian, de onde os pacotes serão
baixados. Esse informação será adicionada no arquivo/etc/apt/sources.list.
No sources.list ficam listadas as fontes de pacotes do Debian, que podem ser:
  • CD-ROM's do Debian;
  • repositórios FTP;
  • repositórios HTTP;
  • repositórios locais.
Veja um exemplo de conteúdo do sources.list:
$ cat /etc/apt/sources.list
#deb file:///cdrom/ sarge main
#deb http://linux.iq.usp.br/debian stable main non-free-contrib

deb http://debian-br-cdd.alioth.debian.org/debian 1.0 main
deb http://linux.iq.usp.br/debian unstable main contrib non-free
deb http://www.las.ic.unicamp.br/pub/debian/ unstable main 
contrib non-free
Cada uma das linhas corresponde a uma fonte utilizada pelo APT. As linhas comentadas
com um "#" não serão utilizadas.
Cada linha é formada da seguinte forma:
[pacote] [URI] [distribuição] [seções]
Sendo:
  • pacote: Os repositórios do Debian contém, além dos binários .deb, os fontes de alguns
pacotes, que podem ser baixados com o APT. Para configurar o APT para baixar os pacotes
.deb,colocamos deb, para baixar os fontes, colocamos deb-src;
  • URI: A localização principal dos arquivos. O APT pode buscar pacotes de diversos locais, 
utilizando os seguintes protocolos:
  • file:/ - arquivos gravados localmente, no HD;
  • cdrom:/ - CD-ROM oficial de alguma versão do Debian;
  • http:// - servidor de arquivos HTTP (Internet);
  • ftp:// - servidor de arquivos FTP (Internet);
  • copy:/ - o mesmo que o protocolo file:/, com a diferença de que os arquivos são 
copiados para o diretório de cache, ao invés de serem usados diretamente a partir de seu
local original; rshssh - pode-se ainda utilizar conexão a um computador remoto utilizando
uma conexão segura via SSHou RSH.
  • distribuição: Como você sabe, os pacotes do Debian são separados em categorias, 
de acordo com seu estágio de estabilidade. Aqui, deve-se especificar qual categoria de
pacotes se deseja utilizar. As categorias são:


  • stable: pacotes exaustivamente testados, considerados estáveis, porém antigos;
  • testing: pacotes em fase de testes, mais recentes que os pacotes da stable;
  • unstable: versão mais recente dos pacotes Debian;
  • versões do Debian: existem ainda, as versões com os pacotes oficiais das versões do 
Debian.

    Para acessá-las, basta utilizar o codinome das distribuições, como sargeetch ou sid ;
    outras: existem muitos repositórios não-oficiais do Debian que utilizam outras notações
    de distribuições. Um exemplo é o repositório do Debian-BR-CDD, cuja distribuição
    utilizada na entrada do sources.list é 1.0.


    • seções: Nos repositórios oficiais existem 3 seções de pacotes, a saber:

    • main: seção principal, contendo somente pacotes de Software Livre;
    • non-free: pacotes que não são Software Livre, porém gratuitos;
    • contrib: pacotes que são Software Livre, mas que precisam de alguns 
    pacotes da seção non-free para funcionarem.

    Assim, consideremos a seguinte linha:
    deb http://linux.iq.usp.br/debian unstable main contrib non-free
    
    Podemos ver que ela configura o APT para baixar pacotes .deb. Se quisermos configurar o
    APT para baixar códigos-fontes, basta trocar deb por deb-src:
    deb-src 
    http://linux.iq.usp.br/debian unstable main contrib non-free
    
    Vemos, também, que ele baixa pacotes da distribuição unstable. Se estivermos utilizando o
    Debian num servidor, é interessante baixar os pacotes da versão stable. Para isso, basta
    trocar unstable por stable:
    deb 
    http://linux.iq.usp.br/debian stable main contrib non-free
    
    Vemos também que o APT vai procurar pacotes em todas as seções, ou seja, maincontrib e
    non-free.
    Se você desejar apenas Software Livre no seu sistema, vamos deixar apenas a seção main
    configurada, removendo as seções non-freecontrib:
    deb http://linux.iq.usp.br/debian unstable main
    

    Configuração básida do proxy squid no debian

    http_port 3128
    visible_hostname proxy
    #ftp_user asdf@asdf.com
    cache_mem 64 MB
    maximum_object_size_in_memory 64 KB
    maximum_object_size 300 MB
    minimum_object_size 0 KB
    cache_swap_low 90
    cache_swap_high 95
    cache_dir ufs /var/spool/squid 1000 16 256
    refresh_pattern ^ftp: 15 2% 2280
    refresh_pattern ^gother: 15 0% 2280
    refresh_pattern . 15 20% 2280
    cache_effective_user squid
    cache_access_log /var/log/squid/access.log
    acl all src 0.0.0.0/0.0.0.0
    acl permitidos src 192.168.0.0
    acl localhost src 127.0.0.1/255.255.255.255
    acl redelocal src 192.168.0.0/24
    http_access allow localhost
    http_access allow permitidos

    #abaixo vem a indicacao para o arquivo que contera as palavras
    #que nao poderao conter nos sites que os usuarios visita
    #no arq. excecoes, havera palavras que anulam a proibicao
    #como por exmplo sexoesaude

    acl proibidos url_regex "/etc/squid/proibidos"
    acl excecoes url_regex "/etc/squid/excecoes"
    http_access deny proibidos !excecoes

    #as acls a seguir, bloqueiam downloads pela extensoes dos arquivos
    #voce adiciona novas extensoes da mesma forma

    acl exe url_regex -i .exe
    acl zip url_regex -i .zip
    acl rar url_regex -i .rar
    acl scr url_regex -i .src
    acl msi url_regex -i .msi
    acl wmv url_regex -i .wmv
    acl pif url_regex -i .pif
    acl avi url_regex -i .avi
    http_access deny exe !excecoes
    http_access deny zip !excecoes
    http_access deny rar !excecoes
    http_access deny scr !excecoes
    http_access deny msi !excecoes
    http_access deny wmv !excecoes
    http_access deny pif !excecoes
    http_access deny avi !excecoes
    http_access allow redelocal
    http_access deny all

    #proxy transparente

    httpd_accel_host virtual
    httpd_accel_port 80
    httpd_accel_with_proxy on
    httpd_accel_uses_host_header on

    sábado, 25 de julho de 2009

    Referencia de Comandos LINUX/UNIX


    Um excelente guia de comandos Linux, uma verdadeira mão na roda, mais uma ajuda de http://www.redesconexao.blogspot.com/



    File Commands

    ls - directory listing
    ls -al – formatted listing with hidden files
    cd dir - change directory to dir
    cd – change to home
    pwd – show current directory
    mkdir dir – create a directory dir
    rm file – delete file
    rm -r dir – delete directory dir
    rm -f file – force remove file
    rm -rf dir – force remove directory dir *
    cp file1 file2 – copy file1 to file2
    cp -r dir1 dir2 – copy dir1 to dir2; create dir2 if it doesn't exist
    mv file1 file2 – rename or move file1 to file2 if file2 is an existing directory, moves file1 into directory file2
    ln -s file link – create symbolic link link to file touch file – create or update file
    cat > file – places standard input into file
    more file – output the contents of file
    head file – output the first 10 lines of file
    tail file – output the last 10 lines of file
    tail -f file – output the contents of file as it grows, starting with the last 10 lines

    Process Management

    ps – display your currently active processes
    top – display all running processes
    kill pid – kill process id pid
    killall proc – kill all processes named proc *
    bg – lists stopped or background jobs; resume a stopped job in the background
    fg – brings the most recent job to foreground
    fg n – brings job n to the foreground

    File Permissions

    chmod octal file – change the permissions of file to octal, which can be found separately for user, group, and world by adding:
    ● 4 – read (r)
    ● 2 – write (w)
    ● 1 – execute (x)
    Examples:
    chmod 777 – read, write, execute for all
    chmod 755 – rwx for owner, rx for group and world
    For more options, see man chmod.

    SSH

    ssh user@host – connect to host as user
    ssh -p port user@host – connect to host on port
    port as user
    ssh-copy-id user@host – add your key to host for
    user to enable a keyed or passwordless login

    Searching

    grep pattern files – search for pattern in files
    grep -r pattern dir – search recursively for pattern in dir
    command grep pattern – search for pattern in the output of command
    locate file – find all instances of file

    System Info

    date – show the current date and time
    cal – show this month's calendar
    uptime – show current uptime
    w – display who is online
    whoami – who you are logged in as
    finger user – display information about user
    uname -a – show kernel information
    cat /proc/cpuinfo – cpu information
    cat /proc/meminfo – memory information
    man command – show the manual for command
    df – show disk usage
    du – show directory space usage
    free – show memory and swap usage
    whereis app – show possible locations of app
    which app – show which app will be run by default

    Compression

    tar cf file.tar files – create a tar named file.tar containing files
    tar xf file.tar – extract the files from file.tar
    tar czf file.tar.gz files – create a tar with

    Gzip compression

    tar xzf file.tar.gz – extract a tar using Gzip
    tar cjf file.tar.bz2 – create a tar with Bzip2 compression
    tar xjf file.tar.bz2 – extract a tar using Bzip2
    gzip file – compresses file and renames it to file.gz
    gzip -d file.gz – decompresses file.gz back to file

    Network

    ping host – ping host and output results
    whois domain – get whois information for domain
    dig domain – get DNS information for domain
    dig -x host – reverse lookup host
    wget file – download file
    wget -c file – continue a stopped download

    Installation

    Install from source:
    ./configure
    make
    make install
    dpkg -i pkg.deb – install a package (Debian)
    rpm -Uvh pkg.rpm – install a package (RPM)

    Shortcuts

    Ctrl+C – halts the current command
    Ctrl+Z – stops the current command, resume with fg in the foreground or bg in the background
    Ctrl+D – log out of current session, similar to exit
    Ctrl+W – erases one word in the current line
    Ctrl+U – erases the whole line
    Ctrl+R – type to bring up a recent command
    !! - repeats the last command
    exit – log out of current session

    * use with extreme caution.

    sábado, 18 de julho de 2009

    Instalando o MYSQL


      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:

      # apt-get install mysql-server ou # yum install 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).

      Antes de iniciar o serviço, rode o comando "mysql_install_db", que cria a base de dados "mysql", usada para armazenar informações sobre todas as outras criadas posteriormente, e uma base chamada "test", que pode ser usada para testar o servidor:

      # mysql_install_db

      O passo seguinte é ativar o servidor:

      # /etc/init.d/mysql start

      No caso do Fedora, o serviço se chama "mysqld", ao invés de simplesmente "mysql", como no 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 123456

      Se você precisar trocar a senha posteriormente, é necessário acrescentar o parâmetro "-p" antes do "password" e especificar a nova senha, como em:

      # mysqladmin -u root -p password asdfg

      Enter password:

      Note que nesse caso o comando solicita a senha antiga 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.

        Existem muitas interfaces de administração para o MySQL, mas a forma mais elementar é usar o prompt de comando. Para acessar o prompt do MySQL, use o comando :

        # mysql -u root -p

        Enter password:

        Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 43 to server version: 4.0.15-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>

        Veja que o cabeçalho normal do bash foi substituído por um "mysql>", que lembra onde você está ;). Para sair, pressione "Ctrl+C" ou execute o comando "Bye".

        Dentro do prompt, use o comando "create database" (criar base de dados), seguido pelo nome desejado. Neste exemplo, estou criando uma base de dados para usar na instalação do phpBB, que veremos a seguir. Um detalhe importante é que todos os comandos dados dentro do prompt do MySQL devem terminar com ponto-e-vírgula:

        mysql> CREATE DATABASE phpbb; Query OK, 1 row affected (0.04 sec)

        Para confirmar, use o comando "SHOW DATABASES;", que lista as bases de dados criadas no servidor, como em:

        mysql> SHOW DATABASES;

        +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | phpbb | | test | +--------------------+

        Note que além da base "phpbb" que criamos, existem mais três bases de dados, criadas durante a instalação. As bases "mysql" e "information_schema" são para uso interno do MySQL, incluindo o armazenamento das configurações (sendo um banco de dados, o MySQL usa a sí mesmo para armazenar suas configurações :), enquanto a base "test" é uma DB vazia, que pode ser usada para fins de teste.

        Temos em seguida a questão das permissões de acesso. Nada impede que você sempre utilize a conta "root" do MySQL e inclusive configure os scripts instalados para o utilizarem. Entretanto, isso é extremamente inseguro, principalmente se você pretende instalar vários scripts e aplicativos no mesmo servidor, ou se as bases de dados serão acessadas por vários usuários.

        O ideal é que cada base de dados tenha um usuário próprio e seja acessível apenas por ele. Se você vai instalar o phpBB (fórum) e o Xoops (gerenciador de conteúdo), por exemplo, crie duas bases de dados ("phpbb" e "xoops", por exemplo) e dois usuários separados, cada um com permissão para acessar uma das duas bases.

        Na configuração de cada um, informe a base de dados a ser usada e o usuário e senha correspondente. Isso evita que eventuais problemas de segurança em um coloquem em risco também os dados referentes ao outro.

        Outra situação comum é ao configurar um servidor com vários virtual hosts. Nesse caso, o webmaster de cada site vai precisar de uma ou mais bases de dados e, naturalmente, cada um vai precisar de um login próprio, com acesso apenas às suas próprias bases de dados.

        Para criar um usuário "phpbb", com senha "12345" e dar a ele acesso à base de dados "phpbb" que criamos, use (dentro do prompt do MySQL) o comando:

        mysql> GRANT ALL ON phpbb.* TO phpbb IDENTIFIED BY '12345'; (permita tudo na base phpbb para o usuário phpbb, identificado pela senha 12345)

        Para trocar a senha posteriormente, use o comando:

        mysql> SET PASSWORD FOR phpbb = PASSWORD('123456'); (defina senha para o usuário phpbb, onde a senha é 123456)

        Este mesmo comando pode ser usado para trocar a senha do root, como em:

        mysql> SET PASSWORD FOR root = PASSWORD('asdfgh');

        Se mais tarde você precisar remover as permissões de acesso de um usuário anteriormente criado (em um site com vários webmasters, onde um se desligou da equipe, por exemplo) use o comando:

        mysql> REVOKE ALL ON phpbb.* FROM phpbb; (remova todos os direitos para a base phpbb, para o usuário phpbb)

        Para remover uma base de dados, use o comando "DROP DATABASE", como em:

        mysql> DROP DATABASE phpbb;

        Veja que os comandos usados dentro do prompt do MySQL seguem uma linguagem literal, usando palavras do inglês. Quem tem uma boa familiaridade com a língua tem bem mais facilidade em dominar os comandos.

        Outra observação é que os comandos não são case sensitive. Tanto faz escrever "CREATE DATABASE phpbb;" ou "create database phpbb;". Escrever os comandos em maiúsculas é apenas uma forma de dar mais destaque a eles.

        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

        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 phpMyAdmim é um script em PHP, que trabalha em conjunto com o Apache. O script de pós-instalação incluído no pacote do Debian faz a configuração inicial para você, perguntando se ele deve ser configurado para trabalhar em conjunto com o Apache (1.3), Apache-ssl (ainda na versão 1.3) ou Apache 2 (a opção correta em nosso caso). O SSL permite que a interface de administração seja acessada via https, onde os dados são transmitidos de forma encriptada, melhorando a segurança. Ao usar o Apache 2, o acesso via SSL fica automaticamente habilitado, desde que você tenha habilitado o SSL no servidor, como vimos há pouco.

        Depois de instalado, acesse o endereço "http://127.0.0.1/phpmyadmin/" ou "https://127.0.0.1/phpmyadmin/" e você cairá na tela de administração do phpMyAdmin, onde você pode logar-se 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. Por questões de segurança, a configuração padrão permite que ele seja acessado apenas localmente.

        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 vá ser utilizado por outros servidores (você pode configurar o phpBB e outros scripts para utilizarem um servidor MySQL externo), deixe 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. Veremos em detalhes como usar o SSH e criar túneis encriptados mais adiante.



    Instalando suporte a PHP


      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.

      Mas, 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 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-php4" ou "libapache2-mod-php5", como em:

      # 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. Para ativar o suporte a PHP, é preciso copiar ambos para a pasta "/etc/apache2/mods-enabled/":

      # cd /etc/apache2/mods-available/ # cp -a php4.conf php4.load ../mods-enabled/

      Como vimos, você pode automatizar esta etapa ativando o módulo através do a2enmod, que cria os links automaticamente:

      # a2enmod php4 ou # a2enmod php5

      Não se esqueça de atualizar a configuração do Apache:

      # /etc/init.d/apache2 force-reload

      O Fedora não utiliza as pastas "modules-available" e "modules-enabled" como no Debian. O módulo do Apache é instalado junto com o pacote "php", mas para ativá-lo é necessário adicionar a linha abaixo no final do arquivo "/etc/httpd/conf/httpd.conf":

      AddType application/x-httpd-php .php .phps .php3 .phtml .html .htm .shtml .fds

      O serviço "httpd" do Fedora também não suporta o parâmetro "force-reload". Ao invés disso, use simplesmente "service httpd reload".

      A partir daí, 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 300.000 pageviews diários (o que significa umas 20 a 30 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. Para utilizá-los, você precisa ter instalados (além do MySQL ou Postgre propriamente ditos) os módulos "php4-mysql" e "php4-pgsql" (ou respectivamente "php5-mysql" e "php5-pgsql" ao usar o PHP 5), que permitem aos scripts em PHP acessarem o banco de dados:

      # apt-get install php5-mysql ou # 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, instale o pacote "php-mysql":

      # yum install php-mysql

      Para verificar se o PHP está realmente ativo (em qualquer versão do Apache), 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:

      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 do configuração do PHP e módulos ativos:

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


    Ativando o SSL


      Ativando o SSL

      A configuração do SSL no Apache 2 é um pouco complicada, pois envolve a modificação de vários arquivos. Vou fazer um apanhado geral, sem explicar muito sobre a configuração de cada arquivo, já que eles são explicados individualmente mais adiante. Sugiro que leia este tópico novamente depois de terminar de ler todo o capítulo.

      O primeiro passo é obter um certificado SSL. Você pode gerar seu próprio certificado, o que é rápido, grátis e indolor, ou adquirir um certificado reconhecido na Verisign ou outra entidade certificadora. O problema de usar um certificado caseiro é que os clientes receberão um aviso de "certificado não reconhecido" ao acessarem a página, emitido pelo próprio navegador. Um certificado reconhecido é caro, mas muitos provedores permitem que você utilize um certificado compartilhado pagando uma taxa anual.

      Você pode obter também um certificado gratuito no: http://www.cacert.org/. Ele é reconhecido pela CAcert, mas o certificado raiz deles não vem pré-instalado na maioria dos navegadores, o que faz com que os clientes continuem recebendo a mensagem de certificado não válido ao acessar o servidor.

      Para gerar um certificado caseiro, use o comando:

      # apache2-ssl-certificate

      No Debian Etch, o script apache2-ssl-certificate não está mais disponível. Nele, você usaria o comando "make-ssl-cert", especificando o arquivo com o template (/usr/share/ssl-cert/ssleay.cnf) e o arquivo onde o certificado será salvo (/etc/apache2/ssl/apache.pem, para gerar um certificado padrão para o servidor), como em:

      # mkdir /etc/apache2/ssl/ # make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem

      Ele pergunta várias informações sobre a empresa e sua localização, que os clientes podem verificar quando acessam o site. Se, por acaso, o comando não estiver disponível, verifique a instalação do pacote "ssl-cert".

      O próximo passo é ativar o módulo "ssl" dentro do Apache 2, o que pode ser feito rapidamente usando o comando "a2enmod". Atualize a configuração do servidor para que a alteração entre em vigor:

      # a2enmod ssl # /etc/init.d/apache2 force-reload

      Abra agora o arquivo "/etc/apache2/ports.conf" e adicione a linha "Listen 443" (a porta usada pelo https), como em:

      Port 80 Listen 443

      Com isso, o Apache 2 já está configurado. Falta apenas ativar o uso do SSL dentro da configuração de cada host virtual, ou seja, cada página hospedada no servidor Apache 2. Para testar, vamos ativá-lo na página padrão que usamos para testar o servidor.

      Abra o arquivo "/etc/apache2/sites-available/default". No início do arquivo, substitua a linha "NameVirtualHost *", por:

      NameVirtualHost *:443 NameVirtualHost *:80

      Isso explica que o Apache deve escutar tanto a porta 80 padrão, quanto a porta 443, usada pelo SSL. Logo em seguida, substitua a linha "", por:

      Até aqui, dividimos a configuração em duas seções, uma para a porta 80, outra para a porta 443, usada pelo SSL, Falta agora adicionar a seção referente à configuração do SSL no final do arquivo:

      DocumentRoot /var/www/ ErrorLog /var/log/apache2/error.log CustomLog /var/log/apache2/access.log combined SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.pem

      Reinicie o servidor (/etc/init.d/apache2 restart) e acesse o endereço "https://127.0.0.1" para testar a configuração. Ao conectar, o navegador exibe um aviso "O certificado do servidor falhou no teste de autenticidade" ou similar, o que é normal ao usar um certificado caseiro.