Introdução
Laravel é um framework de aplicativo web que vem com um conjunto de ferramentas e recursos integrados para desenvolver aplicações PHP modernas. Ele é conhecido por sua confiabilidade, desempenho, eficiência, modularidade e segurança. Devido aos seus diversos recursos integrados, o Laravel teve um crescimento incrível em sua popularidade. Muitos desenvolvedores estão adotando o Laravel para otimizar o processo de desenvolvimento web.
Este guia demonstrará como instalar e configurar uma nova aplicação Laravel no Ubuntu 20.04.
Laravel no Ubuntu
Usaremos o Composer, um gerenciador de dependências PHP, para baixar e gerenciar o Laravel. Para instalar o Composer, siga as instruções deste tutorial. O servidor Nginx servirá a aplicação. Ele estabelecerá uma aplicação Laravel de demonstração usando o banco de dados MySQL.
Este guia requer algumas pré-condições. Assumimos que você já tenha um servidor Ubuntu 20.04 devidamente configurado e em execução. Para referência, aqui está um guia rápido sobre configurar um servidor Ubuntu. Também é necessário ter a stack LEMP (Linux, Nginx, MySQL e PHP) instalada e configurada. Temos um guia detalhado sobre instalar e configurar a stack LEMP.
Como vamos instalar vários pacotes, isso requer permissão de root. No caso do Ubuntu, o usuário root está desabilitado por padrão. Portanto, precisamos de acesso a um usuário não-root com privilégio sudo. Aqui está como conceder permissão sudo a outros usuários.
Passo 1 – Instalando Módulos PHP
Antes de instalar o Laravel, precisamos de alguns módulos PHP importantes para o framework. Esses módulos estão disponíveis diretamente nos repositórios de pacotes padrão do Ubuntu. Esses módulos suportam recursos como codificação de caracteres, XML e matemática de precisão.
Primeiro, atualize o cache do APT e instale os pacotes:
|
1 2 |
$ sudo apt update $ sudo apt install php-mbstring php-xml php-bcmath |
Passo 2 – Criando um Banco de Dados para a Aplicação
Para demonstrar a funcionalidade do Laravel, faremos uma aplicação de lista de viagens que mostra a lista de lugares que o usuário gostaria de visitar e uma lista de lugares que já foram visitados. Podemos armazenar esses dados em uma tabela place com os campos name (nome do local) e visited (marcando como visited ou nonvisited). Um campo adicional apresentará uma identidade única para cada entrada. Para conectar os dados com nossa aplicação Laravel, criaremos um usuário MySQL dedicado e concederemos a esse usuário permissão total sobre o banco de dados travellist.
A biblioteca PHP nativa do MySQL mysqlnd não suporta mais caching_sha2_authentication. Assim, precisamos configurar nosso banco de dados com o método de autenticação mysql_native_password. Acesse o shell do MySQL como root:
|
1 |
$ sudo mysql |
Em seguida, crie um novo banco de dados chamado travellist:
|
1 |
> CREATE DATABASE travellist; |
Depois disso, crie um usuário dedicado travellist_user com uma senha adequada:
|
1 |
> CREATE USER 'travellist_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
Dê ao usuário travellist_user permissão total sobre o banco de dados travellist. Isso também impedirá o usuário de criar e modificar qualquer outro banco de dados no servidor:
|
1 |
> GRANT ALL ON travellist.* TO 'travellist_user'@'%'; |
Saia do shell do MySQL:
|
1 |
> exit |
Vamos testar o novo usuário. O comando a seguir fará login no shell do MySQL como o usuário travellist_user. A flag -p solicitará a senha do usuário:
|
1 |
$ mysql -u travellist_user -p |
Imprima todos os bancos de dados disponíveis. Conforme configurado anteriormente, deve mostrar apenas travellist e information_schema apenas:
|
1 |
> SHOW DATABASES; |
Em seguida, precisamos criar a tabela de dados places. Execute a seguinte instrução MySQL:
|
1 2 3 4 5 6 |
> CREATE TABLE travellist.places ( id INT AUTO_INCREMENT, name VARCHAR(255), visited BOOLEAN, PRIMARY KEY(id) ); |
Vamos popular a tabela com alguns dados de exemplo:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
> INSERT INTO travellist.places (name, visited) VALUES ("Tokyo", false), ("Delhi", true), ("Shanghai", false), ("Moscow", true), ("Lisbon", true), ("Denver", false), ("Berlin", false), ("Istanbul", false), ("Rio", true), ("Beijing", false), ("Helsinki", false); |
Vamos ver se os dados foram armazenados com sucesso no banco de dados:
|
1 |
> SELECT * FROM travellist.places; |
Como podemos ver, a tabela de teste está populada com dados válidos. Agora podemos sair do shell do MySQL:
|
1 |
> exit |
Step 3 – Criando um Novo App Laravel
Agora estamos prontos para criar uma nova aplicação Laravel usando o Composer. Usaremos travellist como uma aplicação de demonstração. Esta aplicação exibirá a lista de locais do banco de dados MySQL, demonstrando a configuração básica do Laravel. Vá para o diretório home do usuário:
|
1 |
$ cd ~ |
O próximo passo é criar uma nova aplicação Laravel usando o Composer. Ele criará um diretório dedicado travellist com uma aplicação Laravel básica com as configurações padrão. Execute o seguinte comando:
|
1 |
$ composer create-project --prefer-dist laravel/laravel travellist |
Assim que o app estiver estabelecido, podemos verificar se todos os componentes foram instalados com sucesso:
|
1 2 |
$ cd travellist $ php artisan |
A saída verifica se todos os arquivos da aplicação estão no lugar. Ela também garante que todas as ferramentas de linha de comando do Laravel estão funcionais. No entanto, ainda é necessária a configuração do app para configurar o banco de dados e alguns ajustes extras.
Step 4 – Configuração do Laravel
Todos os arquivos de configuração do Laravel são armazenados dentro de um diretório chamado config dentro do diretório raiz do app. Além disso, ao instalar o Laravel com o Composer, ele também cria um arquivo de ambiente. Ele contém várias configurações específicas para o ambiente atual. Os valores declarados nele terão precedência sobre os valores definidos nos arquivos de configuração regulares em config.
Cada instalação única exigirá seu próprio arquivo de ambiente para definir valores como configurações de conexão de banco de dados, URL do app, opções de depuração, etc. Observe que o arquivo de ambiente contém informações confidenciais, como credenciais de banco de dados, chaves de segurança, etc. É por isso que é altamente recomendável nunca compartilhar este arquivo publicamente.
Abra o arquivo de ambiente com um editor de texto:
|
1 |
$ nano .env |
Aqui está um código de ambiente de exemplo:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
APP_NAME=TravelList APP_ENV=development APP_KEY=<unique_app_key> APP_DEBUG=true APP_URL=http://<domain_or_ip> LOG_CHANNEL=stack DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=travellist DB_USERNAME=travellist_user DB_PASSWORD=password123 |
Vamos detalhar os valores:
APP_NAME: Este campo descreve o nome da aplicação. Este nome será usado para notificações e mensagens.APP_ENV: O ambiente atual da aplicação.APP_KEY: Esta chave é gerada automaticamente ao instalar o Laravel através do Composer. Ela é usada para gerar salts e hashes. Não há necessidade de alterá-la.APP_DEBUG: Alternância do modo de depuração. Quando ativado, mostrará informações de depuração no lado do cliente.APP_URL: URL base do app. Também é usada para gerar links da aplicação.DB_DATABASE: O nome do banco de dados. Neste caso, será o banco de dados dedicado que criamos.DB_USERNAME: O nome de usuário para se conectar ao banco de dados.DB_PASSWORD: A senha para se conectar ao banco de dados.
Assim que as alterações forem feitas, salve o arquivo e feche o editor.
Step 5 – Configurando o Nginx
Instalamos o Laravel com sucesso em uma pasta local do diretório home do usuário. Esta configuração funciona bem para o ambiente de desenvolvimento local. No entanto, não é recomendado implementá-la para servidores web que estão abertos para a internet pública.
Nosso próximo passo é mover a aplicação para /var/www pois é o local usual para aplicações web rodando no Nginx. Use o comando mv para mover travellist para /var/www/travellist:
|
1 |
$ sudo mv ~/travellist /var/www/travellist |
Em seguida, atribua ao usuário acesso de gravação para as pastas storage e cache. Estes são os locais dos arquivos gerados pela aplicação Laravel:
|
1 2 |
$ sudo chown -R www-data.www-data /var/www/travellist/storage $ sudo chown -R www-data.www-data /var/www/travellist/bootstrap/cache |
Os arquivos da aplicação agora estão no lugar. No entanto, precisamos dizer ao Nginx para servir o conteúdo. Crie um novo arquivo de configuração de host virtual:
|
1 |
$ sudo nano /etc/nginx/sites-available/travellist |
Aqui está um exemplo de configurações recomendadas para uma aplicação Laravel rodando no Nginx:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
server { listen 80; server_name <domain_or_ip>; root /var/www/travellist/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header X-Content-Type-Options "nosniff"; index index.html index.htm index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } } |
Hora de ativar o novo arquivo de configuração do host virtual. Crie um link simbólico para o diretório sites-enabled:
|
1 |
$ sudo ln -s /etc/nginx/sites-available/travellist /etc/nginx/sites-enabled/ |
O seguinte comando do Nginx testará os arquivos de configuração em busca de erros de sintaxe:
|
1 |
$ sudo nginx -t |
Em seguida, recarregue o Nginx:
|
1 |
$ sudo systemctl reload nginx |
A aplicação agora deve estar disponível usando o nome de domínio ou endereço IP (conforme definido pela diretiva server_name):
Passo 6 – Personalizando a Página Principal
Com a aplicação Laravel configurada, agora podemos começar a trabalhar nela. Para demonstração, é hora de criarmos uma página de exemplo exibindo os dados de amostra da tabela do banco de dados places. Primeiro, abra o arquivo de rotas principal em um editor de texto:
|
1 |
$ nano routes/web.php |
O arquivo conterá algum conteúdo por padrão. Aqui, as rotas são definidas usando o método estático (Route::get). Ele recebe um path e uma função de callback como argumentos.
Substitua o código pelo seguinte:
|
1 2 3 4 5 6 7 |
<?php use Illuminate\Support\Facades\DB; Route::get('/', function () { $visited = DB::select('select * from places where visited = ?', [1]); $togo = DB::select('select * from places where visited = ?', [0]); return view('travellist', ['visited' => $visited, 'togo' => $togo ] ); }); |
Salve o arquivo e feche o editor. Em seguida, criaremos o layout para renderizar os resultados da consulta do banco de dados para o usuário. Crie um novo arquivo dentro de resource/views:
|
1 |
$ nano resources/views/travellist.blade.php |
No código a seguir, criamos duas listas de lugares dependendo do valor de visited e togo:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<html> <head> <title>Lista de Viagem</title> </head> <body> <h1>Minha Lista de Desejos de Viagem</h1> <h2>Lugares para visitar</h2> <ul> @foreach ($togo as $newplace) <li>{{ $newplace->name }}</li> @endforeach </ul> <h2>Já visitados</h2> <ul> @foreach ($visited as $place) <li>{{ $place->name }}</li> @endforeach </ul> </body> </html> |
Salve o arquivo e feche o editor. Agora, acesse a página do aplicativo web novamente:
Voilà! Agora temos uma aplicação Laravel funcional usando o banco de dados MySQL para os conteúdos.
Considerações Finais
Neste tutorial, demonstramos como configurar uma aplicação Laravel sobre a pilha LEMP em execução no servidor Ubuntu 20.04. Também mostramos como personalizar a rota padrão para consultar o conteúdo do banco de dados e exibir os resultados em uma visualização personalizada. Para mais informações sobre o Laravel, consulte a documentação oficial sobre views, rotas, e suporte a banco de dados.
A instalação deste tutorial é realizada em uma máquina virtual independente. No entanto, você também pode implantar o Laravel em pilhas LEMP no Docker.
Boa computação!









Comentários
Nenhum comentário ainda. Seja o primeiro.