Mechasoft: Blog de Matías J. Magni

…dedicado al Open Source y al delirio del Autor…

  • Matías J. Magni

  • RSS Ubuntu

    • Security Team Weekly Summary: August 17, 2017 17/08/2017
      The Security Team weekly reports are intended to be very short summaries of the Security Team’s weekly activities. If you would like to reach the Security Team, you can find us at the #ubuntu-hardened channel on FreeNode. Alternatively, you can mail the Ubuntu Hardened mailing list at: During the last week, the Ubuntu Securit […]
    • How to set up Kubernetes on any cloud and monitor your apps with Weave 17/08/2017
      On August 2, Luke Marsden (Weaveworks) and Marco Ceppi (Canonical) presented a webinar on how to Speed up your software development lifecycle with Kubernetes. In the session they described how you can use conjure-up and Weave Cloud to set up, manage and monitor an app in Kubernetes. In this tutorial we’re going to show you […]
    • Ubuntu Foundations Development Summary – August 16, 2017 16/08/2017
      This newsletter is to provide a status update from the Ubuntu Foundations Team. There will also be highlights provided for any interesting subjects the team may be working on. If you would like to reach the Foundations team, you can find us at the #ubuntu-devel channel on freenode. Highlights Updated cloud images have been released […]
    • Kernel Team Summary- August 16, 2017 16/08/2017
      Development (Artful / 17.10) We intend to target a 4.13 kernel for the Ubuntu 17.10 release. The artful kernel is now based on Linux 4.11. The Ubuntu 17.10 Kernel Freeze is Thurs Oct 5, 2017. The kernel in the artful-proposed pocket of the Ubuntu archive has been updated to v4.12.7 The kernel in the Artful […]
    • Ubuntu Server Development Summary – 15 Aug 2017 15/08/2017
      Hello Ubuntu Server! The purpose of this communication is to provide a status update and highlights for any interesting subjects from the Ubuntu Server Team. If you would like to reach the server team, you can find us at the #ubuntu-server channel on Freenode. Alternatively, you can sign up and use the Ubuntu Server Team […]
  • RSS LUGMen

    • Se ha producido un error; es probable que la fuente esté fuera de servicio. Vuelve a intentarlo más tarde.
  • Archivos

Configurar un servidor LEMP (Linux, Nginx, MySQL, PHP5)

Posted by Matías J. Magni en 03/06/2011

1. Instalamos el servidor web nginx:

# apt-get install nginx

Iniciamos el servicio:
# /etc/init.d/nginx start

2. Instalamos MySQL:

# apt-get install mysql-server mysql-client

3. Instalamos PHP5:

# 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-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-json

Editamos el archivo /etc/php5/cgi/php.ini:
# vim /etc/php5/cgi/php.ini
Agregamos la siguiente línea o la descomentamos en el caso de que ya exista:
cgi.fix_pathinfo = 1

4. Instalamos Lighttpd:

Debemos instalar Lighttpd para proporcionar una interfaz Fast CGI del intérprete de PHP, ya que no viene incluida con Nginx.
# apt-get install lighttpd

Lo quitamos del arranque:
# update-rc.d -f lighttpd remove

5. Configuramos la interfaz Fast CGI:

Creamos el script de inicio:

# vim /etc/init.d/php-fastcgi

Escribimos las siguientes lineas de código dentro del mismo:

#! /bin/sh
# Provides:          php-fastcgi
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start and stop php-cgi in external FASTCGI mode
# Description:       Start and stop php-cgi in external FASTCGI mode

# Author: Kurt Zankl <[EMAIL PROTECTED]>

# Do NOT "set -e"

DESC="php-cgi in external FASTCGI mode"

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
. /lib/init/

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

# If the daemon is not enabled, give the user a warning and then exit,
# unless we are stopping the daemon
if [ "$START" != "yes" -a "$1" != "stop" ]; then
        log_warning_msg "To enable $NAME, edit /etc/default/$NAME and set START=yes"
        exit 0

# Process configuration

        # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
                || return 1
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON \
                --background --make-pidfile --chuid $EXEC_AS_USER --startas $DAEMON -- \
                $DAEMON_ARGS \
                || return 2

        # Return
        #   0 if daemon has been stopped
        #   1 if daemon was already stopped
        #   2 if daemon could not be stopped
        #   other if a failure occurred
        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE > /dev/null # --name $DAEMON
        [ "$RETVAL" = 2 ] && return 2
        # Wait for children to finish too if this is a daemon that forks
        # and if the daemon is only ever run from this initscript.
        # If the above conditions are not satisfied then add some other code
        # that waits for the process to drop all resources that could be
        # needed by services started subsequently.  A last resort is to
        # sleep for some time.
        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
        [ "$?" = 2 ] && return 2
        # Many daemons don't delete their pidfiles when they exit.
        rm -f $PIDFILE
        return "$RETVAL"
case "$1" in
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        log_daemon_msg "Restarting $DESC" "$NAME"
        case "$?" in
                case "$?" in
                        0) log_end_msg 0 ;;
                        1) log_end_msg 1 ;; # Old process is still running
                        *) log_end_msg 1 ;; # Failed to start
                # Failed to stop
                log_end_msg 1
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
        exit 3

Le damos permisos de ejecución:

# chmod +x /etc/init.d/php-fastcgi

Ahora creamos el archivo de configuración:

# vim /etc/default/php-fastcgi

Y agregamos lo siguiente:


# Which user runs PHP? (default: www-data)


# Host and TCP port for FASTCGI-Listener (default: localhost:9000)


# Environment variables, which are processed by PHP


Agregamos la interfaz Fast CGI en el arranque del sistema:

# update-rc.d php-fastcgi defaults

6. Configuramos Nginx y el vhost por defecto:

# vim /etc/nginx/sites-available/default

En el virtual host por defecto cambiamos las lineas de código para que se vean así:

server_name localhost;
location ~ \.php$ {
	fastcgi_index  index.php;
	fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default$fastcgi_script_name;
	include fastcgi_params;

Reiniciamos el servidor:
# /etc/init.d/nginx restart

Por último agregamos el servidor web al arranque del sistema:
# update-rc.d nginx defaults


Una respuesta to “Configurar un servidor LEMP (Linux, Nginx, MySQL, PHP5)”

  1. […] The rest is here: Linux Blog on: Configurar un servidor LEMP (Linux, Nginx, MySQL, PHP5) […]


Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de

Estás comentando usando tu cuenta de Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: