Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Instalação Apache, PHP, MySQL e Bluefish

Colaboração: Fred Cox Junior

Data de Publicação: 28 de Outubro de 2004

Introdução

Este documento tem por objetivo detalhar passo a passo o processo de instalação do seguintes programas em ambiente GNU/Linux:

  • Apache versão - 1.3.31
  • PHP - 5.0.1
  • MySQL - 4.0.20
  • Bluefish - 0.13

Primeiro veremos a compilação e instalação dos programas para depois prepararmos o ambiente para programação em PHP com banco de dados MySQL.

Utilizei o Slackware 10, distro que uso desde 1998 quando tive os primeiros contatos com a versão 3.5. Procurei abordar desde a compilação até a configuração e execução dos programas e processos necessários para o funcionamento do apache+php+mysql, de uma forma geral, procurei compatibilizar o processo de instalação para o padrão GNU/Linux. Decidi não utilizar programas pré-compilados, nem receitas de bolo especificas ou restritas para determinadas distros. Procurei abranger e detalhar o máximo possível, com as distribuições Linux, mais utilizadas atualmente. A instalação será realizada pelo método tradicional a partir dos códigos fontes dos respectivos programas, compilando e instalando os aplicativos com os comandos ; ./configure <opções>; make; make install.

Todos os procedimentos para compilação e instalação são referenciados no diretório /usr/src, de forma que, você precisará de privilégios de root para instalar e dependendo das permissões, até mesmo copiar os sources para este diretório.

Instalação do MySQL

Quando estava escrevendo este artigo a última versão estável do MySQL éra a 4.0.20, portanto, iremos utilizar esta versão como referência nos procedimentos de instalação. É importante que o leitor siga na íntegra os passos para compilação e instalação e só depois faça a configuração e preparação do ambiente, haja vista que cada tópico aqui abordado é dependente do anterior. Para realizar a integração do PHP com o MySQL, é necessário antes de instalar o PHP ter o MySQL previamente instalado e configurado, e, para instalar o Apache com suporte a PHP, é necessário ter os Sources do PHP para que este gere os módulos necessários para o funcionamento, portanto a instalação do servidor de banco de dados é necessariamente primordial antes mesmo de começar a instalar a dupla Apache/PHP.

Download do MySQL 4.0.20

Baixe a última versão dos sources do MySQL no seguinte site:

  http://www.mysql.com

No shell, digite:

  [/usr/src]$ wget \
  http://www.linorg.usp.br/mysql/Downloads/MySQL-4.0/mysql-4.0.20.tar.gz

Compilando

Descompacte, compile e acesse o diretório com os seguintes comandos:

  [/usr/src]$ tar -zxvf mysql-4.0.20.tar.gz
  [/usr/src]$ cd mysql-4.0.20/
  [/usr/src/mysql-4.0.20]$ ./configure --prefix=/usr/local/mysql
  [/usr/src/mysql-4.0.20]$ make
  [/usr/src/mysql-4.0.20]$ make install
  [/usr/src/mysql-4.0.20] $ ldconfig
  [/usr/src/mysql-4.0.20] $ cp support-files/my-medium.cnf /etc/my.cnf

Configurações

Agora que já compilamos e instalamos o mysql, você deverá criar um usuário com poucos privilégios para executar o daemon do MySQL e em seguida setar as permissões nos diretórios para usuário e grupo mysql.

No shell, digite:

  [/usr/src/mysql-4.0.20]$ cd /usr/local/mysql/
  [/usr/local/mysql]$ groupadd mysql
  [/usr/local/mysql]$ useradd -g mysql mysql
  [/usr/local/mysql]$ chown -R root  .
  [/usr/local/mysql]$ chown -R mysql var
  [/usr/local/mysql]$ chgrp -R mysql .

Execute o script mysql_install_db que criará as tabelas iniciais do servidor de banco de dados.

  [/usr/local/mysql]$ $ bin/mysql_install_db --user=mysql

O comando acima criará as tabelas iniciais e de samples do seu servidor de banco de dados. O script que deve ser executado para subir o daemon (processo) do banco de dados é o mysql.server que está localizado em:

*usr/src/mysql-4.0.20/support-files*

Se o leitor quiser que o MySQL inicie automaticamente no boot, copie o script mysql.server que está localizado no diretório acima, renomeando-o para /etc/rc.d/rc.mysqld ou /etc/init.d/rc.mysqld (isto vai depender da sua distribuição Linux), ou então fazer referência a ele em rc.local, por exemplo:

  [/usr/src/mysql-4.0.20/support-files]$ cp mysql.server /etc/rc.d/rc.mysqld
  [/usr/src/mysql-4.0.20]$  chmod +x /etc/rc.d/rc.mysqld

Por fim, você precisa definir a senha do usuário root de seu servidor de banco de dados.

  Primeiramente, inicialize o servidor de banco de dados, digite no shell:
  [/etc/rc.d ]$ ./rc.mysqld start

Se tudo der certo, o servidor estará na escuta na porta 3306, passe um escaner de portas, nmap por exemplo, que pode ser obtido no endereço http://www.insecure.org/nmap. veja o exemplo:

  [/etc/rc.d ]$ nmap  -sT -O localhost -p 3306
  Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2004-08-16 20:32 BRT
  Warning:  OS detection will be MUCH less reliable because we did not find at least 1 open and 1 closed TCP port
  Interesting ports on localhost (127.0.0.1):
  PORT     STATE SERVICE
  3306/tcp open  mysql
  Device type: general purpose
  Running: Linux 2.4.X|2.5.X
  OS details: Linux Kernel 2.4.0 - 2.5.20
  Uptime 0.081 days (since Mon Aug 16 18:36:38 2004)

Quando você se conecta a um MySQL Server, normalmente é solicitada uma senha de usuário. Esta informação poderá ser lida no momento em que ela trafegar na rede do cliente para o servidor. Para evitar os "scripts-kiddies" que ficam testando ferramentas e exploits no seu servidor, você deve filtrar a porta 3306 permitindo conexão apenas de hosts confiáveis (Trusted hosts), via firewall iptables (editando a chain INPUT), na qual foge ao escopo do artigo, ou então desabilitar a escuta da porta 3306, descomentando (retirando o sinal #) a linha referente a skip-networking no arquivo /etc/my.cnf.

Quando desabilitamos a escuta da porta 3306, somente serão permitidas consultas a partir do seu servidor (localhost). Ninguém, nem mesmo o root poderá conectar remotamente ao Servidor MySQL, porém você poderá utilizar o PHPMyAdmin, que é um excelente front-end do mysql, para gerenciamento de tabelas e administração do servidor do banco de dados.

Abra o arquivo /etc/my.cnf com seu editor preferido (vi, pico, joe, etc...) e procure pela seção seguinte:

  # Don't listen on a TCP/IP port at all. This can be a security enhancement,
  # if all processes that need to connect to mysqld run on the same host.
  # All interaction with mysqld must be made via Unix sockets or named pipes.
  # Note that using this option without enabling named pipes on Windows
  # (via the "enable-named-pipe" option) will render mysqld useless!
  #
  #skip-networking

Descomente a linha skip-networking e reinicialize o servidor MySQL.

  # Don't listen on a TCP/IP port at all. This can be a security enhancement,
  # if all processes that need to connect to mysqld run on the same host.
  # All interaction with mysqld must be made via Unix sockets or named pipes.
  # Note that using this option without enabling named pipes on Windows
  # (via the "enable-named-pipe" option) will render mysqld useless!
  #
  skip-networking

O MySQL criptografa as senhas dos usuários através do algoritmo hash md5 semelhante ao processo de armazenamento de senhas do Linux.

Após a instalação do MySQL, por padrão, há dois usuários; um superusuário (root) e outro usuário padrão. Você deverá excluir o usuário padrão e definir uma senha para o root. Para defini a senha do root (superusuário) e apagar o usuário padrão, siga os passos a seguir. Utilizaremos o mysql monitor, que é o front-end em modo texto, que vem disponível na instalação do MySQL.

No shell digite os seguintes comandos:

ps: observe que mysql> corresponde ao prompt do MySQL monitor.

  [/usr/local/mysql/bin ]$ /usr/local/mysql/bin/mysql -u root -p
  Enter password:
  Welcome to the MySQL monitor.  Commands end with ; or \g.
  Your MySQL connection id is 1 to server version: 4.0.20-log
  
  Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
  
  mysql> use mysql
  Database changed
  mysql> delete from user where user='';
  Query OK, 2 rows affected (0.09 sec)
  mysql> update user set password=password('thc691') where user='root';
  Query OK, 1 row affected (0.03 sec)
  Rows matched: 2  Changed: 1  Warnings: 0
  mysql> flush privileges;
  Query OK, 0 rows affected (0.00 sec)
  mysql> quit

Instalação do Apache 1.3.31

O apache é o servidor de web mais utilizado no mundo. No momento que escrevia este artigo, a Netcraft - http://www.netcraft.com -, empresa que registra e publica estatísticas de utilização de sistemas na Internet, registrava que 67.70% dos servidores no mundo rodavam o Apache web server. Se você acompanhar a curva de adoção do apache e da utilização do linux, verá que são praticamente idênticas. O sucesso do apache se deve a sua simplicidade, robustez, segurança e alto desempenho.

A escolha da versão 1.3.31 se deve à segurança e estabilidade. Apesar da versão 2.x rodar sem nenhum problema, a grande maioria não vê motivo para trocar de versão.

A instalação do apache que iremos abordar será do tipo standalone, haja vista, que este tipo de instalação/configuração possibilita um melhor balanceamento das conexões aumentando assim a performance. Os requisitos necessários de hardware para utilizar o apache são um computador pentium 233 com 48 Mbytes de memória RAM, embora o desenvolvedor afirme que a configuração mínima é um 486 com 8 Mb de RAM; é até possível rodar o apache com esta configuração, desde que a maioria dos recursos estejam desabilitados.

Iremos configurar o apache com as seguintes características:

  • Suporte a CGI´s e Perl
  • Suporte páginas dinâmicas PHP
  • Autenticação de usuários (.htaccess)
  • hospedar banco de dados MySQL

    obs: A grande maioria dos procedimentos seguintes requer o usuário root.

    ==Download do Apache 1.3.31==

    Baixe a versão 1.3.31 do apache em http://www.apache.org ou puxe direto deste endereço:

    http://ftp.pucpr.br/apache/httpd/apache_1.3.31.tar.gz

    ==Compilando==

    Descompacte o arquivo apache_1.3.31.tar.gz e entre no diretório:

      [/usr/src] $ tar -zxvf apache_1.3.31.tar.gz
      [/usr/src]$ cd apache_1.3.31/
    

    ==Configurações==

    Vamos escolher a seguinte estrutura para o apache:

  • /var/www/cgi-bin - Diretório de execução de scripts cgi;
  • /var/www/htdoc - Será o diretório onde ficarão as páginas html e os scripts php;
  • /var/log/apache - diretório de logs de acesso do apache;
  • /etc/apache - Aqui ficará os arquivos de configuração do servidor de web (httpd.conf, srm.conf e access.conf);
  • /usr/local/apache - será o local onde ficará os programas e arquivos necessários para inicialização do daemon httpd.
  • UID/GUID - nodbody será o usuário que executará o daemon httpd

    Conforme configuração escolhida na tabela acima, execute os procedimentos no diretório dos sources do apache:

      [/usr/src/apache_1.3.31/]$ ./configure \
      --prefix=/usr/local/apache --htdocsdir=/var/www/htdocs \
      --cgidir=/var/www/cgi-bin --logfiledir=/var/log/apache \
      --sysconfdir=/etc/apache --server-uid=nobody  --server-gid=nobody \
      --enable-module=so
      [/usr/src/apache_1.3.31/]$ make
      [/usr/src/apache_1.3.31/]$ su
      [/usr/src/apache_1.3.31/]$ make install
    

    Após a compilação e instalação, verifique se o seu sistema possui o usuário e grupo nobody com os seguintes comandos:

      $ grep 'nobody' /etc/passwd /etc/group
    

    A conta nobody corresponde a um usuário genérico que não possui direitos no sistema, apenas privilégio no daemon do Apache, é bastante provável que já exista esta conta no seu sistema.

    Se precisar adicionar o usuário e grupo nobody, execute:

      $ groupadd nobody
      $ useradd -g nobody -d /var/www nobody
    
    Para testar a instalação default do apache: No shell digite:

      [/usr/local/apache/bin]$ ./httpd -V
      Server version: Apache/1.3.31 (Unix)
      Server built:   Aug 21 2004 11:12:00
      Server's Module Magic Number: 1XXXXXXX
      Server compiled with....
      -D HAVE_MMAP
      -D HAVE_SHMGET
      -D USE_SHMGET_SCOREBOARD
      -D USE_MMAP_FILES
      -D HAVE_FCNTL_SERIALIZED_ACCEPT
      -D HAVE_SYSVSEM_SERIALIZED_ACCEPT
      -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
      -D DYNAMIC_MODULE_LIMIT=64
      -D HARD_SERVER_LIMIT=256
      -D HTTPD_ROOT="/usr/local/apache"
      -D SUEXEC_BIN="/usr/local/apache/bin/suexec"
      -D DEFAULT_PIDLOG="logs/httpd.pid"
      -D DEFAULT_SCOREBOARD="logs/httpd.scoreboard"
      -D DEFAULT_LOCKFILE="logs/httpd.lock"
      -D DEFAULT_ERRORLOG="logs/error_log"
      -D TYPES_CONFIG_FILE="/etc/apache/mime.types"
      -D SERVER_CONFIG_FILE="/etc/apache/httpd.conf"
      -D ACCESS_CONFIG_FILE="/etc/apache/access.conf"
      -D RESOURCE_CONFIG_FILE="/etc/apache/srm.conf"
    

    Se tudo correu bem você verá a versão instalada do apache e a data e hora de compilação e as opções escolhidas no configure.

    ps: Não é objetivo deste artigo explanar sobre as possíveis configurações do servidor de web apache, nem de abranger todas as opções de customizações. Se o leitor quiser obter mais informações, visite o site http://www.apache.org para maiores detalhes.

    =Instalação do PHP5=

    Algumas das novas funcionalidades adicionadas no PHP5 estão relacionadas na tabela abaixo:

  • Zend Engine 2
  • Suporte a classes abstratas e interfaces
  • PHP5 foi totalmente reescrito com libxml2
  • Suporte a exceptions e exceptions handling

Download do PHP 5.01

Inicialmente o leitor deve copiar a última versão do código fonte do PHP no seguinte site:

http://www.php.net/

No momento em que escrevia este artigo, aa última versão do PHP foi a 5.0.1. Baixe o código fonte da versão mais recente do PHP com o wget:

No shell digite:

  [/usr/src]$ wget http://br2.php.net/get/php-5.0.1.tar.gz/from/br.php.net/mirror

Compilando

Descompacte os fontes do PHP no mesmo diretório que você copiou o apache_1.3.31.tar.gz, no nosso caso: /usr/src

No shell digite:

  [/usr/src]$ tar -zxvf php-5.0.1.tar.gz
  [/usr/src]$ cd php-5.0.1/

Escolhi por motivos óbvios instalar o PHP com suporte a banco de dados MySQL e Apache. Para compilar e instalar o PHP5 siga os passos seguintes:

  [/usr/src/php-5.0.1/]$ ./configure --with-mysql=/usr/local/mysql \
  --with-apxs=/usr/local/apache/bin/apxs
  [/usr/src/php-5.0.1/]$ make
  [/usr/src/php-5.0.1/]$ su
  [/usr/src/php-5.0.1/]$ make install

Configurações

Se tudo deu certo, o leitor deve copiar o arquivo php.ini.dist para /etc/apache/php.ini. Este arquivo de configuração define as diretrizes de funcionamento e configuração do PHP5. Também será necessário realizar três alterações no arquivo de configuração do apache (httpd.conf), acrescentar suporte a PHP5, modificar os parâmetros DirectoryIndex adicionar a extensão (DSO) do respectivo módulo. Siga os passos seguintes

  [/usr/src/php-5.0.1/]$ cp php.ini-dist /etc/apache/php.ini

Procure pela seção abaixo no seu /etc/apache/httpd.conf:

  # Dynamic Shared Object (DSO) Support
  #
  # To be able to use the functionality of a module which was built as a DSO you
  # have to place corresponding `LoadModule' lines at this location so the
  # directives contained in it are actually available _before_ they are used.
  # Please read the file http://httpd.apache.org/docs/dso.html for more
  # details about the DSO mechanism and run `httpd -l' for the list of already
  # built-in (statically linked and thus always available) modules in your httpd
  # binary.
  #
  # Note: The order in which modules are loaded is important.  Don't change
  # the order below without expert advice.
  #
  # Example:
  # LoadModule foo_module libexec/mod_foo.so

Acrescente a seguinte linha:

  LoadModule php5_module        libexec/libphp5.so

Ficando assim:

  # Dynamic Shared Object (DSO) Support
  #
  # To be able to use the functionality of a module which was built as a DSO you
  # have to place corresponding `LoadModule' lines at this location so the
  # directives contained in it are actually available _before_ they are used.
  # Please read the file http://httpd.apache.org/docs/dso.html for more
  # details about the DSO mechanism and run `httpd -l' for the list of already
  # built-in (statically linked and thus always available) modules in your httpd
  # binary.
  #
  # Note: The order in which modules are loaded is important.  Don't change
  # the order below without expert advice.
  #
  # Example:
  # LoadModule foo_module libexec/mod_foo.so
  # Linkando com a biblioteca
  LoadModule php5_module        libexec/libphp5.so

Você precisa informar também ao servidor quais são os arquivos ou scripts que ele irá invocar o interpretador PHP5, para isto, adicione as seguintes linhas no final do seu /etc/apache/httpd.conf.

  #Definindo tipos de arquivos php
  AddType application/x-httpd-php .php .phtml
  AddType application/x-httpd-php-source .phps
  # Feito

Agora defina também a seção DirectoryIndex, quais são os arquivos que o apache irá procurar por default num diretório de web.

  #
  # DirectoryIndex: Name of the file or files to use as a pre-written HTML
  # directory index.  Separate multiple entries with spaces.
  #
  <IfModule mod_dir.c>
     DirectoryIndex index.html
  </IfModule>

Acrescente o seguinte:

  #
  # DirectoryIndex: Name of the file or files to use as a pre-written HTML
  # directory index.  Separate multiple entries with spaces.
  #
  <IfModule mod_dir.c>
     DirectoryIndex index.html index.php index.phtml
  </IfModule>

Caso o leitor queira que o servidor de web inicie no boot, crie um link simbólico rc.httpd no diretório /etc/rc.d ou /etc/init.d; isto irá depender exclusivamente de sua distribuição.

Instalação do Bluefish 0.13

Bluefish é um poderoso IDE editor html/php, distribuído sob licença GNU/GPL, com as seguintes características:

  • Capacidade de abrir múltiplos documentos
  • Suporte à arquivos remotos utilizando gnome-vfs
  • Sintax highlighting
  • Geração de Thunbnails para página de screenshots ou alguns fotográficos.
  • Assistentes de utilização, etc...

O editor pode ser obtido gratuitamente através do seguinte endereço:

http://bluefish.openoffice.nl

A instalação do Bluefish é simples e não requer parâmetros adicionais. Apenas descompacte num diretório de fontes, compile e instale o aplicativo com os seguintes comandos:

  [/usr/src/]$  tar -zxvf bluefish-0.13.tar.gz
  [/usr/src/]$ cd  bluefish-0.13/
  [/usr/src/bluefish-0.13]$ ./configure
  [/usr/src/bluefish-0.13]$  make
  [/usr/src/bluefish-0.13]$ su
  [/usr/src/bluefish-0.13]$ make install

Para iniciar o aplicativo, digite //bluefish/ na linha de comando.

Testando o ambiente

Em primeiro lugar iremos verificar se ocorreu algum erro de sintaxe, verificando a consistência do arquivo /etc/apache/httpd.conf. Para efetuar esta verificação, execute o comando abaixo:

  [/usr/]$ /usr/local/apache/bin/apachectl configtest
  Syntax OK

Se a saída do comando NÃO foi Syntax OK, volte para a seção anterior, corrija o erro de sintaxe e verifique novamente com o comando acima.

Inicie o servidor de web digitando o seguinte:

  [/usr/]$ /usr/local/apache/bin/apachectl start
  /usr/local/apache/bin/apachectl start: httpd started

Rode um scanner de portas, nmap conforme visto anteriormente, no seu computador ou dê um netstat para certificar de que o apache está escutando na porta 80/tcp.

  [/usr/]$  netstat -an|grep 0.0.0.0:80
  tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN

Observe que a saída do comando informa que há um servidor aceitando conexões na porta 80.

Inicie seu browser preferido, Netscape, Mozilla ou firefox, e digite o seguinte endereço: http://localhost; o navegador deverá exibir uma página de teste que é página padrão da instalação do apache e está localizada no diretório raiz do seu servidor de web, no nosso caso, /var/www/htdocs.

Para saber se o php está realmente funcionando, crie um script com o seguinte conteúdo:

  <?php
         phpinfo();
  ?>

Salve o arquivo em *var/www/htdocs// com o seguinte nome: /*infophp.php. Inicie o browser e aponte para o seguinte endereço: http://localhost/infophp.php. O navegador deverá exibir uma página de teste do php.

Dúvidas, críticas e sugestões são bem vindas.

Veja a relação completa dos artigos de Fred Cox Junior

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 2.97/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (1212 votos)

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Lan University

Submarino.com.br

Encontre imóveis, apartamentos e casas a venda no Imobilien
Saiba mais

 

 

Procure pela casa ou apartamento ideal à venda ou para aluguel na busca inteligente do Imohoo
Buscar imóveis