Fazendo deploy com Deployer

deployer

 

Deployer é um pacote em PHP que tem como características realizar o deploy de aplicações e como principal vantagem a economia de tempo, melhor desempenho e desenvolvimento.

Neste post vamos desde do primeiro passo a instalação ate a execução do deploy em um servidor, tudo em um ambiente linux, no meu caso a distribuição Debian. Primeiramente precisamos baixar o arquivo .phar disponível no site do projeto.

Download do deployer.phar

Depois de realizado o download vamos move-lo e para a pasta /usr/local/bin e conceder permissão de execução com o seguinte comando:

$ mv deployer.phar /usr/local/bin/dep
$ chmod +x /usr/local/bin/dep

Depois deste passo teste o comando dep no terminal e veja se aparece mais ou menos como a tela abaixo.

Comando dep

O próximo passo é a criação do arquivo deploy.php onde setaremos algumas configurações para que possamos executar nosso delpoy da melhor maneira. No nosso casso vamos realizar o acesso via identityFile a um servidor e passar os arquivos de uma branch especifica de um repositório git.

<?php require 'recipe/symfony.php'; 
server('prod', '10.10.10.213')->user('byteslv')
->identityFile('/home/btllv/.ssh/id_rsa.pub', '/home/btllv/.ssh/id_rsa')
->env('deploy_path', '/var/www/html')
->stage('production');
 
set('repository', 'git@github.com:usuario/tests.git');
env('branch', 'master');
 
task('deploy:vendors', function () {
});
 
task('deploy:assetic:dump', function () {
});
 
task('deploy:cache:warmup', function () {
});

Pronto agora podemos executar nosso comando pra realizar o deploy na nossa maquina de production. Para rodar basta utilizar o seguinte comando:

$ dep deploy production

O processo começara, e tudo dando certo aparecerá  uma tela mais ou menos como esta abaixo.

dep

Processo realizado com sucesso!

É possível ir bem alem do que mostrei aqui. Entre no site do projeto e veja sua documentação e veja como o que mais pode se fazer com o Deployer.

http://deployer.org/

 

Instalando o XAMPP no linux

O XAMPP simplificando, é um servidor web contendo o Apache, Mysql, PHP, Perl e outros. Para instalar, primeiramente temos que realizar o download do arquivo no site do projeto https://www.apachefriends.org/download.html.

Depois de realizado o download entre no terminal e digite os seguintes códigos:

$ cd Downloads
$ su
 
# chmod 755 xampp-linux-x64-1.8.2-6-installer.run
# ./xampp-linux-x64-1.8.2-6-installer.run

Iniciará uma tela de instalação, clique em Next verificando se deseja a configuração apresentada.

xampp1

Depois de finalizado coloque o servidor para iniciar com o seguinte comando:

#sudo  /opt/lampp/lampp start

Para reniciar ou parar os serviços utilize os seguintes comandos:

#sudo  /opt/lampp/lampp restart
 
#sudo  /opt/lampp/lampp stop

Busca palavras repetidas em arquivo com PHP

Para saber se dentro de algum arquivo existem palavras repetidas, basta fazer uma busca utilizando um foreach, depois de separar as palavras com outro foreach. Veja o código abaixo:

$file = "dados.txt";
$contents = preg_split("/[\s,]+/", implode("", file($file)));
 
foreach ($contents as $palavra) {
  $ar[$palavra]++;
}
echo "Palavras duplicadas
 
 
";
 
foreach ($ar as $palavra =&gt; $c_palavra) {
  if($c_palavra &gt; 1){
    print "Palavra: $palavra 
";
    print "Numero de ocorrencias: $c_palavra 
";
  }
}

Verifica se Arquivo permite leitura, escrita e existe com PHP

Algumas vezes precisamos verificar se um arquivo permite somente leitura, ou somente escrita, ou simplesmente se ele existe. Para isto usamos algumas funções no PHP, que são elas a: is_readable, is_writable e file_exists. Veja os exemplos abaixo:

// Verifica se o arquivo permite leitura.
$file = "arquivo.php";
if (is_readable($file)) {
  echo "Arquivo permite leitura";
}
else {
  echo "Arquivo não permite leitura";
}
 
// Verifica se arquivo permite escrita.
$file = "arquivo.php";
if (is_writable($file)) {
  echo "O arquivo permite escrita";
}
else {
  echo "O arquivo não permite escrita";
}
 
 
// Verifica se Arquivo existe.
$file = "arquivo.php";
if (file_exists($file)) {
  echo "O arquivo existe";
}
else {
  echo "o arquivo não existe";
}

Criando Virtual Host no MAMP MAC

Para utilizar o Virtual Host no MAMP, e necessário realizar alguns procedimentos simples. Primeiramente  temos que acessar o arquivo hosts, com os seguintes comandos:

1
2
MacBook-Pro-de-bytes:~ byteslivres$   cd /etc
MacBook-Pro-de-bytes:etc byteslivres$ sudo nano hosts

Acrescente  a linha:

1
127.0.0.1 projeto1.local

Salve o arquivo clicando control + x e depois  aperte return, para sair do arquivo basta clicar control + x

Depois de feito isso, acesse o arquivo /Applications/MAMP/conf/apache/httpd.conf
e encontre a linha:

1
2
# Virtual Hosts 
# Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

remova o “jogo da velha”, para que fique dessa maneira:

1
2
# Virtual Hosts
  Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

Salve o arquivo.  Depois de feito isso acesse o arquivo: /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf, neste arquivo tera algo parecido com isso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
   <VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/Applications/MAMP/Library/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
    </VirtualHost>
 
    <VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/Applications/MAMP/Library/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
    </VirtualHost>

substitua estas linhas por estas:

1
2
3
4
5
6
7
8
9
10
 
<VirtualHost *:80>
    DocumentRoot /Applications/MAMP/htdocs
    ServerName localhost
</VirtualHost>
 
<VirtualHost *:80>
    DocumentRoot /Users/username/Sites/projeto
    ServerName projeto1.local
</VirtualHost>

depois de alterado salve o arquivo e de um Stop e Start no MAMP. Pronto agora basta você acessar
pelo seu navegador com o seguinte link: http://projeto1.local

Gerenciando dependências com o Composer

Gerenciador de Composer
Gerenciador de Dependência

Neste post não vou abordar o que é o Composer, mais sim como instalar e utilizar ele no seu projeto para gerenciar suas dependências.

Primeiro passo é instalar o Composer, existe algumas formas de instalar o mesmo, qualquer dúvida só acessar o site do projeto aqui.

 

NO LINUX

No meu caso utilizei o comando abaixo para instalar o Composer:

1
php -r "readfile('https://getcomposer.org/installer');" | php

Será realizado o download do arquivo composer.phar.

1
2
3
4
5
All settings correct for using Composer
Downloading...
 
Composer successfully installed to: ./composer.phar
Use it: php composer.phar

No meu caso eu instalei ele para que eu pudesse utiliza-lo em qualquer projeto, numa forma global. Para isso utilizei esse comando (Para plataforma UNIX):

1
# sudo mv composer.phar /usr/local/bin/composer

Pronto o composer agora está instalado.

NO OS X

Para instalar no OS X é mais simples, basta fazer o download do Composer :

1
curl -sS https://getcomposer.org/installer | php

depois de realizado o download, mova o arquivo para a pasta /usr/bin com o seguinte comando:

1
sudo mv composer.phar /usr/bin/

No meu caso gosto de deixar no modo universal, para poder trabalhar com o composer em qualquer projeto, para isto basta criar um alias, utilizando o VIM para acessar o arquivo e inserir uma linha.
Para acessar o arquivo digite o seguinte comando:

1
vim ~/.bash_profile

Depois acrescente a seguinte linha:

1
alias composer="php /usr/bin/composer.phar"

Pronto agora o composer está  instalado.

Caso o procedimento acima não funcionar utilize este comando:

1
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

Este último comando realiza todo o processo dito anteriormente.

UTILIZANDO

Para utiliza-lo basta criar um arquivo composer.json no seu projeto contendo quais dependências você deseja utilizar, no nosso exemplo utilizei o silex e o doctrine :

1
2
3
4
5
6
7
{
    "require": {
        "silex/silex": "1.0.*",
        "doctrine/dbal": "2.2.*"
    },
    "minimum-stability": "dev"
}

Para baixar as dependencias acesse pelo terminal a pasta de seu projeto e execute o seguinte comando:

1
composer install

Pronto agora basta esperar terminar de baixar os pacotes e utiliza-los.

Instalndo e ativando o Curl PHP 5 no Debian

Quando ativamos o PHP no nosso sistema, ele não vem com alguns pacotes. Para habilitarmos estes pacotes precisamos realizar alguns passos.

Primeiro vamos baixar o pacote do php-curl, utilizando o seguinte comando:

1
# sudo apt-get install php5-curl

Depois de instalado, so basta da um restart no apache com o comando abaixo:

1
# sudo /etc/init.d/apache2  restart

Pronto!

Data por extenso PHP

Existem várias formas de se realizar esta tarefa no PHP, usando Switch, Ifs e muitas outras formas. Mais a forma que é a mais simples é:

1
2
3
4
5
6
7
8
<?php
header( 'Content-Type: text/html; charset=iso-8859-1' );
setlocale( LC_ALL, 'pt_BR', 'pt_BR.iso-8859-1', 'pt_BR.utf-8', 'portuguese' );
date_default_timezone_set( 'America/Belem' );
$data =  strftime( '%A, %d de %B de %Y', strtotime( date( 'Y-m-d' ) ) );
 
echo $data;
?>

Muito simples né pessoal. Até mais.

Uploads de arquivos grandes – PHP

Por padrão do PHP o limite de upload de um arquivo é 8MB (Megabits), mais como fazer para realizar um upload via POST maior que este valor?

Simples, precisamos adicionar algumas linhas de código no arquivo .htaccess. Estou considerando que você não tenha acesso ao arquivo php.ini no seu servidor.

As linha que se deve adicionar são:

1
2
3
4
5
php_value memory_limit 400M
php_value post_max_size 100M
php_value upload_max_filesize 120M
php_value max_execution_time 1800
php_value session.gc_maxlifetime 3600

O parâmetro: memory_limit, aumentamos o valor máximo de memória em bytes que um script pode alocar para “400MB”. O valor padrão é “128MB”, caso precise de mais espaço é só aumentar o valor.

O parâmetro: post_max_size, aumentamos o tamanho máximo de dados a ser enviados via POST. O valor padrão e “8MB”, no nosso script aumentamos para “100MB”.

O parâmetro: upload_max_filesize, aumentamos o tamanho máximo do arquivo que faremos o upload para “120MB”. O padrão é “2MB”.

O parâmetro: max_execution_time, aumentamos a quantidade de segundos de execução do script para 30 minutos. O padrão e 30 segundos.

O parâmetro: session.gc_maxlifetime, aumentamos em segundo o tempo de vida de sessão para uma hora. O padrão e 24 minutos.