Servidor WEB NGINX + PHP 8.2 + PostgreSQL +Let’s Encrypt Debian 12 Bookworm

Neste tutorial vamos configurar um servidor web com NGINX (lê-se “engine x”), o concorrente do Apache. NGINX é um servidor web (HTTP e IMAP/POP3/Proxy) rápido, leve e com inúmeras possibilidades de configuração para melhor performance. O Apache, sem dúvidas, é o servidor web mais popular. No entanto, o NGINX a cada ano ganha mais popularidade e está sendo a preferência dos novos projetos. Também estarei instalando o banco de dados PostgreSQL e phpPgAdmin como gerenciador web.

Distribuição utilizada: Debian 12 Bookworm / Instalação Limpa

NGINX 1.22

https://www.nginx.com
Vamos instalar-lo e remover a assinatura para que não vejam a versão do mesmo (Boas praticas)

1 # apt install nginx
2 # sed -i 's/# server_tokens/server_tokens/' /etc/nginx/nginx.conf
3 # systemctl restart nginx
Copiar

Acesse agora em seu navegador http://IP-SERVIDOR/

Pronto nosso NGINX está rodando!

PostgreSQL

1 # apt install postgresql postgresql-contrib
Copiar

Torne-se o usuário postgres, para poder criar o banco de dados.

1 # su - postgres
Copiar

Execute para entrar no terminal de comandos do banco.

1 $ psql
Copiar

Para definir a senha do usuário postgres e instalar o adminpack.

1 postgres=# \password postgres
2 Digite nova senha para postgres: 
3 Digite-a novamente:
4 postgres=# CREATE EXTENSION adminpack;
5 CREATE EXTENSION
6 postgres=# \q 
7 $ exit
Copiar

Ajustes no pg_hba.conf, assim toda alteração será necessaria validação do postgres com a senha que acabou de definir.

1 # vim /etc/postgresql/15/main/pg_hba.conf
Copiar

Altere as seguintes linhas:

1 local   all             postgres                                peer
2 local   all             all                                     peer
Copiar

Para:

1 local   all             postgres                                md5
2 local   all             all                                     md5
Copiar


Reinicie o postgres

1 # systemctl restart postgresql
Copiar

Volte para o postgres

1 # su - postgres
Copiar

Agora para toda ação será necessário autenticar.

1 $ psql 
2 Senha para usuário postgres: !!SUA_SENHA!!
3 psql (15.3 (Debian 15.3-0+deb12u1))
4 Type "help" for help.
5 postgres-# \q
Copiar

Para demonstração irei criar um banco/usuário teste, não esqueça de alterar a senha.

1 $ createuser --pwprompt teste
2 Digite a senha para a nova role: << NOVA SENHA PARA O USUÁRIO TESTE
3 Digite-a novamente: << REPITA
4 Senha: << SENHA DO QUE SETOU ANTES  NO COMANDO "\password postgres"
Copiar

Agora crie o banco e vincule ao usuário.

1 $ createdb -O teste meubd
2 Senha: <<< SENHA DO POSTGRES 
Copiar

Verifique se o mesmo foi criado.

1 $ psql -l 
2 Senha para usuário postgres: 
3                                Lista dos bancos de dados
4    Nome    |   Dono   | Codificação |   Collate   |    Ctype    | Privilégios de acesso 
5 -----------+----------+-------------+-------------+-------------+-----------------------
6  meubd     | teste    | UTF8        | pt_BR.UTF-8 | pt_BR.UTF-8 | 
7 ....
8 ....
Copiar

Acessamos agora o bd teste.

1 $ psql -U teste -d meubd
2 Senha do usuário teste: 
3 psql (15.3 (Debian 15.3-0+deb12u1))
4 Digite "help" para ajuda.
5 
6 meubd=>
Copiar

Vamos fazer uma “brincadeira” só para testar, criaremos uma tabela e inseriremos dados nela.

1 meubd=> CREATE TABLE doacao ( id int,nome text, valor text );
2 meubd=> INSERT INTO doacao (id,nome,valor) values (1,'Rudimar Remontti','R$ 5,00'); 
3 meubd=> SELECT * FROM doacao;
4 
5  id |       nome       |  valor  
6 ----+------------------+---------
7   1 | Rudimar Remontti | R$ 5,00
8 
9 meubd=> \q
Copiar

Se deseja remover o banco/usuário teste.

1 $ dropdb meubd
2 Senha: << SENHA DO POSTGRES
3 $ dropuser teste
4 Senha: << SENHA DO POSTGRES
Copiar

Volte para root

1 $ exit
Copiar

PHP 8.2

Incluirei algumas extensões do PHP que são normalmente utilizada também na instalação.

1 #  apt install --no-install-recommends \
 php php-{fpm,cli,mysql,pear,gd,gmp,bcmath,mbstring,curl,xml,zip,json,pgsql}Copiar

Agora vamos fazer a “integração” do PHP com o NGINX. Moveremos o arquivo defaul.

1 # mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.original
Copiar

Crie um novo:

1 # vim /etc/nginx/sites-available/default
Copiar

Ajuste:

1 server {
2     listen 80;
3     listen [::]:80;
4 
5     root /var/www/html;
6     index index.php index.html index.htm;
7 
8     server_name _;
9 
10     location / {
11         try_files $uri $uri/ =404;
12     }
13 
14     location ~ \.php$ {
15         include snippets/fastcgi-php.conf;
16         fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
17     }
18 }
Copiar

