Pesquisa de site

Instalando Lighttpd com PHP (modo PHP-FPM) e MySQL ou MariaDB no Ubuntu 15.04


Este tutorial existe para estas versões do sistema operacional

  • Ubuntu 12.10 (Quantal Quetzal)

Nesta página

  1. 1 Nota Preliminar
  2. 2 Instalando o MySQL/MariaDB
    1. 2.1 Instalação do MySQL
    2. 2.2 Instalação do MariaDB

    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 15.04 com suporte PHP (através do PHP-FPM) e 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 eu uso o hostname 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 su

    2 Instalando o MySQL/MariaDB

    O Ubuntu fornece pacotes para o servidor de banco de dados Origina MySQL (MySQL 5.6) e o fork MySQL MariaDB (10). A maioria dos usuários usará o MariaDB hoje, pois deve ser um pouco mais rápido que o MySQL e o desenvolvimento está progredindo mais rápido. Deixo a decisão do que instalar para você aqui e explicarei ambas as opções. Siga as instruções em 2.1 ou 2.2, mas não em ambas.

    2.1 Instalação do MySQL

    Instale o MySQL assim:

    apt-get -y install mysql-server-5.6 mysql-client-5.6

    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

    2.2 Instalação do MariaDB

    Instale o MariaDB assim:

    apt-get -y install mariadb-server mariadb-client

    Agora definimos uma senha de root para MariaDB.

    mysql_secure_installation

    Ser-lhe-ão feitas estas perguntas:

    Enter current password for root (enter for none): <-- press enter
    Set root password? [Y/n] <-- y
    New password: <-- Enter the new MariaDB root password here
    Re-enter new password: <-- Repeat the password
    Remove anonymous users? [Y/n] <-- y
    Disallow root login remotely? [Y/n] <-- y
    Reload privilege tables now? [Y/n] <-- y

    3 Instalando o Lighttpd

    Lighttpd está disponível como um pacote Ubuntu, portanto podemos instalá-lo assim:

    apt-get -y install lighttpd

    Agora direcione seu navegador para http://192.168.1.100/index.lighttpd.html 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 5

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

    apt-get -y 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 PHP 5

    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
    [...]

    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
    # /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 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-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# ls -l /etc/lighttpd/conf-enabled
    total 0
    lrwxrwxrwx 1 root root 33 Sep 29 18:28 10-fastcgi.conf -> ../conf-available/10-fastcgi.conf
    lrwxrwxrwx 1 root root 37 Sep 29 18:28 15-fastcgi-php.conf -> ../conf-available/15-fastcgi-php.conf

    Em seguida, recarregamos o Lighttpd:

    service lighttpd force-reload

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

    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 5.6 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 PHP.

    7 Obtendo suporte MySQL no PHP5

    Para obter suporte MySQL em PHP, podemos instalar o pacote php5-mysqlnd. Isso é preferível ao pacote php5-mysql, pois contém um driver MySQL mais recente que suporta 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 -y install php5-mysqlnd php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp 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 -y install php5-xcache

    Agora recarregue o PHP-FPM:

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

    Você verá as seguintes perguntas:

    Servidor Web para reconfigurar automaticamente: <-- lighttpd
    Configurar banco de dados para phpmyadmin com dbconfig-common? <-- sim

    Password of the database's administrative user: <-- Enter the MySQL/MariaDB root password
    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 (opcional)

    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:

    service php5-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 php5-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: