CURSO RENDA EXTRA COM PHP + CODEIGNITER 4 #02 - PLATAFORMA EAD - INSTALE NGINX, PHP8.1, MYSQL - PILHA LEMP
Olá, Saraiva aqui!
Nesta segunda aula do Curso de Renda extra com PHP + CodeIgniter vamos começar a preparar nosso ambiente de desenvolvimento.
Vamos instalar o servidor NGINX, o PHP8.1 e o MYSQL para gerir bancos de dados. Usaremos a (pilha LEMP).
A pilha LEMP é um grupo de software que pode ser usado para servir páginas e aplicativos Web. LEMP é um acrônimo que descreve o Sistema Operacional Linux, com um servidor Web Nginx (se pronuncia "Engine-X). Os dados backend são armazenados no banco de dados MySQL e o processamento dinâmico é tratado pelo PHP.
PASSO 1 - (SOMENTE PARA SERVIDORES REAIS EM PRODUÇÃO) CRIAR NOVO USUÁRIO - SE VOCÊ ESTIVER CONFIGURANDO UM SERVIDOR LOCAL, PULE PARA O PASSO 2
Vamos criar um novo usuário não root em nosso sistema para usarmos durante o desenvolvimento. Não é um passo obrigatório porém recomendado. Com isso teremos menos chance de causar danos no sistema com comandos indevidos ou de forma acidental.
Abra o terminal em seu Ubuntu. Na barra lateral, no canto inferior esquerdo tem um icone com alguns quadradinhos, clique nele. Nas opções que o sistema apresentar localize o Terminal, abra-o. Uma vez aberto, na barra lateral esquerda, no icone do terminal clique com o botão direito do mouse e selecione a opção "Fixar como favorito" isso manterá o atalho do terminal na barra lateral e será útil para uso futuro.
Para criar um novo usuário no Ubuntu 22.4 segia esta sequência de códigos abaixo. LEMBRE-Se DE TROCAR O NOME DO USUÁRIO (belmitec) PARA O NOME QUE VOCÊ PRETENDE USAR EM SEU SISTEMA:
Importante: Serão feitas algumas perguntas, começando com a senha da conta.
Digite uma senha forte e, opcionalmente, preencha qualquer uma das informações adicionais, se desejar. Isso não é necessário e você pode simplesmente clicar ENTER
em qualquer campo que deseja pular.
$ adduser belmitec
Agora você tem uma nova conta de usuário com privilégios regulares. Às vezes, porém, você precisará realizar tarefas administrativas, como gerenciar servidores, editar arquivos de configuração ou reiniciar um servidor.
Para evitar ter que sair de seu usuário regular e fazer login novamente como a conta root , você pode configurar o que é conhecido como “superusuário” ou privilégios de root para sua conta normal. Isso permitirá que seu usuário regular execute comandos com privilégios administrativos prefixando cada comando com a palavra sudo
.
Para adicionar esses privilégios ao seu novo usuário, você precisa adicionar o novo usuário ao grupo sudo. O comando a seguir modificará as configurações padrão do usuário, incluindo o grupo sudo na lista de grupos aos quais um usuário já pertence.
Fique atendo ao argumento -a
, que significa append . Sem essa opção, os grupos atuais aos quais um usuário está vinculado seriam substituídos por sudo
, o que causaria consequências inesperadas. O argumento -G
diz ao sistema (usermod)
para alterar as configurações de grupo de um usuário.
Execute este comando para adicionar seu novo usuário ao grupo sudo (substitua a palavra belmitec pelo seu novo usuário):
$ usermod -aG sudo belmitec
O novo usuário do sistema agora está configurado.
PASSO 2 - CONFIGURAÇÕES NECESSÁRIAS E RECOMENDADAS
Como temos uma instalação nova do Ubuntu, é sempre bom garantir que o sistema irá funcionar sem erros. Para isso, usaremos alguns comandos para nos assegurar de que tudo estará atualizado e pronto para receber nossa instalação da pilha LEMP para o nosso desenvolvimento.
Use os comandos a seguir, um de cada vez para atualizar e configurar seu Ubuntu recem instalado:
// Comando 1
sudo apt clean
...
// Comando 2
sudo apt install -f
...
// Comando 3
sudo dpkg --configure -a
...
// Comando 4
sudo apt-get update
...
// Comando 5
sudo apt-get upgrade
Após rodar os comando acima, recomendo que você reinicie sua máquina virtual. Após isso, estamos prontos para prosseguir.
PASSO 3 - COMO INSTALAR O SERVIDOR NGINX - (Lê-se Engine-X)
Como essa é a primeira vez que vamos usar o apt
para esta sessão, atualize o índice de pacotes do seu servidor. Em seguida, instale o servidor:
sudo apt update
sudo apt install nginx
No Ubuntu 22.04, o Nginx está configurado para começar a executar após a instalação.
Em alguns casos, ao construirmos uma aplicação web, preisamos nos assegurar de que tal aplicação vai funcionar 100% com navegação segura usando criptografia de certificados SSL. Neste cusro vamos desenvolver uma plataforma ead, isso significa que vamos usar dados reais de pessoas reais quando nossa aplicação estiver pronta, portanto precisamos ter a certeza de que nossa aplicação está pronta para a tecnologia SSL e desde já, estaremos pensando em um dos requisitos da LGPD - Lei Geral de Proteção de Dados em vigor no Brasil.
Vou citar aqui 2 caminhos para conseguirmos certificados SSL grátis:
Let’s Encrypt: Resumindo, para uso em produção, quando sua aplicação for de fato ser usada, por exemplo em um servidor na nuvem como Digital Ocean, AWS e outros. Em casos de hspedagem compartilhada, o próprio provedor da hospedagem (alguns no Brasil) geralmente já oferece o serviço de SSL grátis.
OpenSSL: Resumindo, pode ser usado em ambiente de desenvolvimento, que é o nosso caso neste momento. Por isso, vamos instalar o OpenSSL. Porém, iremos fazer isso em uma aula mais adiante.
Apenas já insiro essa informação aqui para seu conhecimento.
Vamos adiante!
Com o NGINX já instalado, vamos testá-lo:
Digite em seu navegador o seguinte endereço:
http://localhost
Se você ver a página acima, você instalou o Nginx com sucesso.
WSL
Para usuários do WSL, sugiro estas configurações abaixo, porque geralmente a porta 80 pode estar em uso pelo windows fazendo com que o Nginx não inicie corretamente. Neste caso, faça estas alterações.
Abra o arquivo de confiuração padrão do Nginx com o comando abaixo:
sudo nano /etc/nginx/sites-enabled/default
Agora, faça estas alterações, alterando a porta onde o Nginx deve ser executado:
server {
#listen 80 default_server; // Comente esta linha com um #
#listen [::]:80 default_server; // Comente esta linha com um #
// Copie as linhas acima e cole abaixo alterando a porta conforme exemplo:
listen 4567 default_server;
listen [::]:4567 default_server;
....
Para Iniciar o Nginx use o comando abaixo:
sudo service nginx start --port=4567
Agora visite o link a seguir no seu navegador do Windows:
Você deve ver a mesma tela acima, indicando que o Nginx fucniona corretamente.
PASSO 4 - COMO INSTALAR O MYSQL PARA GERENCIAR BANCO DE DADOS
O MySQL será necessário para gerenciar os bancos de dados em nosso servidor local.
Instale o MySQL com o comando abaixo:
sudo apt install mysql-server
O software de banco de dados MySQL agora está instalado, mas sua configuração ainda não está completa.
Para proteger a instalação, o MySQL vem com um script que irá perguntar se queremos modificar alguns padrões não seguros. Isso é ideal para uso em servidores em produção. Mas para já manter isso em mento, você pode fazer o mesmo em seu servidor local. Contudo, não é necessário.
Inicie o script digitando e aperte Enter em seguida:
sudo mysql_secure_installation
Este script irá perguntar se você deseja configurar o VALIDATE PASSWORD PLUGIN
.
Aviso: Ativar esta função é uma decisão sua. Se a senhas que você criar futuramente não forem fortes o suficiente para serem aceitas pelo MySQL, ele reportará como um erro. Isso causará problemas caso utilize uma senha fraca em conjunto com o software phpMyAdmin que gerencia automaticamente credenciais de usuário do MySQL.
Responda Y
para sim, ou qualquer outra tecla para continuar sem habilitar.
Apenas amostra de código:
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:R
Em seguida, será solicitado que envie e confirme uma senha root:
Apenas amostra de código:
Please set the password for root here.
New password:
Re-enter new password:
Para o resto das perguntas, pressione Y
e clique na tecla ENTER
em cada prompt. Isso remove alguns usuários anônimos e os logins remotos, desativará os logins remotos ao root, e carregará essas informações no MySQL.
PARA SERVIDORES LOCAIS SIGA A PARTIR DAQUI:
Observe que os sistemas Ubuntu rodam o MySQL 5.7, porém, em versões posteriores o usuário root do MySQL está definido para autenticar usando o plug-in padrão do auth_socket
ao invés de senha. Isso traz maior usabilidade na maioria dos casos, mas também pode complicar as coisas quando necessário para a segurança permitir que um programa externo, por exemplo, o phpMyAdmin (que usaremos) acesse o usuário.
Se você quiser usar o plug-in auth_socket
para acessar o MySQL, vá para o Passo 4. Se, no entanto, preferir usar uma senha ao conectar ao MySQL como root, (que será o case de uso neste curso) vai ser necessário alterar o método de autenticação de auth_socket
para o mysql_native_password
. Para fazer isso, abra o prompt do MySQL no seu terminal desgta forma:
sudo mysql
Em seguida, use os serviços de autenticação de usuário do seu MySQL com o seguinte:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
Na saída acima, é possível ver que o usuário root autenticou usando o plug-in auth_socket
.
Para configurar a conta root para autenticar com uma senha, execute o comando ALTER USER
. Certifique-se de trocar a palavra senha
por uma senha forte de sua escolha:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'senha';
Agora é necessário executar o comando FLUSH PRIVILEGES que diz ao servidor para recarregar as permissões e colocar as alterações feitas em vigor. Faça isso com o comando abaixo:
FLUSH PRIVILEGES;
Verifique novamente os métodos de autenticação utilizados por cada um dos usuários para confirmar que ***root *** já não autentica usando o plug-in do auth_socket
:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Saída:
Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
No código de saída acima, é possível ver no resultado que agora o usuário root autentica usando uma senha. Assim que confirmar isso no seu servidor, saia do shell MySQL com o comando abaixo:
exit
Nota: Após configurar seu usuário root para autenticar com uma senha, você já não poderá acessar o MySQL com o comando sudo mysql
usado anteriormente. Ao invés disso, execute o seguinte:
sudo mysql -u root -p
Após digitar a senha que acabou de definir acima, você verá o prompt do MySQL.
Neste ponto, seu sistema de banco de dados está configurado e você pode seguir adiante para a instalação do PHP.
PASSO 5 - COMO INSTALAR O PHP COM NGINX
Agora você tem o Nginx e o MySQL instalado para servir suas páginas e gerenciar seus dados. No entanto, você ainda não tem nada instalado que possa gerar conteúdo. Aqui é onde o PHP entra em jogo.
Uma vez que o Nginx não contém o processamento nativo do PHP como outros servidores Web, fizemos a instalação do php-fpm
, que significa “gerenciador de processos fastCGI”. Agora, diremos ao Nginx para passar os pedidos em PHP para este software para processamento.
Nota: É interessante adicionar o repositório do Ubuntu universe
antes de iniciar a instalação. Isto incluiu a instalação do pacote php-fpm
que é de código aberto. Faça isso digitando o seguinte comando:
sudo add-apt-repository universe
Agora instale o módulo php-fpm
junto com um pacote auxiliar adicional, php-mysql
, que permite que o PHP se comunique com seu back end do banco de dados. A instalação irá processar os principais arquivos e o PHP. No meu caso, vou instalar uma versão específica do PHP, a versão 8.1, aconselho que faças o mesmo, mas você pode ficar a vontade. Se você digitar apenas php-fpm o sistema irá instalar a versão estável mais recente.
Faça isso digitando o comando abaixo:
sudo apt install php8.1-fpm php-mysql
ou
sudo apt-get install php8.1-cli php8.1-fpm php8.1-curl php8.1-gd php8.1-mysql php8.1-mbstring zip unzip
Para verificar a versão do php recem instalado use o comando abaixo:
sudo php -v
Finalmente, agora você tem uma pilha LEMP totalmente configurada e funcionando no seu servidor Ubuntu.
Pensei ser útil para você, deixar alguns códigos usados com frequencia ao usar a pilha LEMP. Códigos de inicialização ou reinicialização dos serviços que acabamos de instalar.
Códigos útteis:
sudo systemctl start nginx // Inicia o Nginx
sudo systemctl reload nginx // Recarrega o Nginx
sudo systemctl restart nginx // Reinicia o Nginx
sudo systemctl stop nginx // Para a execução do Nginx
sudo systemctl status nginx // Apresenta o estado atual do servidor, se ativo ou não
Conclusão
Uma pilha LEMP é uma plataforma poderosa que permite que você configure e desenvolva qualquer site ou aplicativo do seu servidor. Você pode usar com inúmeras linguagens de programação.
Agora temos um servidor funcional para seguir com nossa jornada DEV. Uma ótima notícia, é que, diferente de programas que usam o servidor apache, não temos que ficar abrindo e iniciando o servidor sempre que formos precisar dele. Basta iniciar o Ubuntu e nosso servidor já estará pronto pra uso a qualquer momento. Isso também me faz amar essa combinação de softwares. Uma vez que só usaremos essa máquina virtual para criar nossos projetos web, isso é perfeito.
Obrigado pr sua paciência, bons estudos!
Vamos adiante!
Artigos relacionados
-
CURSO RENDA EXTRA COM PHP + CODEIGNITER 4 #01 - PLATAFORMA EAD - UBUNTU 22.4 & VIRTUALBOX
Apresentação + Instalação do Ubuntu 22.4 no VirtualBox. Olá, Saraiva aqui!Nesta aula vamos iniciar a preparação do... -
CURSO RENDA EXTRA COM PHP + CODEIGNITER 4 #04 - CRIE UMA PLATAFORMA EAD - INSTALANDO O PHPMYADMIN COM NGINX
Olá, Saraiva aqui!Chegamos na aula #04 do nosso curso de Renda Extra com PHP + CodeIgniter para criarmos uma plataforma ead e vender a clientes. ... -
CURSO RENDA EXTRA COM PHP + CODEIGNITER 4 #03 - CRIE UMA PLATAFORMA EAD - DOMÍNIOS LOCAIS COM NGINX + OPENSSL
Olá, Saraiva aqui!Para avançar com o nosso ambiente de desenvolvimento, vamos entender como criar vários domínios locais usando o ...
Você achou esse artigo útil?