Teste a configuração se não tem nada errado e restart os serviços:

1 # nginx -t
2 # systemctl restart nginx php8.2-fpm
Copiar

Vamos criar um arquivo em PHP para testa se nosso NGINX está interpretando o PHP.

1 # echo '<?php phpinfo();' >> /var/www/html/teste.php
Copiar

Acesse em seu navegador http://IP-SERVIDOR/teste.php

Servidor WEB com PHP está funcionando!

Exemplo para multiplos domínios/subdomínios

1 # vim /etc/nginx/sites-available/sub1.conf
Copiar

Neste ex: vou representar o sub1.remontti.com.br

1 server {
2     listen 80;
3     listen [::]:80;
4 
5     root /var/www/sub1;
6     index index.php index.html index.htm;
7 
8     add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
9 
10     server_name sub1.remontti.com.br;
11 
12     location / {
13         try_files $uri $uri/ =404;
14     }
15 
16     location ~ \.php$ {
17         include snippets/fastcgi-php.conf;
18         fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
19     }
20 }
Copiar
1 # vim /etc/nginx/sites-available/sub2e3.conf
Copiar

Neste ex: vou representar o sub2.remontti.com.br e sub3.remontti.com.br

1 server {
2     listen 80;
3     listen [::]:80;
4 
5     root /var/www/sub2e3;
6     index index.php index.html index.htm;
7 
8     server_name sub2.remontti.com.br sub3.remontti.com.br;
9 
10     add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
11 
12     location / {
13         try_files $uri $uri/ =404;
14     }
15 
16     location ~ \.php$ {
17         include snippets/fastcgi-php.conf;
18         fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
19     }
20 }
Copiar

Link os arquivos no diretório “/etc/nginx/sites-available” que será carregado as novas configurações

1 # ln -s /etc/nginx/sites-available/sub1.conf /etc/nginx/sites-enabled/
2 # ln -s /etc/nginx/sites-available/sub2e3.conf /etc/nginx/sites-enabled/
Copiar

Crie os diretórios referente a cada server_name.

1 # mkdir /var/www/sub1
2 # mkdir /var/www/sub2e3
3 # echo '<?php echo "Olá mundo do sub1!"; ?>' >> /var/www/sub1/index.php
4 # echo '<?php echo "Olá mundo do sub2e3!"; ?>' >> /var/www/sub2e3/index.php
Copiar

Verifique se não tem nenhum erro e reinicie o serviço:

1 # nginx -t
2 # systemctl restart nginx
Copiar

:: Let’s Encrypt ::

Criando certificado grátis para seus sub/domínios.

1 # apt install certbot python3-certbot-nginx
Copiar

Para gerar o certificado use o comando:

1 # certbot
Copiar

Não esqueça de colocar no seu cron para ele renovar o certificado, pois a cada 90 ele expira. Neste exemplo todo dia primeiro tento renovar.

1 # certbot -q renew
Copiar

Para testar acesse: https://www.cdn77.com/tls-test/

Gostou?

Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Related Posts

  • All Post
  • Documentos
  • Downloads
  • PROGRAMAÇÃO
  • Sem categoria
  • Tecnologia
  • VAGAS DEV
    •   Back
    • 6730
    • 6720
    •   Back
    • 7.0
    •   Back
    • Web
    • Mobile
    • GITHUB
    • Banco de Dados
    • Dicas
    • BackEnd
    • FrontEnd
    • MongoDB
    • Postgres
    • MySQL
    • SQL SERVER
    •   Back
    • Huawei
    • Cisco
    • 6730
    • 6720
    •   Back
    • Cisco
    • HUAWEI
    • NE40
    • NE8000
    •   Back
    • OLTS FTTH
    • Corporativos
    • Domésticos
    • RFC
    • FIBERHOME BRASIL
    • Roteador
    • Switch
    • Cisco
    • HUAWEI
    • NE40
    • NE8000
    • Huawei
    • Cisco
    • 6730
    • 6720
    •   Back
    • FIBERHOME BRASIL
    •   Back
    • Linux
    • Microsoft Windows
    •   Back
    • MongoDB
    • Postgres
    • MySQL
    • SQL SERVER
    •   Back
    • Sistemas
    • Monitoramento
    • Redes
    • Operacionais
    • Tutoriais
    • Linux
    • Microsoft Windows
    • ZABBIX
    • 7.0
    • OLTS FTTH
    • Corporativos
    • Domésticos
    • RFC
    • FIBERHOME BRASIL
    • Roteador
    • Switch
    • Cisco
    • HUAWEI
    • NE40
    • NE8000
    • Huawei
    • Cisco
    • 6730
    • 6720
    •   Back
    • NE40
    • NE8000
    •   Back
    • Operacionais
    • Tutoriais
    • Linux
    • Microsoft Windows
    •   Back
    • Roteador
    • Switch
    • Cisco
    • HUAWEI
    • NE40
    • NE8000
    • Huawei
    • Cisco
    • 6730
    • 6720
    •   Back
    • ZABBIX
    • 7.0

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Siga-nos

Recentes

No Posts Found!

Best Camping Shoes

Instagram

Categories

Edit Template

Receba novidades!

You have been successfully Subscribed! Ops! Something went wrong, please try again.

Posts

No Posts Found!

Eventos

No Posts Found!

© 2023 Created  LACASAWEB