GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Instalación de Nginx con compatibilidad con PHP5 y MySQL en Ubuntu 8.10

Nginx (pronunciado "motor x") es un servidor HTTP gratuito, de código abierto y de alto rendimiento. Nginx es conocido por su estabilidad, rico conjunto de funciones, configuración simple y bajo consumo de recursos. Este tutorial muestra cómo puede instalar Nginx en un servidor Ubuntu 8.10 compatible con PHP5 (a través de FastCGI) y MySQL.

1 nota preliminar

En este tutorial utilizo el nombre de host server1.example.com con la dirección IP 192.168.0.100. Estas configuraciones pueden diferir para usted, por lo que debe reemplazarlas cuando corresponda.

2 Instalación de MySQL 5.0

Para instalar MySQL, ejecutamos

apt-get install mysql-server mysql-client

Se le pedirá que proporcione una contraseña para el usuario root de MySQL; esta contraseña es válida para el usuario [email protected] así como para [email protected], por lo que no tenemos que especificar una contraseña de root de MySQL manualmente más adelante:

Nueva contraseña para el usuario "root" de MySQL:<-- yourrootsqlpassword
Repita la contraseña para el usuario "root" de MySQL:<-- yourrootsqlpassword

3 Instalación de Nginx

Nginx está disponible como paquete para Ubuntu 8.10 que podemos instalar de la siguiente manera:

apt-get install nginx

Inicie nginx después:

/etc/init.d/nginx start

