1
0
mirror of https://github.com/php/doc-es.git synced 2026-03-26 08:22:08 +01:00
Files
archived-doc-es/reference/mongodb/tutorial/hhvm.xml
Pedro Antonio Gil Rodríguez d519447f35 Errores corregidos
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@338582 c90b9560-bf6c-de11-be94-00142212c4b1
2016-02-08 12:36:51 +00:00

252 lines
7.5 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 20e3046af35c1716b12167542c07e974cb5537bd Maintainer: seros Status: ready -->
<!-- Reviewed: no -->
<chapter xml:id="mongodb.tutorial.hhvm" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Primeros pasos con HHVM</title>
<para>
En esta sección aprenderá cómo configurar NGINX con HHVM y MongoDB.
Sin embargo, este tutorial no pretende ser una guia exclusiva de cómo
ejecutar NGINX y HHVM en un entorno de producción.
</para>
<para>
En este tutorial emplearemos un sistema Debian con NGINX instalado
a través de <code>apt-get</code> y HHVM instalado desde el código fuente o desde
paquetes preconstruidos a <code>/usr/local/hhvm/3.9.1</code> (con los binarios ubicados
en <code>/usr/local/hhvm/3.9.1/bin/hhvm</code>).
</para>
<section>
<title>Instalación de NGINX</title>
<para>
Simplemente instalamos NGINX ejecutando <code>apt-get install nginx-full</code>.
Si NGINX no se iniciase después de su instalación, probablemente sea porque ya se
tenga otro servidor web (p.ej. Apache) ejecutándose en el mismo puerto. En este daso,
se podrán ver las siguientes líneas en <code>/var/log/nginx/error.log</code>:
</para>
<programlisting role="shell">
<![CDATA[
2015/09/29 10:19:27 [emerg] 22445#22445: bind() to 0.0.0.0:80 failed (98:Address already in use)
2015/09/29 10:19:27 [emerg] 22445#22445: bind() to [::]:80 failed (98: Address already in use)
]]>
</programlisting>
<para>
Para solucionar este problema, se puede o bien cambiar el puerto predeterminado para NGINX o Apache,
o bien detener el proceso de Apache con <code>service apache2 stop</code>, o bien eliminar
Apache por completo con <code>apt-get remove apache2</code>.
</para>
</section>
<section>
<title>Instalación de HHVM</title>
<para>
Este tutorial está escrito desde la perspectiva de un desarrollador de extensiones, por lo que
hemos instalado HHVM desde el código fuente para facilitar el desarrollo de parches y asegurar
la disponibilidad de los símbolos de depuración. Dicho esto, los de Facebook también
proporcionan paquetes preconstruidos, que es lo que probablemente <emphasis>usted</emphasis>
utilice en producción y desarrollo. Se pueden encontrar las instrucciones de instalación
de esto paquetes en la
<link xlink:href="&url.facebook.hhvm.prebuild;">Wiki de HHVM</link>.
</para>
<para>
Será necesario instalar los paquetes <code>hhvm</code>
<emphasis>y</emphasis> <code>hhvm-dev</code>. Este último es necesario
para poder compilar la extensión MongoDB HHVM después.
</para>
<para>
Si está compilando HHVM desde el código fuente, será necesario crear
<code>/var/run/hhvm</code>:
</para>
<programlisting role="shell">
<![CDATA[
sudo mkdir -p /var/run/hhvm
sudo chown www-data.www-data /var/run/hhvm
sudo mkdir /etc/hhvm
sudo touch /etc/hhvm/php.ini
# Así no tendrá que hacer ``sudo`` para editar el fichero
sudo chown derick /etc/hhvm/php.ini
# Para ver si realmente funciona
echo "date.timezone=Europe/London" >> /etc/hhvm/php.ini
]]>
</programlisting>
<para>
HHVM debería iniciarse como el usuario <code>www-data</code>. Para los propósitos de
este tutorial, lo podremos ejecutar en segundo plano en el modo
<emphasis>server</emphasis> como sigue:
</para>
<programlisting role="shell">
<![CDATA[
sudo -u www-data -s /usr/local/hhvm/3.9.1/bin/hhvm \
--mode server \
-vServer.Type=fastcgi \
-vServer.FileSocket=/var/run/hhvm/sock
]]>
</programlisting>
</section>
<section>
<title>Comunicación entre NGINX y HHVM</title>
<para>
Una vez se esté ejecutando HHVM, necesitamos indicar a NGINX cómo comunicarse con HHVM para ejecutar
ficheros <code>.php</code>. Aunque esta no sea la estrategia más limpia,
se puede añadir el siguiente código a
<code>/etc/nginx/sites-enabled/default</code>, justo depués de la
sección <code>location / { … }</code>:
</para>
<programlisting>
<![CDATA[
location ~ \.php$ {
fastcgi_pass unix:/var/run/hhvm/sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
]]>
</programlisting>
<para>
Después de añadir este código se debe reiniciar NGINX:
</para>
<programlisting role="shell">
<![CDATA[
sudo service nginx restart
]]>
</programlisting>
<para>
Para confirmar que todo funciona bien, crearemos un directorio de proyecto
con un fichero <code>index.php</code> que llame a <code>phpinfo()</code>:
</para>
<para>
<itemizedlist>
<listitem>
<para>
Crear el directorio de proyecto:
<code>sudo mkdir -p /var/www/html/mi-primer-proyecto</code>
</para>
</listitem>
<listitem>
<para>
Cambiar los permisos a su usuario y al grupo <code>www-data</code>:
<code>sudo chown derick.www-data /var/www/html/mi-primer-proyecto</code>
</para>
</listitem>
<listitem>
<para>
Crear el fichero <code>/var/www/html/mi-primer-proyecto/index.php</code>.
Desde ahora, <emphasis>no</emphasis> incluiré la ruta completa
<code>/var/www/html/mi-primer-proyecto/</code> al mencionar nombres de ficheros.
Poner el siguiente contenido en este fichero:
</para>
<programlisting role="php">
<![CDATA[
<?php
phpinfo();
?>
]]>
</programlisting>
</listitem>
</itemizedlist>
</para>
<para>
Ahora, en el navegador, solicite la página
<code>http://gargleblaster/mi-primer-proyecto/index.php</code> (ajustando el
nombre del host). Se debería mostrar una página comenzando con "HHVM Version 3.9.1"
seguido de varias tablas con información.
</para>
</section>
<section>
<title>Instalación del Controlador de MongoDB para HHVM</title>
<para>
El controlador de MongoDB es la parte que conecta el PHP de HHVM con el
servidor de bases de datos. Para instalar y registrar el controlador con HHVM, es necesario
seguir los pasos de <xref linkend="mongodb.installation.hhvm"/>.
</para>
<para>
Después de haber instalado y habilitado la extensión, HHVM necesitará
reiniciarse. Si se tenía HHVM ejecutándose en el «shell» anteriormente, detnéngalo con
Ctrl-C y reinicielo de nuevo como antes:
</para>
<programlisting role="shell">
<![CDATA[
sudo -u www-data -s /usr/local/hhvm/3.9.1/bin/hhvm \
--mode server \
-vServer.Type=fastcgi \
-vServer.FileSocket=/var/run/hhvm/sock
]]>
</programlisting>
<para>
Para porbar que el controlador está cargado, edite el fichero <code>index.php</code>
y reemplace su contenido con:
</para>
<programlisting role="php">
<![CDATA[
<?php
var_dump(phpversion("mongodb"));
?>
]]>
</programlisting>
<para>Esto debería mostrar algo similar a:</para>
<programlisting>
<![CDATA[
string(5) "x.y.z"
]]>
</programlisting>
</section>
<section>
<title>Otras lecturas</title>
<para>
Continúe este tutorial en
<xref linkend="mongodb.tutorial.library"/>
</para>
</section>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->