Como implantar um aplicativo PHP?

Capa PHP do Back4app

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.

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:

  1. Infraestrutura como serviço (IaaS),
  2. Plataforma como serviço (PaaS),
  3. 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?

Logotipo do 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.

Página de índice 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:

  1. O docker build é usado para criar a imagem.
  2. -t laravel-sample:1.0 marca a imagem (os nomes das imagens geralmente têm a estrutura name:version ).
  3. . 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:

  1. O docker run é usado para ativar um contêiner.
  2. -p 80:80 vincula a porta 80 do host à 80 do contêiner.
  3. --name laravel-sample-container especifica o nome do contêiner.
  4. -d executa a imagem no modo desanexado, ou seja, sem ocupar o terminal.
  5. 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:

Criar repositório no GitHub

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:

Caixa de diálogo Criar repositório do GitHub

Depois que o repositório for criado, pegue a URL remota:

URL remota do GitHub

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:

Back4app Criar aplicativo

Selecione “Containers as a Service” (Contêineres como serviço), pois estamos implantando um aplicativo em contêiner:

Back4app Criar tipo de aplicativo

Em seguida, conecte seu GitHub à sua conta do Back4app e importe o repositório que criamos na etapa anterior.

Repositório de importação de contêineres do Back4app

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.

Implantação bem-sucedida de contêineres do Back4app

É 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

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!


Leave a reply

Your email address will not be published.