Como Instalar e Usar o Composer no Ubuntu
Introdução
O Composer é uma ferramenta popular de gestão de dependências para PHP, criada principalmente para facilitar a instalação e atualização das dependências de um projeto. Ele verifica de quais outros pacotes um projeto específico depende e os instala por si, utilizando as versões adequadas de acordo com os requisitos do projeto. O Composer também é frequentemente usado para iniciar novos projetos com base em frameworks PHP populares, como Symfony e Laravel. Se planeia trabalhar com Laravel, poderá também querer explorar o nosso guia sobre Como Instalar e Configurar o Laravel com Docker Compose no Ubuntu 20.04.
Compatibilidade de Versão: Este tutorial foi validado e testado no Ubuntu 20.04 LTS, 22.04 LTS e 24.04 LTS. Todos os comandos e passos funcionam de forma consistente nessas versões. Embora o Ubuntu 20.04 venha com o PHP 7.4 por defeito, o Ubuntu 22.04 inclui o PHP 8.1 e o Ubuntu 24.04 inclui o PHP 8.3. O Composer é compatível com o PHP 7.2.5 ou superior, por isso funciona perfeitamente com todas as versões padrão do PHP nestas versões do Ubuntu.
Neste tutorial, irá instalar e começar a usar o Composer num sistema Ubuntu.
Como alternativa, pode também implementar um projeto baseado em Composer diretamente no Linux-Console.net em 5 minutos. Para obter detalhes sobre como implementar um projeto PHP, consulte a nossa Plataforma de Aplicações Linux-Console.net.
Principais Conclusões
- O Composer automatiza a gestão de dependências em PHP ao tratar da instalação de bibliotecas, controlo de versões e atualizações, eliminando tarefas manuais de gestão de pacotes.
- A instalação global fornece acesso ao Composer em todo o sistema a partir de qualquer diretório, enquanto a instalação local oferece controlo específico por projeto e isolamento de versões.
- A verificação do hash é essencial para a segurança ao transferir o instalador do Composer, protegendo contra scripts de instalação adulterados ou corrompidos.
- O ficheiro
composer.lockgarante consistência ao bloquear as versões exactas das dependências em ambientes de desenvolvimento, teste e produção. - Composer é o padrão para o desenvolvimento moderno em PHP, com integração perfeita em frameworks como Laravel e Symfony, e suporte de mais de 400.000 pacotes no Packagist.
Pré-requisitos
Para seguir este guia, precisará de acesso a um servidor Ubuntu (20.04 LTS, 22.04 LTS ou 24.04 LTS) como um utilizador não-root com sudo, e um firewall ativo no seu servidor. Para configurar isto, pode seguir o nosso guia de configuração inicial de servidor para Ubuntu ou o guia correspondente para a sua versão do Ubuntu.
Se está à procura de uma referência rápida, consulte o nosso guia de início rápido Como Instalar o Composer no Ubuntu. Para tutoriais e recursos adicionais sobre o Composer, veja a nossa coleção de tutoriais do Composer.
Passo 1 — Instalar o PHP e Dependências Adicionais
Além das dependências que já deverão estar incluídas no seu sistema Ubuntu, como git e curl, o Composer requer php-cli para executar scripts PHP na linha de comandos, e unzip para extrair arquivos comprimidos. O pacote php-cli instalará a versão padrão do PHP para a sua versão do Ubuntu (PHP 7.4 no Ubuntu 20.04, PHP 8.1 no Ubuntu 22.04, ou PHP 8.3 no Ubuntu 24.04). Se precisar de configurar primeiro o seu servidor Ubuntu, consulte o nosso guia de configuração inicial de servidores para Ubuntu. Vamos instalar estas dependências agora.
Primeiro, atualize a cache do gestor de pacotes executando:
sudo apt updateDe seguida, execute o seguinte comando para instalar os pacotes necessários:
sudo apt install php-cli unzipSerá solicitado que confirme a instalação escrevendo Y e depois ENTER.
Uma vez que os pré-requisitos estejam instalados, pode prosseguir para a instalação do Composer.
Passo 2 — Descarregar e Instalar o Composer
O Composer fornece um script de instalação escrito em PHP. Vamos descarregá-lo, verificar se não está corrompido e depois usá-lo para instalar o Composer.
Certifique-se de que está no seu diretório pessoal e, em seguida, obtenha o instalador usando curl:
cd
curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.phpDe seguida, vamos verificar se o instalador descarregado corresponde ao hash SHA-384 do instalador mais recente encontrado na página de Chaves Públicas/Assinaturas do Composer. Para facilitar a etapa de verificação, pode usar o seguinte comando para obter programaticamente o hash mais recente da página do Composer e armazená-lo numa variável de shell:
HASH=`curl -sS https://composer.github.io/installer.sig`
Se quiser verificar o valor obtido, pode executar:
echo $HASHe0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755aAgora execute o seguinte código PHP, conforme fornecido na página de download do Composer, para verificar se o script de instalação é seguro de executar:
php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"Verá a seguinte saída:
Installer verifiedSe a saída indicar Instalador corrompido, terá de voltar a descarregar o script de instalação e verificar se está a utilizar o hash correto. Em seguida, repita o processo de verificação. Quando tiver um instalador verificado, pode continuar.
Para instalar o composer globalmente, utilize o seguinte comando que irá transferir e instalar o Composer como um comando a nível de sistema chamado composer, em /usr/local/bin:
sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composerVais ver uma saída semelhante a esta:
All settings correct for using Composer
Downloading...
Composer (version 2.2.9) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composerPara testar a sua instalação, execute:
composer ______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version Composer version 2.2.9 2022-03-15 22:13:37
Usage:
command [options] [arguments]
Options:
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
--profile Display timing and memory usage information
--no-plugins Whether to disable plugins.
-d, --working-dir=WORKING-DIR If specified, use the given directory as working directory.
--no-cache Prevent use of the cache
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
...Isto verifica que o Composer foi instalado com sucesso no seu sistema e está disponível em todo o sistema.
Nota: Se preferir ter executáveis do Composer separados para cada projeto que hospeda neste servidor, pode instalá-lo localmente, numa base por projeto. Este método também é útil quando o seu utilizador do sistema não tem permissão para instalar software a nível do sistema.
Para fazer isto, use o comando php /tmp/composer-setup.php. Isto irá gerar um ficheiro composer.phar no seu diretório atual, que pode ser executado com php composer.phar. As instalações locais são particularmente úteis para manter diferentes versões do Composer em vários projetos ou quando se trabalha em ambientes restritos.
Agora vamos ver como usar o Composer para gerir dependências.
Passo 3 — Usar o Composer num projeto PHP
Os projetos PHP muitas vezes dependem de bibliotecas externas, e gerir essas dependências e as suas versões pode ser complicado. O Composer resolve esse problema ao acompanhar as versões e dependências do projecto, facilitando também o processo de encontrar, instalar e atualizar os pacotes necessários a um projecto.
Para usar o Composer no seu projeto, precisará de um ficheiro composer.json. O ficheiro composer.json informa o Composer sobre quais dependências precisa de descarregar para o seu projeto e quais versões de cada pacote podem ser instaladas. Isto é extremamente importante para manter o seu projeto consistente e evitar a instalação de versões instáveis que possam causar problemas de compatibilidade retroativa.
Não é necessário criar este ficheiro manualmente - é comum encontrar erros de sintaxe ao fazê-lo. O Composer oferece uma forma interativa de criar um novo ficheiro composer.json com base nas respostas do utilizador, o que é uma boa opção se planeia partilhar o seu projeto mais tarde como um pacote público no Packagist. O Composer também gera automaticamente um ficheiro composer.json básico quando executa o comando composer require para incluir uma dependência num projeto recém-criado.
O processo de utilizar o Composer para instalar um pacote como dependência num projeto envolve os seguintes passos:
- Identifique que tipo de biblioteca a aplicação necessita.
- Pesquise uma biblioteca de código aberto adequada no Packagist.org, o repositório oficial de pacotes para o Composer.
- Escolha o pacote do qual deseja depender.
- Execute
composer requirepara incluir a dependência no ficheirocomposer.jsone instalar o pacote.
Vamos experimentar isto com uma aplicação de demonstração.
O objetivo desta aplicação é transformar uma frase dada numa string compatível com URLs - um slug. Isto é comumente usado para converter títulos de páginas em caminhos de URL (como a parte final da URL deste tutorial).
Vamos começar por criar um diretório para o nosso projeto. Vamos chamá-lo de slugify:
cd ~
mkdir slugify
cd slugifyEmbora não seja obrigatório, pode agora executar o comando composer init para criar um ficheiro composer.json detalhado para o seu projeto. Como o único objetivo do nosso projeto é demonstrar como instalar dependências com o Composer, vamos usar um ficheiro composer.json mais simples que será gerado automaticamente quando exigirmos o nosso primeiro pacote.
Agora é altura de procurar no Packagist.org um pacote que nos possa ajudar a gerar slugs. Se procurares pelo termo “slug” no Packagist, vais obter um resultado semelhante a este:
Verá dois números no lado direito de cada pacote na lista. O número no topo representa quantas vezes o pacote foi instalado através do Composer, e o número em baixo mostra quantas vezes o pacote recebeu estrelas no GitHub. De modo geral, pacotes com mais instalações e mais estrelas tendem a ser mais estáveis, uma vez que muitas pessoas os estão a usar. Também é importante verificar a descrição do pacote para garantir que é relevante e atende às suas necessidades.
Precisamos de um conversor de string-para-slug. Pelos resultados de pesquisa, o pacote cocur/slugify, que aparece como o primeiro resultado nessa página, parece ser uma boa opção, com um número razoável de instalações e estrelas.
Os pacotes no Packagist têm um nome de fornecedor e um nome de pacote. Cada pacote tem um identificador único (um namespace) no mesmo formato que o GitHub usa para os seus repositórios: fornecedor/pacote. A biblioteca que queremos instalar utiliza o namespace cocur/slugify. Precisa do namespace de um pacote para poder incluí-lo no seu projeto.
Agora que sabe exatamente qual pacote quer instalar, pode executar composer require para incluí-lo como uma dependência e também gerar o ficheiro composer.json para o seu projeto. Uma coisa importante a notar ao exigir pacotes é que o Composer acompanha tanto as dependências a nível de aplicação como as dependências a nível de sistema. As dependências a nível de sistema são importantes para indicar quais os módulos PHP de que um pacote depende. No caso do pacote cocur/slugify, ele requer um módulo PHP que ainda não instalámos.
Quando um pacote necessário depende de uma biblioteca do sistema que atualmente não está instalada no seu servidor, receberá um erro indicando qual requisito está em falta:
composer require cocur/slugifyUsing version ^4.0 for cocur/slugify
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for cocur/slugify ^4.0 -> satisfiable by cocur/slugify[v4.0.0].
- cocur/slugify v4.0.0 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system.
...Para resolver o problema de dependência do sistema, podemos procurar o pacote em falta usando apt search:
apt search mbstringSorting... Done
Full Text Search... Done
php-mbstring/jammy 2:8.1+92ubuntu1 all
MBSTRING module for PHP [default]
php-patchwork-utf8/jammy 1.3.1-1 all
UTF-8 strings handling for PHP
php8.1-mbstring/jammy 8.1.2-1ubuntu2.14 amd64
MBSTRING module for PHPNota: Os nomes dos pacotes mostrados acima são exemplos do Ubuntu 22.04. No Ubuntu 20.04, verá php7.4-mbstring, e no Ubuntu 24.04, verá php8.3-mbstring. O pacote genérico php-mbstring instalará automaticamente a versão correta para a sua versão do Ubuntu.
Depois de localizar o nome correcto do pacote, pode usar o apt mais uma vez para instalar a dependência do sistema:
sudo apt install php-mbstringUma vez concluída a instalação, pode executar novamente o comando composer require:
composer require cocur/slugifyUsing version ^4.0 for cocur/slugify
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing cocur/slugify (v4.0.0): Downloading (100%)
Writing lock file
Generating autoload filesComo pode ver pelo resultado, o Composer decidiu automaticamente que versão do pacote utilizar. Se verificar agora a diretoria do seu projeto, ela conterá dois novos ficheiros: composer.json e composer.lock, e um directório vendor:
ls -ltotal 12
-rw-rw-r-- 1 sammy sammy 59 May 4 13:56 composer.json
-rw-rw-r-- 1 sammy sammy 3229 May 4 13:56 composer.lock
drwxrwxr-x 4 sammy sammy 4096 May 4 13:56 vendorO ficheiro composer.lock é utilizado para armazenar informações sobre quais versões de cada pacote estão instaladas, e garantir que as mesmas versões sejam utilizadas se alguém mais clonar o seu projeto e instalar as suas dependências. Este ficheiro bloqueia as versões exatas de todas as dependências e das suas subdependências, proporcionando consistência entre diferentes ambientes e membros da equipa. O diretório vendor é onde se encontram as dependências do projeto. A pasta vendor não deve ser submetida ao controlo de versão - apenas precisa de incluir os ficheiros composer.json e composer.lock. Quando outros clonarem o seu projeto, podem executar composer install para recriar a árvore de dependências exata com base no ficheiro de bloqueio.
Ao instalar um projeto que já contém um ficheiro composer.json, execute composer install para transferir as dependências do projeto.
Vamos dar uma rápida olhada nas restrições de versão. Se verificar o conteúdo do seu ficheiro composer.json, verá algo como isto:
cat composer.json{
"require": {
"cocur/slugify": "^4.0"
}
}Pode notar o carácter especial ^ antes do número da versão em composer.json. O Composer suporta várias restrições e formatos diferentes para definir a versão do pacote necessária, de forma a proporcionar flexibilidade, mantendo também o seu projeto estável. O operador caret (^) usado pelo ficheiro composer.json gerado automaticamente é o operador recomendado para máxima interoperabilidade, seguindo o versionamento semântico. Neste caso, define 4.0 como a versão mínima compatível e permite atualizações para qualquer versão futura abaixo de 5.0.
De um modo geral, não será necessário mexer nas restrições de versão no seu ficheiro composer.json. No entanto, algumas situações podem exigir que edite manualmente as restrições, por exemplo, quando uma nova versão principal da biblioteca que necessita é lançada e deseja atualizar, ou quando a biblioteca que pretende usar não segue a gestão semântica de versões.
Aqui estão alguns exemplos para te dar uma melhor compreensão de como funcionam as restrições de versão do Composer:
| Restrição | Significado | Versões de Exemplo Permitidas |
|---|---|---|
| ^1.0 | >= 1,0 < 2,0 | 1.0, 1.2.3, 1.9.9 |
| ^1.1.0 | >= 1.1.0 < 2.0 | 1.1.0, 1.5.6, 1.9.9 |
| ~1,0 | >= 1.0 < 2.0.0 | 1.0, 1.4.1, 1.9.9 |
| ~1.0.0 | >= 1.0.0 < 1.1 | 1.0.0, 1.0.4, 1.0.9 |
| 1.2.1 | 1.2.1 | 1.2.1 |
| 1.* | >= 1,0 < 2,0 | 1.0.0, 1.4.5, 1.9.9 |
| 1.2.* | >= 1.2 < 1.3 | 1.2.0, 1.2.3, 1.2.9 |
Para uma visão mais detalhada sobre as restrições de versão do Composer, consulte a documentação oficial.
De seguida, vamos ver como carregar dependências automaticamente com o Composer.
Passo 4 — Incluir o Script de Autocarregamento
Como o PHP por si só não carrega automaticamente as classes, o Composer fornece um script de autoload que você pode incluir no seu projeto para que o carregamento automático funcione. Este ficheiro é gerado automaticamente pelo Composer quando adiciona a sua primeira dependência.
A única coisa que precisa de fazer é incluir o ficheiro vendor/autoload.php nos seus scripts PHP antes de qualquer instanciação de classe.
Vamos experimentá-lo na nossa aplicação de demonstração. Abra um novo ficheiro chamado test.php no seu editor de texto:
nano test.phpAdicione o seguinte código que inclui o ficheiro vendor/autoload.php, carrega a dependência cocur/slugify e utiliza-a para criar um slug:
<?php
require __DIR__ . '/vendor/autoload.php';
use Cocur\Slugify\Slugify;
$slugify = new Slugify();
echo $slugify->slugify('Hello World, this is a long sentence and I need to make a slug from it!');
Guarde o ficheiro e saia do seu editor.
Agora execute o script:
php test.phpIsto produz a saída hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it.
As dependências precisam de atualizações quando surgem novas versões, por isso vamos ver como lidar com isso.
Passo 5 — Atualização das Dependências do Projeto
Sempre que quiser atualizar as dependências do seu projeto para versões mais recentes, execute o comando update:
composer updateIsto irá verificar se existem versões mais recentes das bibliotecas que você requisitou no seu projeto. Se for encontrada uma versão mais recente e esta for compatível com a restrição de versão definida no ficheiro composer.json, o Composer substituirá a versão anterior instalada. O ficheiro composer.lock será atualizado para refletir estas alterações.
Também pode atualizar uma ou mais bibliotecas específicas especificando-as desta forma:
composer update vendor/package vendor2/package2Certifique-se de verificar os seus ficheiros composer.json e composer.lock no seu sistema de controlo de versões após atualizar as suas dependências, para que outros também possam instalar estas novas versões.
Perguntas Frequentes
1. Para que é utilizado o Composer em PHP?
O Composer é um gestor de dependências para PHP que automatiza o processo de encontrar, instalar e atualizar bibliotecas e pacotes de que os seus projetos PHP dependem. Em vez de descarregar e gerir dependências manualmente, o Composer lê um ficheiro composer.json que lista os requisitos do seu projeto e trata de tudo automaticamente. Isto garante que obtém as versões corretas dos pacotes e das suas dependências, tornando o desenvolvimento PHP mais eficiente e fiável.
2. Como instalo o Composer globalmente no Ubuntu?
Para instalar o Composer globalmente no Ubuntu, descarregue o script de instalação, verifique a sua integridade usando o hash SHA-384 e depois execute o instalador com os parâmetros --install-dir e --filename apontando para /usr/local/bin. Isto torna o Composer disponível em todo o sistema como o comando composer. O processo de instalação é idêntico nas versões Ubuntu 20.04, 22.04 e 24.04. Os passos detalhados estão descritos no Passo 2 deste tutorial.
3. Como posso verificar se o instalador do Composer é seguro?
Pode verificar a segurança do instalador do Composer comparando o seu hash SHA-384 com o hash oficial publicado na página de Chaves Públicas/Assinaturas do Composer. Use o comando php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; }" onde $HASH contém o hash mais recente da página oficial do Composer. Este passo de verificação é crucial para a segurança e é demonstrado no Passo 2.
4. Qual é a diferença entre uma instalação global e uma instalação local do Composer?
Uma instalação global coloca o Composer num diretório do sistema como /usr/local/bin, tornando-o acessível a partir de qualquer diretório no seu sistema. Isto é conveniente para gerir múltiplos projetos. Uma instalação local cria um ficheiro composer.phar num diretório específico do projeto, o que é útil quando não tem permissões para instalação em todo o sistema ou quando quer versões do Composer específicas para o projeto. Pode executar uma instalação local com php /tmp/composer-setup.php no diretório do seu projeto.
5. Como posso atualizar o Composer para a versão mais recente?
Para atualizar o Composer para a versão mais recente, execute composer self-update. Este comando descarrega e instala a versão mais recente do Composer, substituindo a instalação atual. Para instalações globais, pode ser necessário usar sudo composer self-update dependendo das suas permissões.
6. Por que é que o Composer está a dar erros de limite de memória no Ubuntu?
Erros de limite de memória normalmente ocorrem quando o Composer tenta processar árvores de dependências grandes ou quando o limite de memória do seu PHP é demasiado baixo. Pode resolver isso aumentando temporariamente o limite de memória do PHP para comandos do Composer usando php -d memory_limit=512M /usr/local/bin/composer install ou editando o seu ficheiro php.ini para aumentar a configuração memory_limit. Para a maioria dos projetos, 512MB ou 1GB devem ser suficientes.
7. Como desinstalar o Composer no Ubuntu?
Para desinstalar um Composer instalado globalmente, basta remover o ficheiro executável: sudo rm /usr/local/bin/composer. Para instalações locais, apague o ficheiro composer.phar do diretório do seu projeto. Note que isto não remove o diretório vendor nem os ficheiros composer.json nos seus projetos, que pode eliminar separadamente, se necessário.
8. Preciso de sudo para executar o Composer?
Não precisa de sudo para executar comandos do Composer para gerir as dependências do projeto. No entanto, pode precisar de sudo ao instalar ou atualizar o próprio Composer globalmente, uma vez que isso exige escrever em diretórios do sistema, como /usr/local/bin. Depois de instalado, operações regulares do Composer, como composer install, composer require e composer update, funcionam sem privilégios elevados.
Conclusão
O Composer é uma ferramenta poderosa que pode facilitar significativamente o trabalho de gerir dependências em projetos PHP. Ele fornece uma forma fiável de descobrir, instalar e atualizar pacotes PHP dos quais um projeto depende. Neste guia, vimos como instalar o Composer, como incluir novas dependências num projeto e como atualizar estas dependências quando novas versões estão disponíveis.
Próximos Passos
Agora que tem o Composer instalado e configurado no seu sistema Ubuntu, pode começar a construir aplicações PHP com dependências geridas. Aqui estão alguns passos recomendados a seguir:
Implantar aplicações PHP com Composer: Aprenda como implantar projetos baseados em Composer usando a Plataforma de Aplicações Linux-Console.net, que detecta e instala automaticamente as dependências do Composer durante a implantação.
Configurar o Laravel com Docker: Se estiver a trabalhar com Laravel, consulte o nosso guia sobre Como Instalar e Configurar o Laravel com Docker Compose no Ubuntu para conteinerizar o seu ambiente de desenvolvimento.
Aprenda Docker Compose: Para gerir aplicações multi-contentor, veja o nosso tutorial sobre Como Instalar e Usar o Docker Compose no Ubuntu.
Explore o desenvolvimento em PHP: Navegue pela nossa coleção de tutoriais de PHP para aprender mais sobre as melhores práticas de desenvolvimento em PHP, configuração de frameworks e estratégias de implementação.
Pronto para colocar a sua aplicação PHP em produção? Comece com a Plataforma de Aplicações Linux-Console.net e implemente os seus projetos baseados em Composer em minutos, com gestão automática de dependências e escalabilidade.
Recursos Adicionais
- Referência Rápida: Para uma versão condensada deste guia, consulte o nosso guia de Início Rápido sobre Como Instalar o Composer no Ubuntu 20.04.
- Tutoriais de Composer: Explore a nossa coleção completa de tutoriais de Composer para padrões de utilização mais avançados e boas práticas.
- Integração com Docker: Aprenda a conteinerizar as suas aplicações PHP com o nosso guia sobre Como Instalar e Usar o Docker Compose no Ubuntu 20.04 ou o guia correspondente para a sua versão do Ubuntu.
- Desenvolvimento em PHP: Explore a nossa coleção completa de tutoriais de PHP, abrangendo frameworks, estratégias de implementação e optimização de desempenho.
Quer hospedar as suas aplicações PHP? Faça o deploy com a Plataforma de Aplicações da Linux-Console.net para escalamento automático, bases de dados geridas e integração perfeita com o Composer, ou crie um Droplet para controlo completo do servidor.
Obrigado por aprender com a comunidade Linux-Console.net.

