Como implantar um aplicativo PHP?
Este artigo discutirá o PHP, uma das linguagens de script mais populares que alimentam a rede mundial de computadores. Exploraremos suas vantagens, desvantagens e opções de implementação.
Ao final deste artigo, você poderá fazer o bootstrap de um aplicativo PHP simples, dockerizá-lo e implantá-lo nos contêineres do Back4app.
Contents
Visão geral do PHP
O PHP (abreviação de “PHP: HyperText Processor”) é uma linguagem de script de uso geral popular e gratuita. Ela foi criada em 1993 por Rasmus Lerdorf e lançada posteriormente em 1995.
O PHP foi inicialmente projetado para o desenvolvimento da Web, mas agora também é usado para scripts do lado do servidor, scripts de linha de comando e criação de aplicativos de desktop.
O melhor do PHP é que ele pode ser incorporado diretamente ao HTML. Não há necessidade de usar comandos extensos para gerar HTML (como visto em C ou Perl). Aqui está um exemplo rápido:
<!DOCTYPE html>
<html lang="en">
<head>
<title>My first PHP website</title>
</head>
<body>
<?php
$cool_scripting_language = "PHP";
echo "$cool_scripting_language is a cool scripting language!";
?>
</body>
</html>
O PHP será executado quando um usuário solicitar esse site, e somente a saída HTML processada será retornada. No nosso caso, uma mensagem dizendo: “PHP é uma linguagem de script legal!”. O PHP é executado no lado do servidor em vez de no navegador (como o JavaScript).
É discutível se o PHP é uma linguagem totalmente orientada a objetos. No entanto, ele oferece suporte a recursos padrão orientados a objetos, como namespaces, classes e objetos.
No momento em que este artigo foi escrito, a versão estável mais recente do PHP era a 8.2, mas muitos aplicativos PHP permanecem em versões mais antigas.
Alguns desenvolvedores afirmam que o PHP está morrendo, mas esse não é o caso. De acordo com a pesquisa da W3Techs, o PHP atualmente alimenta 77,4% de todos os sites cuja linguagem de programação do lado do servidor é conhecida.
A linguagem de script também é usada por sites de alto tráfego, como Facebook, Wikipedia, Mailchimp, vários softwares CMS e até mesmo pelo YouTube no passado.
Benefícios do PHP
Bom desempenho
O PHP é mais eficiente do que outras linguagens de script do lado do servidor, como ASP.NET, JSP e Python. Alguns benchmarks mostram que o PHP é até três vezes mais rápido que o Python.
O PHP é melhor para lidar com tarefas relacionadas à Web, como gerar páginas HTML, lidar com envios de formulários e interagir com o banco de dados.
Por outro lado, há opções mais ideais do que o PHP para tarefas de computação pesada ou algoritmos complexos.
Plataforma cruzada
O PHP é independente de plataforma. Ele é executado em várias plataformas, incluindo Windows, Linux, Unix e Mac. Além disso, é compatível com quase todos os servidores da Web populares, como Apache HTTP, Caddy, Nginx, LiteSpeed e assim por diante.
A popular linguagem de script também pode ser usada para desenvolver aplicativos de desktop graças ao phpdesktop de Czarek Tomczak. Você pode pensar nessa biblioteca como o Electron, mas para PHP. Os aplicativos Phpdesktop podem ser executados no Windows e no Linux, mas não no Mac OS X (ainda).
Suporte a banco de dados
A linguagem de script suporta uma variedade de bancos de dados, incluindo bancos de dados SQL e NoSQL. O banco de dados mais popular a ser usado com o PHP é o MySQL(pilha LAMP), mas nada o impede de usar o PostgreSQL ou qualquer outro tipo de banco de dados.
Você pode ver todas as camadas de abstração do PHP e as extensões de banco de dados específicas do fornecedor em seu site oficial.
Ecossistema vibrante
O PHP é tão popular quanto é, graças ao seu ecossistema vibrante. Muitas estruturas PHP incríveis aceleram significativamente o processo de desenvolvimento, simplificam a base de código e orientam você a escrever códigos mais limpos e padronizados.
As estruturas PHP mais populares no momento em que este artigo foi escrito são:
Para obter mais estruturas e recursos incríveis, confira o awesome-php no GitHub.
Há também muitos CMS que utilizam PHP, como WordPress, Joomla, Drupal e Magento.
Fácil de aprender
O PHP é uma linguagem amigável para iniciantes com uma sintaxe simples. É relativamente fácil de aprender se você estiver familiarizado com os conceitos básicos da World Wide Web (WWW), HTML, CSS e JavaScript. Muitos desenvolvedores podem escrever PHP, mas apenas alguns conseguem escrever PHP de fácil manutenção que segue convenções de código limpo.
Limitações do PHP
Ferramentas de depuração limitadas
O PHP é ruim no tratamento de erros e não tem ferramentas de depuração em comparação com outras linguagens de programação populares. Se o seu projeto exigir depuração avançada, você provavelmente terá de usar software de terceiros, como Xdebug, Krumo ou Kint.
Alguns IDEs populares, como o PhpStorm e o Visual Studio, também têm ferramentas de depuração de PHP incorporadas.
Digitado livremente
Como mencionado acima, o PHP é uma linguagem de script, não uma linguagem de programação. Uma das características mais comuns das linguagens de script é que elas são de tipagem livre.
Isso significa que o tipo de variável não precisa ser declarado explicitamente antes de ser usado. Além disso, ele também pode mudar a qualquer momento durante o tempo de execução.
Isso faz com que os aplicativos PHP sejam mais propensos a erros e difíceis de depurar.
Falhas de segurança
Ao longo dos anos, os aplicativos PHP têm sido alvo de vários ataques de hackers. Isso se deve principalmente à natureza de código aberto do PHP e ao baixo custo de entrada para novos desenvolvedores.
Algumas das vulnerabilidades mais conhecidas do PHP incluem injeções de SQL, cross-site scripting (XSS), cross-site request forgery (CSRF) e execução remota de código (RCE).
Lembre-se de que essas vulnerabilidades podem ser evitadas seguindo práticas de codificação seguras. Certifique-se de sempre higienizar a entrada e nunca executar a entrada fornecida pelo usuário.
O Vanilla PHP está desatualizado
O Vanilla PHP (ou seja, o PHP sem bibliotecas ou estruturas) pode estar bastante desatualizado para a criação de aplicativos modernos. Para criar aplicativos seguros com rapidez, você precisará utilizar uma estrutura.
Opções de implantação do PHP
Os aplicativos PHP podem ser implementados em diferentes plataformas. Os modelos de nuvem mais comuns para a implementação de aplicativos PHP são:
- Infraestrutura como serviço (IaaS),
- Plataforma como serviço (PaaS),
- Contêineres como serviço (CaaS).
Não existe o melhor modelo de nuvem para a implementação de aplicativos PHP. Em última análise, a escolha depende dos requisitos de seu projeto, do orçamento e do nível de abstração desejado.
Normalmente, as equipes de desenvolvedores optam por PaaS ou CaaS, pois são mais fáceis de gerenciar e não são muito mais caras do que IaaS. Vamos dar uma olhada em alguns dos melhores fornecedores de hospedagem PHP.
Contêineres do Back4app
O Back4app Containers é uma excelente oferta de Contêineres como Serviço (CaaS) da Back4app. A plataforma permite que os desenvolvedores criem, dimensionem e implementem rapidamente aplicativos em docker.
Implantar um aplicativo no Back4app Containers é tão fácil quanto importar seu repositório do GitHub e clicar em um botão. A plataforma tem um ótimo sistema de integração e implementação contínuas, suporta implementações sem tempo de inatividade, rastreamento de implementação em tempo real e muito mais!
Outro benefício do Back4app Containers é sua camada gratuita, que é excelente para hospedar aplicativos pequenos. À medida que seu aplicativo cresce, você pode fazer upgrade para níveis premium seguindo um plano de preços simples e previsível.
Google Cloud Run
O Google Cloud Run é uma plataforma de contêineres como serviço (CaaS) totalmente automatizada para implantação e dimensionamento de aplicativos em contêineres. Tornou-se publicamente disponível em 2019 e, desde então, ganhou muita popularidade.
O Cloud Run é relativamente fácil de usar, especialmente se você estiver familiarizado com outros produtos do GCP. Alguns benefícios do Cloud Run incluem certificados SSL gratuitos, boa integração com outras soluções do GCP e escalonamento para zero.
No momento em que este artigo foi escrito, o Google oferecia créditos gratuitos de US$ 300 para novos usuários.
Heroku
O Heroku é uma das soluções pioneiras de plataforma como serviço (PaaS). Ela foi criada em 2007 e continua muito popular até hoje.
Ele oferece amplo suporte a várias linguagens de programação, inclusive PHP, Java, Node.js, Go, Scala e Python. A plataforma tem uma interface de usuário elegante e fácil de usar, permite grande escalabilidade e oferece uma vasta seleção de complementos.
O Heroku costumava oferecer um plano gratuito e instâncias PostgreSQL e Redis de cortesia, mas decidiu cancelá-los em 2022 devido a preocupações relacionadas a fraudes e bots. No entanto, o Heroku continua sendo uma excelente plataforma para a implementação de aplicativos.
AWS Elastic Beanstalk
O AWS Elastic Beanstalk (EB) é uma excelente solução de plataforma como serviço (PaaS). É uma plataforma madura e bem testada que foi criada em 2011. O EB suporta nativamente Go, Java, Node.js, PHP, Python, Ruby e permite a implantação de aplicativos em docker.
O melhor do Elastic Beanstalk é que você pode combiná-lo com outras soluções da AWS, como AWS S3, AWS RDS, AWS CloudFront e assim por diante. A AWS oferece um nível gratuito para novos clientes.
Processo de implantação de PHP
Nesta seção, veremos como fazer o bootstrap e implantar um aplicativo Web simples do Laravel nos contêineres do Back4app.
Pré-requisitos
- Conhecimento básico de PHP.
- Conhecimento básico do Docker e da tecnologia de conteinerização.
- Composer junto com o Node.js e o Docker instalados em seu computador local.
Se você não estiver familiarizado com a tecnologia de conteinerização, consulte O que são contêineres?
O que é o Laravel?
O Laravel é uma excelente estrutura PHP que permite que você crie aplicativos usando uma sintaxe expressiva e elegante rapidamente. Como resultado, você acaba com um código limpo e conciso.
A estrutura é baseada no padrão arquitetônico modelo-visão-controlador (MVC). O melhor de tudo é que o Laravel é totalmente gratuito e de código aberto.
Ele foi lançado inicialmente em 2011 e atualmente é uma das estruturas PHP mais populares. Devido à sua flexibilidade, ele pode ser usado para criar qualquer tipo de aplicativo da Web.
Vantagens do Laravel
- Desempenhoso e flexível.
- Simplifica o trabalho com o banco de dados (por meio do Eloquent ORM).
- Autenticação e autorização incorporadas.
- Medidas de segurança integradas (CSRF, XSS).
Algumas alternativas ao Laravel incluem Symfony, CodeIgniter, CakePHP e Laminas Project.
Criar aplicativo
As etapas a seguir exigirão que você tenha o Composer instalado. Se você não o tiver, faça o download no site oficial.
Comece criando um novo projeto Laravel por meio da interface de linha de comando do Composer:
$ composer create-project laravel/laravel sample-app
Sinta-se à vontade para substituir
sample-app
por um nome personalizado.
Esse comando criará um novo projeto Laravel e a estrutura de diretórios padrão. Além disso, ele instalará todas as dependências por meio do composer install
. O comando deve levar no máximo três minutos.
Quando isso for feito, você verá a seguinte estrutura de diretórios:
sample-app/
├── app/ contains the core code of your application
│ ├── Console
│ ├── Exceptions
│ ├── Http
│ ├── Models
│ └── Providers
├── bootstrap is used to bootstrap the framework
├── config contains all your configuration files
├── database contains database factories, migrations, seeders
├── public contains your index.php and static assets (JS, images, CSS)
├── resources contains all your views and templates (along with raw assets)
├── routes is used to define all your application endpoints
├── storage contains logs and other auto-generated stuff
├── tests can be utilized for automatic testing
└── vendor contains your Composer dependencies
Em seguida, execute o servidor de desenvolvimento com o seguinte comando:
$ php artisan serve
INFO Server running on [http://127.0.0.1:8000].
Press Ctrl+C to stop the server.
Por fim, abra seu navegador da Web favorito e navegue até http://localhost:8000/. Você deverá ver a página de índice padrão do Laravel.
Modificar aplicativo
Nesta seção, modificaremos ligeiramente o aplicativo registrando um novo endpoint de API.
Conforme mencionado na seção anterior, todas as rotas são definidas na pasta routes. A pasta de rotas contém os seguintes arquivos:
routes/
├── api
├── channels
├── console
└── web
O diretório da Web define rotas de usuário final, API para rotas de API, console para definir comandos de console e, por fim, canais para canais de transmissão de eventos.
Antes do Laravel 5.3, havia apenas um arquivo de rotas localizado em app/Http/routes.php.
Navegue até routes/api.php e registre um novo endpoint de API da seguinte forma:
<?php
// routes/api.php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
// new endpoint
Route::get('/', function () {
return response()->json([
'detail' => 'Back4app Containers rocks!',
]);
});
Ótimo, é isso.
Inicie o servidor de desenvolvimento novamente (se ele ainda não estiver em execução) e acesse http://localhost:8000/. Você ainda deve conseguir ver a página padrão do Laravel, mas se navegar até /api/, verá a seguinte mensagem:
{
"detail": "Back4app Containers rocks!"
}
Aplicativo Dockerize
Nesta seção, vamos dockerizar nosso aplicativo Laravel usando um Dockerfile.
Dockerfile
Um Dockerfile é um arquivo de texto simples que contém todas as instruções que o Docker Engine deve executar para criar e executar uma imagem do Docker. As instruções geralmente são escritas em letras maiúsculas e são seguidas por uma quantidade personalizada de argumentos. Exemplo:
INSTRUCTION arg1 arg2 ... argn
Vá em frente e crie um Dockerfile na raiz do projeto com o seguinte conteúdo:
FROM php:8.1-apache
# Set the working directory
WORKDIR /var/www/html
# Install the necessary libraries
RUN apt-get update && apt-get install -y \
libonig-dev \
libzip-dev
# Install PHP extensions
RUN docker-php-ext-install \
mbstring \
zip
# Copy over the Laravel project
COPY . .
# Install Composer along with the dependencies
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
RUN composer install
# Change ownership of our applications
RUN chown -R www-data:www-data /var/www/html
# Copy over the .env file and generate the app key
COPY .env .env
RUN php artisan key:generate
# Expose port 80
EXPOSE 80
# Adjusting Apache configurations
RUN a2enmod rewrite
COPY apache/apache-config.conf /etc/apache2/sites-available/000-default.conf
Esse Dockerfile usa php:8.1-apache
como imagem de base, instala as dependências necessárias do sistema operacional e copia o projeto. Em seguida, ele instala as dependências do PHP por meio do Composer, gera uma chave do Laravel, expõe a porta 80 e, por fim, copia a configuração do Apache.
Para saber mais sobre Dockerfiles, consulte a referência Dockerfile.
.dockerignore
Podemos usar um arquivo .dockerignore para reduzir o tamanho da imagem. Esse arquivo funciona de forma semelhante a um arquivo .gitignore. Ele nos permite omitir arquivos e diretórios específicos que não queremos que sejam incluídos na imagem.
Crie um arquivo .dockerignore na raiz do projeto com o seguinte conteúdo:
/.phpunit.cache
/node_modules
/public/build
/public/hot
/public/storage
/storage/*.key
/vendor
.phpunit.result.cache
auth.json
npm-debug.log
yarn-error.log
/.fleet
/.idea
/.vscode
Sinta-se à vontade para modificar o arquivo .dockerignore de acordo com suas necessidades.
Criar, executar e testar
Antes de tentar criar uma imagem, verifique se você tem o Docker instalado:
$ docker --version
Docker version 20.10.22, build 3a2c30b
Depois de verificar isso, você poderá criar a imagem:
$ docker build -t laravel-sample:1.0 .
Resumo do comando:
O docker build
é usado para criar a imagem.-t laravel-sample:1.0
marca a imagem (os nomes das imagens geralmente têm a estruturaname:version
)..
especifica o contexto de compilação. No nosso caso, essa é a raiz do projeto.
Em seguida, use a imagem recém-criada para ativar um contêiner:
$ docker run -p 80:80 --name laravel-sample-container -d laravel-sample:1.0
Resumo do comando:
O docker run
é usado para ativar um contêiner.-p 80:80
vincula a porta80
do host à80
do contêiner.--name laravel-sample-container
especifica o nome do contêiner.-d
executa a imagem no modo desanexado, ou seja, sem ocupar o terminal.laravel-sample:1.0
informa ao mecanismo Docker qual imagem deve ser usada.
Se agora você verificar os contêineres
em execução, deverá ver o laravel-sample-container
:
$ docker ps
CONTAINER IMAGE COMMAND CREATED PORTS
b0bfbd laravel-sample:1.0 "docker-php..." 2s ago 0.0.0.0:80->80/tcp laravel
Por fim, verifique se é possível ver o aplicativo acessando http://localhost/ em seu navegador da Web favorito.
Enviar para o GitHub
Para implantar seu aplicativo no Back4app Containers, você deve primeiro carregar seu código-fonte no GitHub. O Back4app Containers usa um sistema de CI/CD que faz a implantação automaticamente quando você envia seu código para um branch específico.
As etapas a seguir exigirão que você tenha uma conta do GitHub (e o Git instalado).
Comece navegando até https://github.com e criando um novo repositório:
Em seguida, escolha um nome adequado e deixe todo o resto como padrão. Em seguida, clique no botão “Create repository” (Criar repositório) para criar o repositório:
Depois que o repositório for criado, pegue a URL remota:
Agora, navegue de volta ao seu projeto local e abra a linha de comando. Para enviar o código para o GitHub, primeiro você precisa inicializar um repositório Git local com o seguinte:
$ git init
Em seguida, faça o VCS de todos os arquivos e crie um novo commit:
$ git add .
$ git commit -m "init"
Por fim, insira o código no controle remoto:
$ git push origin master
É isso aí! Se você atualizar a página do repositório do GitHub, verá que todos os arquivos foram enviados com sucesso para o repositório Git remoto.
Implantar aplicativo
Para implantar um aplicativo no Back4app Containers, primeiro você precisa fazer login (ou inscrever-se se ainda não tiver uma conta). Você será redirecionado para a página do painel do aplicativo ao fazer login.
Em seguida, use o botão “Build new app” para iniciar o processo de criação do aplicativo:
Selecione “Containers as a Service” (Contêineres como serviço), pois estamos implantando um aplicativo em contêiner:
Em seguida, conecte seu GitHub à sua conta do Back4app e importe o repositório que criamos na etapa anterior.
Dê ao seu aplicativo um nome personalizado e deixe todo o resto como padrão.
Para criar um aplicativo, clique em “Create App” (Criar aplicativo). O Back4app extrairá automaticamente o código-fonte do GitHub e iniciará o processo de construção da imagem do docker quando você clicar nele. Após alguns minutos, o status do aplicativo será alterado para “Ready” (Pronto).
Quando isso acontecer, use o link à esquerda para abrir a página em seu navegador.
É isso aí!
Conclusão
Concluindo, você aprendeu sobre o PHP, suas vantagens, desvantagens e opções de implantação. Agora você sabe como fazer o bootstrap e implantar um aplicativo Laravel no Back4app.
Os tópicos que examinamos ao longo do tutorial mal arranharam a superfície da estrutura do Laravel. Você sempre pode aprender mais dando uma olhada na documentação do Laravel.
O código-fonte está disponível no repositório back4app-containers-php do GitHub.
Etapas futuras
- Dê uma olhada nos conceitos de arquitetura do Laravel e no Eloquent ORM.
- Crie um banco de dados MySQL gerenciado e conecte seu aplicativo Back4app Containers a ele.
PERGUNTAS FREQUENTES
O que é PHP?
PHP é uma linguagem de script gratuita e de uso geral bastante popular. Foi criada para a web, mas também pode ser usada para scripts do lado do servidor, comandos em linha de comando e aplicações desktop. Atualmente, o PHP alimenta cerca de 80% da web e é usado por muitos sites de alto tráfego, como Facebook, Wikipedia, Slack, entre outros.
Quais são as vantagens do PHP?
– Bom desempenho
– Multiplataforma
– Suporte a bancos de dados
– Ecossistema vibrante
– Fácil de aprender
Quais são as desvantagens do PHP?
– Ferramentas de depuração limitadas
– Tipagem fraca
– Falhas de segurança
– PHP puro está desatualizado
Como implantar um app PHP?
1. Codifique sua aplicação PHP.
2. Dockerize seu app e teste localmente.
3. Envie o código-fonte para o GitHub.
4. Crie uma conta no Back4app Containers.
5. Importe seu repositório do GitHub e clique em deploy!