O local certo para se aprender Linux no Brasil, a sua fonte de artigos, dicas, tutoriais, noticias, howto, reviews e muito mais.

Instalando Apache, PHP, MySQL e Bluefish

Arquivado em Artigos <> Web Server
Instalando Apache, PHP, MySQL e Bluefish
Aprendendo a instalaçáo do Apache, PHP, MySQL e Bluefish de uma forma prática direta e de fácil entendimento.

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 ; 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 era 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 -r 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 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)

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 - nobody 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 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.

Obs: 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.htmlfor 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.htmlfor 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.
#
DirectoryIndex index.html


Acrescente o seguinte:

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


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: phpinfo.php. Inicie o browser e aponte para o seguinte endereço: http://localhost/phpinfo.php. O navegador deverá exibir uma página de teste do php.

Esse texto é de autoria de Fred Cox Junior
Envie seu comentário
 
 
Copyright © Sputnix.com.br, Seja Livre, Use Linux