 | Instalação
O CakePHP quer facilitar sua vida, independentemente do seu nível de experiência, deixando seus
aplicativos mais fáceis de manter e mais rápidos de gravar. O CakePHP é cheio de recursos legais e úteis. O CakePHP
quer tratar do seu Ajax, de sua validação de dados e de suas sessões. Ele pode até fatiar um pão para você se você
puder gravar um plug-in ensinando-o como fazer isso. Mas você ainda não pode utilizar o CakePHP. É preciso instalá-lo
primeiro.
Descompactar e Instalar
Para o propósito deste tutorial, o diretório de instalação inteiro do CakePHP deve ser descompactado
no webroot do servidor da Web. Na Listagem 1, o webroot é /webroot.
Listagem 1. Descompactando o Diretório de Instalação do CakePHP
unzip cake_1.2.2.8120.zip
cd cake_1.2.2.8120
mv * /webroot
|
Digite ls -la /webroot para listar o conteúdo do webroot e verificar se os
arquivos foram movidos corretamente. A saída deve ser semelhante à Listagem 2.
Listagem 2. Saída do Comando ls
-rw-r--r-- 1 YOURUSER YOURGROUP 139 2007-12-15 22:50 htaccess
drwxr-xr-x 12 YOURUSER YOURGROUP 4096 2007-12-15 22:50 app
drwxr-xr-x 7 YOURUSER YOURGROUP 4096 2007-12-15 22:50 cake
-rw-r--r-- 1 YOURUSER YOURGROUP 2303 2007-12-15 22:50 index.php
drwxr-xr-x 5 YOURUSER YOURGROUP 4096 2007-12-15 22:50 vendors
|
O diretório app/tmp precisa ser gravável pelo seu servidor da Web. Confirme as permissões nesta pasta
digitando ls -l app. A saída provavelmente se assemelhará à Listagem 3.
Listagem 3. Confirmando as Permissões de Pasta
-rw-r--r-- 1 YOURUSER YOURGROUP 139 2007-12-15 22:50 .htaccess
drwxr-xr-x 3 YOURUSER YOURGROUP 4096 2007-12-15 22:50 config
drwxr-xr-x 3 YOURUSER YOURGROUP 4096 2007-12-15 22:50 controllers
-rw-r--r-- 1 YOURUSER YOURGROUP 953 2007-12-15 22:50 index.php
drwxr-xr-x 3 YOURUSER YOURGROUP 4096 2007-12-15 22:50 locale
drwxr-xr-x 3 YOURUSER YOURGROUP 4096 2007-12-15 22:50 models
drwxr-xr-x 2 YOURUSER YOURGROUP 4096 2007-12-15 22:50 plugins
drwxr-xr-x 5 YOURUSER YOURGROUP 4096 2007-12-15 22:50 tests
drwxr-xr-x 6 YOURUSER YOURGROUP 4096 2007-12-15 22:50 tmp
drwxr-xr-x 3 YOURUSER YOURGROUP 4096 2007-12-15 22:50 vendors
drwxr-xr-x 8 YOURUSER YOURGROUP 4096 2007-12-15 22:50 views
drwxr-xr-x 6 YOURUSER YOURGROUP 4096 2007-12-15 22:50 webroot
|
A maneira mais simples de se fazer isso é, provavelmente, a mais comum e menos segura: dar permissões
de gravação a todos:
chmod -R 777 app/tmp
ls -l app
|
As permissões para a pasta tmp devem ter sido atualizadas, como mostrado abaixo.
drwxrwxrwx 7 YOURUSER YOURGROUP 2007-12-15 22:50 tmp
|
Conceder permissões de gravação a todos não é recomendado para uso geral. O ideal é que você
altere a propriedade desta pasta para corresponder ao usuário utilizado pelo servidor da Web, ou inclua o usuário utilizado
pelo servidor da Web em um grupo para o diretório e inclua permissões de gravação de grupo. Este tutorial deve demonstrar
como utilizar o CakePHP e não foi projetado para ser um guia para a construção de aplicativos seguros. Embora a segurança
devesse ser prioridade no desenvolvimento de qualquer aplicativo, uma discussão completa sobre as práticas seguras de PHP
estão fora do escopo deste tutorial.
Para uma instalação de produção, altere o webroot do servidor da Web para app/webroot, que irá minimizar
a quantidade de código acessível via navegador da Web e ajudará a melhorar a segurança de sua instalação.
Validação 1
Em um navegador, acesse a URL que corresponde ao webroot para seu servidor da Web. Por exemplo, se você
tiver instalado o CakePHP no webroot do host local, acesse http://localhost; você deverá ver a página inicial padrão do
CakePHP.
Figura 1. A Página Inicial Padrão do CakePHP como Ela Deve Ser Vista
Nota: Se a página inicial padrão for mais semelhante à Figura 2, então mod_rewrite não
está funcionando conforme requerido pelo CakePHP. Às vezes isso pode ser um problema para usuários iniciantes.
Figura 2. A Página Inicial com Aparência Incorreta
A seguir estão algumas coisas que devem ser verificadas.
Seu Arquivo .htaccess Está Correto?
Você deve ter recebido acesso ao arquivo .htaccess no diretório de instalação do CakePHP. Na maioria
dos sistemas *nix, isso ficará oculto da visualização por padrão. Se você não tiver o arquivo, verifique a origem que você
transferiu por download ou obtenha uma nova atualização do CakePHP.org. Confirme se o arquivo existe e é válido acessando o
diretório de instalação e executando cat .htaccess. Isso exibirá o conteúdo do arquivo, que deve
ser semelhante à Listagem 4.
Listagem 4. Confirmando se o Arquivo .htaccess Existe
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
|
O mod_rewrite Está Ativado para o Servidor?
Certifique-se de que mod_rewrite esteja ativado para seu servidor da Web. Para
Apache, existem duas linhas que devem aparecer no arquivo httpd.conf. Na lista LoadModule, você deve ver a seguinte linha (ou
algo muito próximo disso):
LoadModule rewrite_module libexec/mod_rewrite.so.
Na lista AddModule, você deve ver esta linha (ou algo muito próximo disso): AddModule mod_rewrite.c.
Se você não puder localizar essas linhas em seu arquivo httpd.conf, mod_rewrite não está
ativado. Consulte a documentação do servidor para obter os detalhes sobre como fazer isso.
O Servidor Permite a Substituição de .htaccess?
Certifique-se de que seu servidor da Web esteja configurado para permitir a substituição de .htaccess. Para
o Apache, cada diretório deve ser definido no arquivo httpd.conf. Essas definições podem parecer bastante diferentes de uma
instalação para outra, mas ainda assim você deverá ver a linha AllowOverride All na definição. Sua
definição pode ser semelhante à Listagem 5.
Listagem 5. Definições no Arquivo httpd.conf
<Directory "/webroot">
Options Indexes MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
|
Consulte a documentação do servidor para obter mais detalhes sobre a substituição de .htaccess.
Configurando uma Conexão com o Banco de Dados
Agora que você já tem o CakePHP instalado e está se entendendo bem com seu servidor da Web, é preciso introduzir o CakePHP em
seu banco de dados. Esta seção cobrirá a definição da configuração do banco de dados e verificará se o CakePHP gosta do seu
banco de dados. Tor vai precisar de um lugar para armazenar seus dados de usuário e produto. Em breve, você vai criar uma
tabela de usuários para ser utilizada para a construção das partes de login e registro do Tor.
Editando o Arquivo de Configuração do Banco de Dados
A definição da configuração do banco de dados é muito fácil, mas antes de você começar, certifique-se
de que seu banco de dados esteja em execução, de ter criado um banco de dados para seu aplicativo e de ter um nome de
usuário e uma senha para um usuário com direitos ao banco de dados.
Para começar, faça uma cópia do arquivo app/config/database.php.default e salve-o como
app/config/database.php. Faça isso para preservar uma cópia do modelo original. Abra o arquivo em seu editor de texto
favorito e procure a seguinte seção (ela deve estar próxima da parte inferior do arquivo).
Listagem 6. O Arquivo app/config/database.php.default
var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'database_name',
'prefix' => ''
);
|
Modifique estas informações para ajustar sua instalação:
-
driver
- Pode ser
mysql,
mysqli,
postgres,
sqlite,
mssql, db2,
oracle,
adodb
ou pear-drivername. Este tutorial assume mysql.
-
persistente
- Este campo diz ao CakePHP se ele deve utilizar conexão com o banco de dados persistente. Ele deve
ser true ou false. Este tutorial assume false.
-
host
- É o nome do host do servidor de banco de dados, como
localhost
ou mysql.yourdomain.
-
login
- É o nome de usuário para seu login do banco de dados, como
dbuser.
-
senha
- É a senha para seu login do banco de dados, como
secretsecret.
-
banco de dados
- É o nome do banco de dados que você quer utilizar, como
cakedev.
-
prefixo
- Prefixo é uma cadeia, como
cp_, que é colocada no início de nomes de
tabela para qualquer chamada de banco de dados feita pelo CakePHP.
O uso de um prefixo pode ser necessário se o banco de dados for compartilhado entre aplicativos para impedir que as tabelas se
sobreponham umas as outras, onde dois ou mais aplicativos querem uma tabela com o mesmo nome, como usuários.
Não se esqueça de salvar o arquivo.
Qualquer número de configurações de banco de dados pode ser especificado no database.php, desde que elas
tenham nomes distintos. Você pode especificar qual configuração do banco de dados o aplicativo deve utilizar nos modelos.
Algumas notas sobre bancos de dados e CakePHP:
- As tabelas devem ter uma chave primária denominada
id.
- Se você incluir uma coluna criado ou modificado na tabela, o CakePHP irá preencher
automaticamente o campo quando for apropriado.
- Nomes de tabelas devem estar no plural (usuários, produtos, ovos, refrigerantes, vencedores,
perdedores). Seus modelos correspondentes terão nomes no singular (usuário, produto, ovo, refrigerante, vencedor, perdedor).
- Se as tabelas tiverem que ser relacionadas, as chaves estrangeiras deverão seguir o formato
table_id com nomes de tabela no singular. Por exemplo, user_id,
product_id,
egg_id,
soda_id,
winner_id e
loser_id seriam chaves estrangeiras para o usuário, o produto, o ovo,
o refrigerante, o vencedor e o perdedor da tabela.
Validação 2
Retorne à URL que você utilizou para validar a instalação inicial. Você deverá ver que a página inicial
padrão do CakePHP foi alterada para indicar o status da configuração do banco de dados.
Figura 3. Página Inicial Padrão do CakePHP Alterada para Indicar o
Status da Configuração do Banco de Dados
Se a página inicial padrão disser que o arquivo de configuração do banco de dados não está presente,
talvez você o tenha colocado no lugar errado ou nomeado incorretamente. Certifique-se de que o arquivo de configuração
do banco de dados seja app/config/database.php. Se a página inicial padrão disser que o CakePHP não pode se conectar ao
banco de dados, confirme se as informações de conexão inseridas são válidas e tente novamente.
Criando as Tabelas de Aplicativo
Até agora, o CakePHP, seu servidor da Web e seu banco de dados estão se comunicando bem. É hora de arregaçar
as mangas e fazer o trabalho real. Tor precisa de uma tabela de usuários.
Esta tabela conterá as informações básicas necessárias para identificar e interagir com um usuário. Um
simples campo de nome de usuário e senha provavelmente seria suficiente, mas outras informações podem ser úteis, como um
endereço de e-mail (para o envio de pedidos de reconfiguração de senha), primeiro e último nomes (para personalização) e
a data do último login (para ajudar a rastrear contas inativas). Provavelmente você quer que seus campos de nome de usuário
e e-mail sejam exclusivos. E não se esqueça do campo de ID de chave primária. O SQL para a criação de sua tabela pode ser
semelhante à Listagem 7.
Listagem 7. SQL para Criar Sua Tabela
CREATE TABLE 'users' (
'id' INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
'username' VARCHAR( 40 ) NOT NULL ,
'password' VARCHAR( 40 ) NOT NULL ,
'email' VARCHAR( 255 ) NOT NULL ,
'first_name' VARCHAR( 40 ) NOT NULL ,
'last_name' VARCHAR( 40 ) NOT NULL ,
UNIQUE (
'username' ,,
'email'
)
) TYPE = MYISAM ;
|
Observe que os campos username,
password,
first_namee
last_name têm um comprimento máximo de 40 caracteres. Nós forçaremos este
comprimento de caracteres no modelo de usuário.
O comprimento máximo de 40 caracteres, nesse caso, é totalmente arbitrário.
|  |