Escriba la dirección IP o el nombre de host de su servidor web en un navegador (por ejemplo, http://192.168.0.100) y debería ver la página de bienvenida de nginx:

Para hacer que nginx se inicie en el momento del arranque, ejecute

update-rc.d nginx defaults

4 Instalación de PHP5

Podemos hacer que PHP5 funcione en nginx a través de FastCGI. Afortunadamente, Ubuntu proporciona un paquete PHP5 habilitado para FastCGI que instalamos así (junto con algunos módulos PHP5 como php5-mysql que necesita si desea usar MySQL desde sus scripts PHP):

apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Luego abra /etc/php5/cgi/php.ini y agregue la línea cgi.fix_pathinfo =1 justo al final del archivo:

vi /etc/php5/cgi/php.ini
[...]
cgi.fix_pathinfo = 1

No existe un paquete independiente FastCGI daemon para Ubuntu, por lo que usamos el programa spawn-fcgi de lighttpd. Instalamos lighttpd de la siguiente manera:

apt-get install lighttpd

Verá un mensaje de error que dice que lighttpd no pudo iniciarse porque el puerto 80 ya está en uso. Así es como se supone que debe ser porque nginx ya está escuchando en el puerto 80. Ejecutar

update-rc.d -f lighttpd remove

para que lighttpd no se inicie en el momento del arranque.

Instalamos lighttpd porque solo necesitamos un programa que viene con el paquete, /usr/bin/spawn-fcgi, que podemos usar para iniciar procesos FastCGI. Echa un vistazo a

spawn-fcgi --help

para obtener más información al respecto.

Para iniciar un demonio PHP FastCGI escuchando en el puerto 9000 en localhost y ejecutándose como usuario y grupo www-data, ejecutamos el siguiente comando:

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

Por supuesto, no desea escribir ese comando manualmente cada vez que inicia el sistema, por lo que para que el sistema ejecute el comando automáticamente en el momento del inicio, abra /etc/rc.local...

vi /etc/rc.local

... y agregue el comando al final del archivo (antes de la línea de salida):

[...]
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid
[...]

5 Configuración de nginx

La configuración de nginx está en /etc/nginx/nginx.conf que abrimos ahora:

vi /etc/nginx/nginx.conf

La configuración es fácil de entender (puede obtener más información aquí:http://wiki.codemongers.com/NginxFullExample y aquí:http://wiki.codemongers.com/NginxFullExample2)

Primero (esto es opcional) aumente la cantidad de procesos de trabajo y establezca el tiempo de espera de keepalive_time en un valor razonable:

[...]
worker_processes  5;
[...]
    keepalive_timeout  2;
[...]

Los hosts virtuales se definen en los contenedores del servidor {}. El host virtual predeterminado se define en el archivo /etc/nginx/sites-disponible/default. Modifiquémoslo de la siguiente manera:

vi /etc/nginx/sites-available/default
[...]
server {
        listen   80;
        server_name  _;

        access_log  /var/log/nginx/localhost.access.log;

        location / {
                root   /var/www/nginx-default;
                index  index.php index.html index.htm;
        }

        location /doc {
                root   /usr/share;
                autoindex on;
                allow 127.0.0.1;
                deny all;
        }

        location /images {
                root   /usr/share;
                autoindex on;
        }

        #error_page  404  /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
                root   /var/www/nginx-default;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
                #proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default$fastcgi_script_name;
                include        fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny  all;
        }
}
[...]

nombre del servidor _; lo convierte en un vhost catchall predeterminado (por supuesto, también puede especificar un nombre de host aquí como www.example.com).

En la ubicación / parte, agregué index.php a la línea de índice. raíz /var/www/nginx-default; significa que la raíz del documento es el directorio /var/www/nginx-default.

La parte importante para PHP es la ubicación ~ \.php$ {} estrofa. Descoméntalo para habilitarlo. Asegúrese de cambiar la línea fastcgi_param a fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name; (reemplace /var/www/nginx-default con la raíz del documento de su vhost) porque, de lo contrario, el intérprete de PHP no encontrará el script PHP que llama en su navegador.

Asegúrese de que haya algunos espacios entre include y fastcgi_params; - en el archivo predeterminado esto está escrito como una palabra que es un error.

Ahora guarde el archivo y reinicie nginx:

/etc/init.d/nginx restart

Ahora cree el siguiente archivo PHP en la raíz del documento /var/www/nginx-default:

vi /var/www/nginx-default/info.php
<?php
phpinfo();
?>

Ahora llamamos a ese archivo en un navegador (por ejemplo, http://192.168.0.100/info.php):

Como puede ver, PHP5 funciona y funciona a través de FastCGI, como se muestra en la línea API del servidor. Si se desplaza hacia abajo, verá todos los módulos que ya están habilitados en PHP5, incluido el módulo MySQL:

6 Enlaces

  • nginx:http://nginx.net/
  • Wiki de nginx:http://wiki.codemongers.com/Main
  • PHP:http://www.php.net
  • MySQL:http://www.mysql.com
  • Ubuntu:http://www.ubuntu.com/

Ubuntu
  1. Instalación de Nginx con PHP5 (y PHP-FPM) y compatibilidad con MySQL (LEMP) en Ubuntu 14.04 LTS

  2. Instalación de Apache2 con compatibilidad con PHP5 y MySQL en Ubuntu 14.04LTS (LAMP)

  3. Instalación de Lighttpd con soporte PHP5 (PHP-FPM) y MySQL en Ubuntu 14.04LTS

  4. Instalación de Apache2 con compatibilidad con PHP5 y MySQL en OpenSUSE 13.1 (LAMP)

  5. Cómo instalar Nginx con PHP5 y MySQL en Ubuntu 11.10

Instalación de Apache2 con compatibilidad con PHP5 y MySQL en CentOS 6.2 (LAMP)

Instalación de Apache2 con compatibilidad con PHP5 y MySQL en CentOS 6.3 (LAMP)

Instalación de Nginx con soporte PHP5 (y PHP-FPM) y MySQL en CentOS 6.4

Instalación de Apache2 con compatibilidad con PHP5 y MySQL en CentOS 6.4 (LAMP)

Instalación de Nginx con soporte PHP5 (y PHP-FPM) y MySQL en Fedora 19

Instalación de Apache2 con compatibilidad con PHP5 y MySQL en Fedora 20 (LAMP)