Instalação do PostgreSQL, Apache2 e PHP8 no Debian Buster 10 e no Stretch 9

Instalação manual (em sua maioria) do PostgreSQL, Apache2 e PHP8 nos Debian Buster e Stretch.

[ Hits: 1.571 ]

Por: Buckminster em 23/09/2021


PHP



A instalação deste PHP foi configurada com algumas opções interessantes, como suporte à Dtrace, Pthreads etc. Ao final estão algumas explicações sobre algumas opções da configuração. Caso queira se aprofundar em cada uma delas, pesquise.

Pare o Apache:

# apache2 stop

Às vezes é preciso dar um refresh na página para verificar se o Apache parou mesmo, principalmente quando se está acessando em rede de uma máquina remota.

Instalando o PEAR:

# aptitude install php-pear

Instalando os pacotes necessários para a configuração de alguns módulos do PHP 8.

# aptitude install systemtap-sdt-dev
# aptitude install libicu-dev libmcrypt-dev
# aptitude install libpcre3 libpcre3-devpcre
# aptitude install libxml2 libxml2-dev libxslt1.1 libxslt1-dev
# aptitude install libjpeg62-turbo-dev libpng-dev
# aptitude install libonig-dev libzip-dev

A partir do PHP 7.4.0 a libsqlite precisa ser maior ou igual a versão 3.7.4. Anteriormente, a libsqlite empacotada poderia ser usada em seu lugar. Tanto o Stretch quanto o Buster com o apt-get ou o aptitude ou o apt baixam versões menores do que a 3.7.4 que, aliás, mudou de número segundo o site da SQlite.

A SQlite permite o uso do PHP PDO e vem habilitada por padrão no PHP8 e porque vamos habilitar o PHP PDO na instalação precisamos da SQlite ou então não se habilita o uso do PHP PDO e coloca-se nas configurações --without-sqlite3 (sem sqlite3).

# cd /usr/src/
# mkdir sqlite3 && cd sqlite3
# wget -c https://sqlite.org/2021/sqlite-autoconf-3360000.tar.gz -O sqlite.tar.gz
# tar xvfz sqlite.tar.gz
# cd sqlite-autoconf-*/
# ./configure
# make
# make install
# cd

Criando o diretório de instalação do PHP:

# mkdir /opt/php8

Estando dentro de /usr/src, faça o download da última versão do PHP 8:

# cd /usr/src
# wget -O php-8.0.9.tar.gz http://php.net/get/php-8.0.9.tar.gz/from/this/mirror
# tar -xzvf php-8.0.9.tar.gz
# cd php-8.0.9

Para ver as opções de configurações, se quiser:

# ./configure --help

Configurando:

# ./configure --prefix=/opt/php8 --exec-prefix=/opt/php8 --enable-mbstring --enable-ftp --enable-exif --enable-pcntl --enable-intl --enable-opcache --enable-pdo --enable-debug --enable-dtrace --enable-xml --enable-cgi --enable-cli --enable-shared --with-apxs2=/opt/apache2/bin/apxs --with-pgsql=/usr --with-pdo-pgsql=/usr --with-xsl=/usr --with-zlib-dir=/usr --with-external-pcre --with-jpeg --with-zip --with-pear=/usr

Deverá terminar sem nenhuma mensagem de erro antes de:

Thank you for using PHP.

Em caso de erro, execute make clean, analise a mensagem, corrija e repita o ./configure.

Caso seja necessário, exclua a pasta php-8.0.9 e descompacte o arquivo php-8.0.9.tar.gz de novo e repita a partir do ./configure.

Construindo:

# make

Aguarde terminar, demora uns minutos.

Build complete.
Don't forget to run 'make test'.


Testando:

# make test

Isso demora um pouco.

Dará PASS (em verde) e SKIP (em amarelo).

Caso der a mensagem de FAILED TEST SUMMARY ao final, ignore e siga em frente.

Terminará:

You can then email it to [email protected] later.
Do you want to send this report now? [Yns]: Y


E digite seu e-mail, ajudará os próximos.

Instalando:

# make install

Isso é rápido.

Habilitando Phar (PHP Archives):

# /usr/src/php-8.0.9/build/shtool install -c ext/phar/phar.phar /opt/php8/bin
# ln -s -f phar.phar /opt/php8/bin/phar

Em caso de erro evidente em alguma etapa, execute make clean estando dentro do diretório php-8.0.9, apague e recrie a pasta /opt/php8 e refaça a operação desde o ./configure.

Se futuramente decidir mudar as opções de seu ./configure depois da instalação do PHP, pare o Apache e somente repita os últimos 4 passos (./configure, make, make test e make install) e depois reinicie o Apache.

Copiando o php.ini:

# cp php.ini-development /opt/php8/php.ini

Qualquer alteração a partir de agora, faça no arquivo /opt/php8/php.ini e depois reinicie o Apache. Atente se for PHP para desenvolvimento ou produção, e copie o arquivo certo para teu caso (development ou production).

