Pesquisa de site

Instalando Lighttpd com PHP 7 (PHP-FPM) e MySQL 5.7 no Ubuntu 16.04 LTS


Este tutorial existe para estas versões do sistema operacional

  • Ubuntu 10.04 (Lucid Lynx)

Nesta página

  1. 1 Nota Preliminar
  2. 2 Instalando o MySQL 5.7
  3. 3 Instalando o Lighttpd
  4. 4 Instalando o PHP 7.0
  5. 5 Configurando Lighttpd e PHP 7.0
  6. 6 Testando o PHP 7.0/Obtendo detalhes sobre a instalação do PHP
  7. 7 Obtendo suporte MySQL em PHP
  8. 8 phpMyAdmin
  9. 9 Fazendo o PHP-FPM usar uma conexão TCP (opcional)
  10. 10 links

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 Ubuntu 16.04 com suporte para PHP 7 (através do PHP-FPM) e MySQL 5.7. 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.

Estou executando todas as etapas deste tutorial com privilégios de root, portanto, verifique se você está conectado como root:

sudo -s

2 Instalando o MySQL 5.7

Primeiro, instalamos o MySQL assim:

apt-get -y 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: <-- yourrootsqlpassword

O instalador definiu uma senha root do MySQL, mas há mais algumas configurações que devem ser alteradas para uma instalação segura do MySQL. Isso pode ser feito com o comando mysql_secure_installation.

mysql_secure_installation

O comando é interativo:

:~# mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root: <-- Enter the MySQL root password
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: <-- Press y if you want this function or press Enter otherwise.
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : <-- Press enter
... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : <-- y
Success.

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : <-- y
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : <-- y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : <-- y
Success.
All done!

3 Instalando o Lighttpd

Lighttpd está disponível como um pacote Ubuntu. Portanto, podemos instalá-lo diretamente com o apt do repositório de pacotes do Ubuntu Xenial Xerus:

apt-get -y 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/html no Ubuntu, 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 PHP 7.0

Podemos fazer o PHP funcionar no Lighttpd através do PHP-FPM que instalamos assim:

apt-get -y install php7.0-fpm php7.0

PHP-FPM é um processo daemon (com o script init php5-fpm) que executa um servidor FastCGI no soquete /var/run/php/php7.0-fpm.sock.

5 Configurando Lighttpd e PHP 7.0

Para habilitar o PHP no Lighttpd, devemos modificar /etc/php/7.0/fpm/php.ini e descomentar a linha cgi.fix_pathinfo=1:

nano /etc/php/7.0/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
[...]

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 ( nomeado 15-fastcgi-php.conf.bak) e modifique 15-fastcgi-php.conf da seguinte forma:

cd /etc/lighttpd/conf-available/
cp 15-fastcgi-php.conf 15-fastcgi-php.conf.bak
nano 15-fastcgi-php.conf
# /usr/share/doc/lighttpd-doc/fastcgi.txt.gz
# http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions#mod_fastcgi-fastcgi

## Start an FastCGI server for php (needs the php7.0-cgi package)
fastcgi.server += ( ".php" =>
        ((
                "socket" => "/var/run/php/php7.0-fpm.sock",
                "broken-scriptfilename" => "enable"
        ))
)

Para ativar a configuração fastcgi, execute os seguintes comandos:

lighttpd-enable-mod fastcgi
lighttpd-enable-mod fastcgi-php

Isso 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#

Em seguida, recarregamos o Lighttpd:

service lighttpd force-reload

Observação: se você receber erros de localidade, poderá removê-los usando

apt-get -y install language-pack-en-base  
dpkg-reconfigure locales

6 Testando o PHP 7.0/Obtendo detalhes sobre a instalação do PHP

A raiz do documento do site padrão é /var/www/html. 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 PHP 7.0 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. MySQL não está listado lá, o que significa que ainda não temos suporte para MySQL em PHP.

7 Obtendo suporte MySQL em PHP

Para obter suporte MySQL em PHP, podemos instalar o pacote php7.0-mysql. É uma boa ideia instalar alguns outros módulos PHP, assim como você pode precisar deles para seus aplicativos. Você pode procurar por módulos PHP disponíveis como este:

apt-cache search php7.0

Escolha os que você precisa e instale-os assim:

apt-get -y install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache  php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettext

APCu é uma extensão para o módulo PHP Opcache que vem com o PHP 7, ele adiciona alguns recursos de compatibilidade para software que suporta o cache APC (por exemplo, plug-ins de cache do Wordpress).

O APCu pode ser instalado da seguinte maneira:

apt-get -y install php-apcu

Agora recarregue o PHP-FPM:

service php7.0-fpm reload

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 mysqli e mysqlnd:

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 -y install phpmyadmin

Você verá as seguintes perguntas:

Web server to reconfigure automatically: <-- lighttpd
Configure database for phpmyadmin with dbconfig-common? <-- Yes
MySQL application password for phpmyadmin: <-- Press Enter

Se você receber o seguinte erro:

Run /etc/init.d/lighttpd force-reload to enable changes
dpkg: error processing package phpmyadmin (--configure):
subprocess installed post-installation script returned error exit status 2
E: Sub-process /usr/bin/dpkg returned an error code (1)

Em seguida, execute estes comandos:

/etc/init.d/lighttpd force-reload
apt-get -y install phpmyadmin

Depois, você pode acessar o phpMyAdmin em http://192.168.1.100/phpmyadmin/:

9 Fazendo o PHP-FPM usar uma conexão TCP (opcional)

Por padrão, o PHP-FPM está escutando no soquete /var/run/php/php7.0-fpm.sock. Também é possível fazer o PHP-FPM usar uma conexão TCP. Para fazer isso, abra /etc/php/7.0/fpm/pool.d/www.conf...

nano /etc/php/7.0/fpm/pool.d/www.conf

... e faça com que a linha de escuta tenha a seguinte aparência:

[...]
;listen = /var/run/php/php7.0-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:

service php7.0-fpm reload

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
# /usr/share/doc/lighttpd-doc/fastcgi.txt.gz
# http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions#mod_fastcgi-fastcgi

## Start an FastCGI server for php (needs the php7.0-cgi package)
fastcgi.server += ( ".php" =>
        ((
                "host" => "127.0.0.1",
                "port" => "9000",
                "broken-scriptfilename" => "enable"
        ))
)

Finalmente recarregue o Lighttpd:

service lighttpd force-reload

10 links

  • Lighttpd: http://www.lighttpd.net/
  • PHP: http://www.php.net/
  • PHP-FPM: http://php-fpm.org/
  • MySQL: http://www.mysql.com/
  • Ubuntu: http://www.ubuntu.com/
  • phpMyAdmin: http://www.phpmyadmin.net/

Artigos relacionados: