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.