Vejamos o que diz o próprio PHP:

"O PHP vem com dois arquivos INI. Um é recomendado para ser usado em ambientes de produção e outro é recomendado para ser utilizado em ambientes de desenvolvimento.
  • php.ini-production - contém configurações que possuem segurança, desempenho e melhores práticas em seu núcleo. Mas lembre-se, estas definições podem quebrar algumas compatibilidades com aplicativos de segurança mais antigos. Nós recomendamos usar o arquivo production.ini em ambientes de produção e teste.
  • php.ini-development - é muito semelhante ao arquivo de produção, exceto que ele é muito mais detalhado quando se trata de erros. Recomendamos o uso da versão de desenvolvimento apenas em ambientes de desenvolvimento. Erros mostrados para os usuários podem, inadvertidamente, vazar informações vitais."

E adicione/mude no /opt/apache2/conf/httpd.conf (vim /opt/apache2/conf/httpd.conf) do Apache 2 nas seguintes posições, linha ~53:

#Listen 12.34.56.78:80
# Listen 80  <<< comente esta linha se não estiver comentada.
Listen 127.0.0.1:80 #Ou coloque o IP do teu servidor, mas sempre coloque um IP nesta opção.

Aqui, linha ~281:

<IfModule dir_module>     DirectoryIndex index index.html index.php main.php </IfModule>

Verifique se as linhas ~522 (Include conf/extra/proxy-html.conf), ~518 (Include conf/extra/httpd-default.conf) estão descomentadas, se não estiverem, descomente. E coloque no final do arquivo, linha ~535:

Nesta linha abaixo acrescente as extensões que quiser para que o Apache as reconheça.

# Extensões do Apache
AddType application/x-httpd-php  .php .htm  .html  .phtml  .asp
AddType application/x-httpd-php-source .phps
AddType PHPIniDir "/opt/php8"
#
# Parâmetros do fcgid
FcgidMaxProcesses 50
FcgidFixPathinfo 1
FcgidProcessLifeTime 0
FcgidTimeScore 3
FcgidZombieScanInterval 20
FcgidMaxRequestsPerProcess 0
FcgidMaxRequestLen 33554432
FcgidIOTimeout 120
#
#AddHandler fcgid-script .php
#Essa opção se descomentada provoca o aviso "Forbidden You don't have permission to access /index.php on this server.", mas permite o acesso ao localhost através do index.html. Com essa opção descomentada tu podes configurar depois no httpd.conf o acesso para somente as pastas as quais você quer que sejam acessadas.

#Options +ExecCGI
#FCGIWrapper /opt/apache2/cgi-bin/php8  .php

Ou coloque somente nos vhost que você quer habilitar o fcgid no Apache2 em substituição às 3 últimas linhas acima:

Options Indexes ExecCGI
AddHandler fcgid-script .php
FCGIWrapper /opt/apache2/cgi-bin .php

Testando a instalação:

# cd /opt/apache2/htdocs
# vim index.php

Coloque dentro o seguinte conteúdo:

<?php
phpinfo();
?&gt

Salve e saia do arquivo.

Inicie o Apache:

# apache2 start

Abra o navegador e digite na URL: localhost/index.php

Deverá aparecer a página com as configurações do PHP: PHP Version 8.0.9.

Mais abaixo procure por pdo_pgsql, pgsql e verifique se o PostgreSQL 13.3 foi devidamente reconhecido. Nesta página, tu podes também verificar se todos os módulos e funções utilizadas no ./configure estão corretamente identificados.

Vamos criar um link simbólico para cada vez que digitar php -v ou php --version apareça a versão:

# ln -s /opt/php8/bin/php /usr/bin/php

Teste:

# php -v

E então, deverá aparecer os dados do PHP 8.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. POSTGRESQL
   3. APACHE
   4. PHP
   5. Conclusão
Outros artigos deste autor

Instalação do PAP (PostgreSL, Apache2 e PHP7) no Debian Jessie

Manual do IPtables - Comentários e sugestões de regras

Como um monte de letras de um código fonte transforma-se em voltagens?

Compilando o Squid3

O Kernel Linux

Leitura recomendada

Agendando tarefas em Linux/Unix usando o cron

Instalando o driver da NVidia no Fedora Core 2 sem compilar o kernel

Yum no Red Hat 4

Iniciando no Linux com o Ubuntu Gutsy

Configurando o kernel 2.6.8.1-smp para Pentium IV Hyper-Threading (P4-HT)

  
Comentários
[1] Comentário enviado por danniel-lara em 24/09/2021 - 20:35h


Show , muito bom parabéns

[2] Comentário enviado por Buckminster em 24/09/2021 - 22:09h


[1] Comentário enviado por danniel-lara em 24/09/2021 - 20:35h


Show , muito bom parabéns



Obrigado, Daniel.

[3] Comentário enviado por mauricio123 em 02/10/2021 - 10:26h


Show, ótimo artigo.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts