Instalando o Lighttpd com PHP5 (PHP-FPM) e MySQL no Debian 8 (Jessie)
Este tutorial existe para estas versões do sistema operacional
- Debian 4 (Etch)
Nesta página
- 1 Nota Preliminar
- 2 Instalando o MySQL/MariaDB
- 2.1 Instalar o MariaDB
- 2.2 Instalar o MySQL
O Lighttpd é um servidor da Web seguro, rápido e compatível com os padrões, projetado para ambientes de velocidade crítica. Este tutorial mostra como você pode instalar o Lighttpd em um servidor Debian 8 (Jessie) com suporte a PHP5 (através de PHP-FPM) e suporte a MySQL. PHP-FPM (FastCGI Process Manager) é uma implementação PHP FastCGI alternativa com alguns recursos adicionais úteis para sites de qualquer tamanho, especialmente sites mais movimentados. Eu uso PHP-FPM neste tutorial em vez de Lighttpds spawn-fcgi.
1 Nota Preliminar
Neste tutorial, uso o nome de host server1.example.com com o endereço IP 192.168.1.100. Essas configurações podem diferir para você, portanto, você deve substituí-las quando apropriado. Use um servidor mínimo Debian como base para esta instalação, que pode ser uma imagem mínima do seu datacenter ou você instala uma do zero usando nosso tutorial de servidor mínimo Debian.
2 Instalando o MySQL/MariaDB
O Debian 8 vem com 2 bancos de dados compatíveis com MySQL, o banco de dados MySQL tradicional e MariaDB, um fork do MySQL mantido pelo inventor original do MySQL, Monty Widenius. O MariaDB é líder em velocidade de banco de dados e atividade de desenvolvimento no momento, então vou escolhê-lo para meu servidor.
Abaixo irei descrever a instalação do MariaDB (Capítulo 2.1) e do MySQL (Capítulo 2.2) para que você possa escolher o banco de dados de sua preferência. Apenas certifique-se de seguir o capítulo 2.1 ou 2.2, mas não ambos.
2.1 Instalar o MariaDB
Para instalar o MariaDB, execute este comando.
apt-get install mariadb-server mariadb-client
Você será solicitado a fornecer uma senha para o usuário root do MariaDB - esta senha é válida para o usuário [protegido por e-mail], então não precisamos especificar uma senha root do MariaDB manualmente mais tarde:
New password for the MariaDB "root" user: <-- yourrootsqlpassword
Repeat password for the MariaDB "root" user: <-- yourrootsqlpassword2.2 Instalar o MySQL
Instalamos o MySQL 5 assim:
apt-get install mysql-server mysql-client
Você será solicitado a fornecer uma senha para o usuário root do MySQL - esta senha é válida para o usuário [protegido por e-mail], então não precisamos especificar uma senha root do MySQL manualmente mais tarde:
Nova senha para o usuário \root\ do MySQL: <-- yourrootsqlpassword
Repita a senha para o usuário \root\ do MySQL: <-- yourrootsqlpassword3 Instalando o Lighttpd
O Lighttpd está disponível como um pacote Debian, portanto podemos instalá-lo assim:
apt-get install lighttpd
Agora direcione seu navegador para http://192.168.1.100/ e você deverá ver a página de espaço reservado do Lighttpd:
A raiz do documento padrão do Lighttpd é /var/www no Debian, e o arquivo de configuração é /etc/lighttpd/lighttpd.conf.
Configurações adicionais são armazenadas em arquivos no diretório /etc/lighttpd/conf-available - essas configurações podem ser habilitadas com o comando lighttpd-enable-mod que cria um link simbólico do diretório /etc/lighttpd/conf-enabled para a configuração apropriada arquivo em /etc/lighttpd/conf-available. Você pode desativar as configurações com o comando lighttpd-disable-mod.
4 Instalando o PHP5
Podemos fazer o PHP5 funcionar no Lighttpd através do PHP-FPM que instalamos assim:
apt-get install php5-fpm php5
PHP-FPM é um processo daemon (com o script init /etc/init.d/php5-fpm) que executa um servidor FastCGI no soquete /var/run/php5-fpm.sock.
5 Configurando Lighttpd e PHP5
Para habilitar o PHP5 no Lighttpd, devemos modificar /etc/php5/fpm/php.ini e descomentar a linha cgi.fix_pathinfo=1:
nano /etc/php5/fpm/php.ini
[...] ; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's ; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok ; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. ; http://php.net/cgi.fix-pathinfo cgi.fix_pathinfo=1 [...]
E reinicie o serviço php5-fpm para aplicar a alteração de configuração:
systemctl restart php5-fpm.service
O arquivo de configuração Lighttpd para PHP /etc/lighttpd/conf-available/15-fastcgi-php.conf é adequado para uso com spawn-fcgi, porém, queremos usar PHP-FPM, portanto criamos um backup do arquivo ( chamado 15-fastcgi-php-spawnfcgi.conf) e modifique 15-fastcgi-php.conf da seguinte forma:
cd /etc/lighttpd/conf-available/
cp 15-fastcgi-php.conf 15-fastcgi-php-spawnfcgi.conf
nano 15-fastcgi-php.conf# -*- depends: fastcgi -*- # /usr/share/doc/lighttpd/fastcgi.txt.gz # http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions#mod_fastcgi-fastcgi ## Start an FastCGI server for php (needs the php5-cgi package) fastcgi.server += ( ".php" => (( "socket" => "/var/run/php5-fpm.sock", "broken-scriptfilename" => "enable" )) )
Para ativar a configuração fastcgi, execute os seguintes comandos:
lighttpd-enable-mod fastcgi
lighttpd-enable-mod fastcgi-phpIsso cria os links simbólicos /etc/lighttpd/conf-enabled/10-fastcgi.conf que apontam para /etc/lighttpd/conf-available/10-fastcgi.conf e /etc/lighttpd/conf-enabled/15-fastcgi-php .conf que aponta para /etc/lighttpd/conf-available/15-fastcgi-php.conf:
ls -l /etc/lighttpd/conf-enabled
:/etc/lighttpd/conf-available# ls -l /etc/lighttpd/conf-enabled
total 0
lrwxrwxrwx 1 root root 33 Aug 11 08:20 10-fastcgi.conf -> ../conf-available/10-fastcgi.conf
lrwxrwxrwx 1 root root 37 Aug 11 08:20 15-fastcgi-php.conf -> ../conf-available/15-fastcgi-php.confEm seguida, recarregamos o Lighttpd:
systemctl force-reload lighttpd.service
6 Testando o PHP5/Obtendo detalhes sobre a instalação do PHP5
A raiz do documento do site padrão é /var/www. Vamos agora criar um pequeno arquivo PHP (info.php) nesse diretório e chamá-lo em um navegador. O arquivo exibirá muitos detalhes úteis sobre nossa instalação do PHP, como a versão do PHP instalada.
nano /var/www/html/info.php
<?php phpinfo(); ?>
Agora chamamos esse arquivo em um navegador (por exemplo, http://192.168.1.100/info.php):
Como você pode ver, o PHP5 está funcionando e está funcionando através do FPM/FastCGI, conforme mostrado na linha da API do servidor. Se você rolar mais para baixo, verá todos os módulos que já estão habilitados no PHP5. O MySQL não está listado lá, o que significa que ainda não temos suporte para MySQL no PHP5.
7 Obtendo suporte MySQL em PHP5
Para obter suporte MySQL em PHP, podemos instalar o pacote php5-mysqlnd. Esse é um novo driver de banco de dados compatível com MySQL e MariaDB. É uma boa ideia instalar alguns outros módulos PHP5, assim como você pode precisar deles para seus aplicativos. Você pode procurar por módulos PHP5 disponíveis como este:
apt-cache search php5
Escolha os que você precisa e instale-os assim:
apt-get install php5-mysqlnd php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-pspell php5-recode php5-sqlite php5-tidy php5-xmlrpc php5-xsl
O Xcache é um cache de opcode PHP gratuito e aberto para armazenar em cache e otimizar o código intermediário do PHP. É semelhante a outros caches PHP opcode, como eAccelerator e APC. É altamente recomendável ter um desses instalado para acelerar sua página PHP.
O Xcache pode ser instalado da seguinte forma:
apt-get install php5-xcache
Agora recarregue o PHP-FPM:
systemctl restart php5-fpm.service
Agora recarregue http://192.168.1.100/info.php em seu navegador e role para baixo até a seção de módulos novamente. Agora você deve encontrar muitos novos módulos lá, incluindo o módulo MySQL:
8 phpMyAdmin
phpMyAdmin é uma interface web através da qual você pode gerenciar seus bancos de dados MySQL. É uma boa ideia instalá-lo:
apt-get install phpmyadmin
Você verá as seguintes perguntas:
Servidor Web para reconfigurar automaticamente: <-- lighttpd
Configure database for phpmyadmin with dbconfig-common? <-- Yes
Password of the database's administrative user: <-- yourrootsqlpassword
MySQL application password for phpmyadmin: <-- Press <enter>Depois, você pode acessar o phpMyAdmin em http://192.168.1.100/phpmyadmin/:
9 Fazendo o PHP-FPM usar uma conexão TCP
Por padrão, o PHP-FPM está escutando no soquete /var/run/php5-fpm.sock. Também é possível fazer o PHP-FPM usar uma conexão TCP. Para fazer isso, abra /etc/php5/fpm/pool.d/www.conf...
nano /etc/php5/fpm/pool.d/www.conf
... e faça com que a linha de escuta tenha a seguinte aparência:
[...] ;listen = /var/run/php5-fpm.sock listen = 127.0.0.1:9000 [...]
Isso fará com que o PHP-FPM escute na porta 9000 no IP 127.0.0.1 (localhost). Certifique-se de usar uma porta que não esteja em uso em seu sistema.
Em seguida, recarregue o PHP-FPM:
systemctl restart php5-fpm.service
Em seguida, abra o arquivo de configuração do Lighttpds PHP /etc/lighttpd/conf-available/15-fastcgi-php.conf e substitua a linha do soquete pelas linhas de host e porta:
nano /etc/lighttpd/conf-available/15-fastcgi-php.conf
# -*- depends: fastcgi -*- # /usr/share/doc/lighttpd/fastcgi.txt.gz # http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions#mod_fastcgi-fastcgi ## Start an FastCGI server for php (needs the php5-cgi package) fastcgi.server += ( ".php" => (( "host" => "127.0.0.1", "port" => "9000", "broken-scriptfilename" => "enable" )) )
Finalmente recarregue o Lighttpd:
systemctl force-reload lighttpd.service
10 links
- Lighttpd: http://www.lighttpd.net/
- PHP: http://www.php.net/
- PHP-FPM: http://php-fpm.org/
- MySQL: http://www.mysql.com/
- Debian: http://www.debian.org/
- phpMyAdmin: http://www.phpmyadmin.net/