Dokku: Como instalar uma aplicação PHP

Neste artigo vamos mostrar como instalar uma aplicação PHP no Dokku v0.4.5 a correr no DigitalOcean.

Se são novos ao Dokku vejam o artigo anterior de como instalar o Dokku e instalar um site estático.

Buildpack para PHP

Por omissão o Dokku usa o buildpack de PHP do Heroku para aplicações PHP.

Se o buildpack correcto não é detectado automaticamente podem definir um criando um ficheiro .env no vosso repositório com o seguinte conteúdo:

export BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-php.git

Configurar o Composer

Se ainda não configuraram o Composer para a vossa aplicação ou não o têm instalado vão precisar de o fazer.

Criem um ficheiro composer.json. O ficheiro tem de ter pelo menos um objecto JSON vazio: {}.

Especificar a versão de PHP

Especifiquem a versão de PHP que querem usar no vosso ficheiro composer.json:

{
    "require": {
  "php": "~5.6.0"
    }
}

Isto faz com que use a última versão 5.6.x do PHP.

Além do runtime PHP podem também escolher HHVM. Eu ainda não o experimentei.

{
    "require": {
  "hhvm": "~3.3"
    }
}

Definir extensões

Algumas extensões PHP vêm activas por omissão.

Para activar extensões opcionais introduzem:

{
    "require": {
  "php": "~5.6.0",
        "ext-gd": "*",
  "ext-xsl": "*"
    }
}

Especificar scripts

Se precisam de executar algum comando durante a execução do Composer podem usar scripts do Composer.

Por exemplo, para mudar as permissões da pasta tmp depois da instalação:

{
    "require": {
  "php": "~5.6.0",
        "ext-gd": "*",
  "ext-xsl": "*"
    },
 "scripts": {
        "post-install-cmd": [
            "chmod -R 777 tmp"
        ]
 }
}

Instalar as dependências do Composer

A documentação do Heroku menciona que basta ter um ficheiro composer.json no repositório. No entanto descobri que sem o ficheiro composer.lock a instalação falha.

Correr o comando de instalação do Composer:

composer install

Isto irá instalar as dependências e criar o ficheiro composer.lock.

Apache vs NGINX

Podem escolher entre Apache e NGINX para o vosso servidor web. Apache é usado por omissão.

Se querem especificar que servidor web usar criem um ficheiro Procfile. Para usar NGINX:

web: vendor/bin/heroku-php-nginx

Definir a raíz dos documentos

Por omissão a pasta de raíz do vosso repositório irá ser usada como a raíz dos documentos. Para definir uma sub-directoria podem passar um segundo parâmetro no ficheiro Procfile:

web: vendor/bin/heroku-php-nginx public_html

Definições php.ini personalizadas

Como o PHP não corre como um módulo Apache não podem alterar as definições usando php_value no vosso ficheiro .htaccess.

Como alternativa podem colocar as vossas definições num ficheiro .user.ini (usando o mesmo formato que usariam num ficheiro php.ini) na raíz dos documentos ou na pasta que querem que as definições sejam aplicadas.

Nem todas as definições PHP podem ser mudadas num ficheiro .user.ini. Apenas aquela com os modos PHP_INI_USER ou PHP_INI_PERDIR.

Podem também especificar definições php.ini adicionais sem reescrever o ficheiro php.ini todo usando a opção -I no script de iniciação do servidor web:

web: vendor/bin/heroku-php-nginx -I php_custom.ini public_html

Vejam o guia Heroku para mais detalhes de como personalizar as definições runtime do PHP.

Fazer push do repositório

Façam commit e push das mudanças para o vosso repositório.

Adicionem a localização remota do Dokku se ainda não o fizeram:

git remote add dokku dokku@host:app_name

Agora façam push para o Dokku e vejam como decorre a instalação:

git push dokku master

A seguir: como configurar a base de dados

No artigo seguinte vamos ver como criar uma base de dados e ligá-la à nossa aplicação.

Nuno Freitas
Publicado por Nuno Freitas em 11 dezembro, 2015

Artigos relacionados