Instalando Lighttpd com PHP (modo PHP-FPM) e MySQL ou MariaDB no Ubuntu 15.10
Este tutorial existe para estas versões do sistema operacional
- Ubuntu 15.10 (Wily Werewolf)
- Ubuntu 12.10 (Quantal Quetzal)
Nesta página
- 1 Nota Preliminar
- 2 Instalando o MySQL/MariaDB
- 2.1 Instalação do MySQL
- 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 instalar o Lighttpd em um servidor Ubuntu 15.10 com suporte PHP (através do PHP-FPM) e MySQL ou MariaDB. 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 antes de prosseguir:
sudo su
2 Instalando o MySQL/MariaDB
O Ubuntu fornece pacotes para o servidor de banco de dados MySQL original (MySQL 5.6) e o fork MySQL MariaDB (10). A maioria dos usuários prefere usar o MariaDB hoje, pois é um pouco mais rápido que o MySQL e o desenvolvimento progride mais rapidamente. Deixo a decisão do que instalar para você aqui e explicarei ambas as opções. Siga as instruções no capítulo 2.1 ou 2.2, mas não em ambos.
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: <-- yourrootsqlpassword2.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] <-- y3 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.6
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 a unidade de serviço systemd php5-fpm.service) que executa um servidor FastCGI no soquete /var/run/php5-fpm.sock.
5 Configurando Lighttpd e PHP
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-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 Nov 11 13:59 10-fastcgi.conf -> ../conf-available/10-fastcgi.conf
lrwxrwxrwx 1 root root 37 Nov 11 13:59 15-fastcgi-php.conf -> ../conf-available/15-fastcgi-php.confEm 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. MySQL não está listado lá, o que significa que ainda não temos suporte para MySQL em 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? <-- simPassword of the database's administrative user: <-- Enter the MySQL/MariaDB root password
MySQL application password for phpmyadmin: <-- Press ENTERDepois, 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 Download da imagem da máquina virtual deste tutorial
Este tutorial está disponível como uma imagem de máquina virtual pronta para usar no formato ovf/ova para assinantes do Howtoforge. O formato VM é compatível com VMWare e Virtualbox. A imagem da máquina virtual usa os seguintes detalhes de login:
Login SSH/Shell
Nome de usuário: administrador
Senha: howtoforgeEste usuário tem direitos sudo.
Login do MySQL/MariaDB
Nome de usuário: root
Senha: howtoforgeO IP da VM é 192.168.1.100, pode ser alterado no arquivo /etc/network/interfaces. Por favor, altere todas as senhas acima para proteger a máquina virtual.
11 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/