Cómo instalar LEMP en Ubuntu 15.10 — Linux nginx MySQL PHP

Instalación de nginx

Ligero, estable, buena arquitectura, rápido para servir contenido estático.

Aquí la guía para instalar nginx en Ubuntu:

nginx=development # usa nginx=stable para la versión estable
sudo add-apt-repository ppa:nginx/$nginx
sudo apt-get update
sudo apt-get install nginx

Al momento de escribir este artículo nginx -v reporta:

nginx version: nginx/1.7.11

Inicia el servidor

sudo service nginx start

Ahora en tu navegador ve hacia: http://localhost

Deberías ver algo como esto:

Welcome to nginx on Debian!

Siguiente, MySQL.

Instalación de MySQL

sudo apt-get install mysql-server mysql-client libmysqlclient-dev

Prueba si todo funciona bien:

mysql -uroot -pxxx

Donde xxx es la contraseña que especificaste durante la instalación de MySQL.

Para cambiar la contraseña de la cuenta root, ejecuta el siguiente comando después de ingresar a MySQL:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yyy');

Sustituye yyy por la nueva contraseña.

Si en algún momento necesitas resetear la contraseña del root del servidor MySQL, ejecuta el siguiente comando:

sudo dpkg-reconfigure mysql-server-5.5

Puede que la versión cambie, si es así, puedes ver información sobre el paquete mysql-server con:

dpkg -s mysql-server

Mejorando la seguridad

Ejecuta el siguiente comando y contesta a todas las preguntas:

mysql_secure_installation

Listo, vamos por PHP.

Instalación de PHP

Necesito PHP para algunos sitios que utilizan WordPress y los foros de Simple Machines.

Así que, si hay que instalar PHP, hay que hacerlo con lo mejor: PHP-FPM

Sin más, dale:

sudo apt-get install php5-fpm

Establece algunos valores sanos para nginx en:

sudo nano /etc/nginx/nginx.conf

Y cambia:

keepalive_timeout 65;

Por:

keepalive_timeout 5;

Esto le indica a nginx que corte cualquier petición hecha por algún cliente que dilate más de 5 segundos.

Configura nginx para que pueda servir archivos .php, modifica:

sudo nano /etc/nginx/sites-available/default

Y asegúrate de que estas líneas se vean así:

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
        root /usr/share/nginx/html;
}
 
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ .php$ {
        try_files $uri =404;
        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
 
        # With php5-cgi alone:
        #fastcgi_pass 127.0.0.1:9000;
        # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
}
 
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /.ht {
        deny all;
}

Reinicia nginx para que los cambios en la configuración surtan efecto:

sudo service nginx restart

Lectura recomendada: Nginx Pitfalls

Mejorando la seguridad

Elimina un hueco de seguridad que se presenta en la configuración por defecto de nginx con php, sólo necesitas modificar una línea en php.ini:

sudo nano /etc/php5/fpm/php.ini

Aségurate de quitar el punto y coma del frente de la línea y cambiar el 1 por un 0, de tal manera que luzca así (el número de línea es 765 aprox):

cgi.fix_pathinfo=0

Reinicia php-fpm con:

sudo service php5-fpm restart

Comunicación por medio de un socket UNIX

Normalmente, PHP-FPM escucha en el puerto 9000 en 127.0.0.1.
Dado que php-fpm y nginx están en la misma máquina, se puede mejorar el rendimiento si se comunican a través de un socket UNIX en vez de usar TCP.
Get High Performance PHP-FPM with socket connections

Para indicarle a php-fpm que escuche en un socket UNIX en lugar de uno TCP, modifica:

sudo nano /etc/php5/fpm/pool.d/www.conf

Y asegúrate de que aparezcan las siguientes líneas (en este caso, el punto y coma se utiliza para comentar):

;listen = 127.0.0.1:9000
listen = /var/run/php5-fpm.sock
...
listen.owner = www-data
listen.group = www-data
listen.mode = 0666

Reinicia php-fpm con:

sudo service php5-fpm restart

Ahora, para probar que PHP está funcionando perfectamente a través de nginx, crea un archivo de ejemplo:

sudo nano /usr/share/nginx/html/info.php

Y ponle este contenido:

  1. <?php 
  2.   phpinfo();
  3. ?>

Guarda el archivo y en tu navegador ve a: http://localhost/info.php

Debes ver una página con información sobre PHP.

Instala soporte para MySQL

sudo apt-get install php5-mysql

Reinicia php-fpm:

sudo service php5-fpm restart

Instala Xcache

Xcache cachea y optimiza código intermedio PHP. En pocas palabras es bueno para tu servidor, ya que acelera la generación de tus páginas PHP.

sudo apt-get install php5-xcache

Reinicia php-fpm:

sudo service php5-fpm restart

Más extensiones para PHP

Puedes encontrar más extensiones listas para instalar con el comando:

apt-cache search php5

Ejemplos:

php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Permitir uploads de archivos grandes

A veces requieres subir archivos grandes a tu sitio, ya sea para importar algún respaldo, video, audio, etc. Desgraciadamente la configuración que trae por defecto nginx y PHP sólo permite recibir cómo máximo archivos de 1MB y 2MB respectivamente.

A continuación se muestra como incrementar este límite.

Del lado de nginx

sudo nano /etc/nginx/nginx.conf

Dentro de la sección http ingresa el client_max_body_size deseado:

http {
        ...
        client_max_body_size 8m;
...

Reinicia nginx:

sudo service nginx restart

Del lado de PHP

sudo nano /etc/php5/fpm/php.ini

Estas son las líneas que te interesan:

post_max_size = 8M
...
upload_max_filesize = 8M

Reinicia php-fpm:

sudo service php5-fpm restart

¡Listo!

Referencias

Installing Nginx With PHP5 (And PHP-FPM) And MySQL Support (LEMP) On Ubuntu 12.04 LTS
Setting up nginx maximum upload size

goedkope energie

Cómo instalar LAMP en Ubuntu 15.10

En estos días recomiendo instalar un LEMP en vez de un LAMP.
Checa esta guía: Cómo instalar LEMP en Ubuntu — Linux nginx MySQL PHP

Instalar LAMP (Linux Apache MySQL PHP) en tu máquina Ubuntu no podría ser más fácil.

Con esta guía aprenderás cómo hacerlo en unos cuantos minutos.

El procedimiento se divide en tres partes: Instalar y probar Apache, después dar soporte para PHP y finalmente instalar el manejador de base de datos MySQL.

Comencemos con Apache

Abre una terminal y teclea:

sudo apt-get install apache2

Listo, ya tienes instalado Apache 2 en tu máquina.

Después de la instalación el servidor web será iniciado automáticamente, si necesitas iniciarlo de manera manual teclea esto en tu terminal:

sudo service apache2 start

Si por alguna razón necesitas detener el servicio, escribe en tu terminal:

sudo service apache2 stop
El directorio donde se almacenan tus documentos web es: /var/www

Si todo resultó bien, debes ver una página web ordinaria al escribir http://localhost en tu navegador.

Hemos terminado con Apache, ahora a la conquista de PHP

Escribe en tu terminal:

sudo apt-get install php5 libapache2-mod-php5 php5-cli php5-mysql

Reinicia Apache con:

sudo service apache2 restart

Terminamos con PHP. 😀

Para probar que se haya instalado correctamente vamos a crear un script en PHP. Escribe en tu terminal:

sudo gedit /var/www/test.php

Ponle este contenido y guárdalo:

  1. <?php
  2.     phpinfo();
  3. ?>

Para ejecutar el script ve a esta dirección: http://localhost/test.php — debes ver una página con información sobre tu instalación de PHP.

66% concluido, continuemos con MySQL

De nuevo, escribe en tu terminal:

sudo apt-get install mysql-server mysql-client libmysqlclient-dev
Durante el proceso de instalación te pedirá que asignes la contraseña al usuario root de MySQL.

Probemos si todo funciona correctamente:

mysql -uroot -pxxx

Donde xxx es la contraseña que ingresaste durante la instalación de MySQL.

Si deseas cambiar la contraseña de la cuenta root, ejecuta el siguiente comando después de ingresar a MySQL:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yyy');

Sustituye yyy por tu nueva contraseña.

Acceso remoto a la base de datos

Si quieres acceder a MySQL por medio de scripts remotos (es decir, no albergados en tu propio servidor) debes editar el bind-address en /etc/mysql/my.cnf y reemplazar el valor que trae por defecto (127.0.0.1) por tu dirección IP.

Si hiciste algún cambio en my.cnf reinicia MySQL con:

sudo service mysql restart

Felicidades, tu sistema LAMP está instalado y listo para utilizarse. 🙂

Misceláneos

phpMyAdmin

phpMyAdmin es un administrador gráfico para MySQL, yo lo uso usaba con frecuencia. Para instalarlo teclea en tu terminal:

sudo apt-get install phpmyadmin

Para acceder a él visita: http://localhost/phpmyadmin

No olvides presionar la barra espaciadora en la pantalla de configuración para seleccionar a Apache2 como el servidor web que deseamos configurar automáticamente.

Si no puedes acceder al phpmyadmin (como algunos usuarios han mencionado en los comentarios), intenta crear un enlace simbólico en la carpeta www, así:

sudo ln -s /usr/share/phpmyadmin /var/www/

gd library

Si deseas soporte para generación y manipulación de gráficos en PHP, escribe en tu terminal:

sudo apt-get install php5-gd

SSL en Apache 2

Para activar el módulo SSL (Secure Socket Layer) en Apache 2, ingresa en tu terminal:

sudo a2enmod ssl

Reinicia Apache con:

sudo /etc/init.d/apache2 restart

Referencia

Installing LAMP on Ubuntu 7.10 (Linux,Apache,MySQL,PHP)

Un problema con MySQL 5.0

[singlepic=668,140,,,left]

Recuerdo que hace tiempo tuve un problema en Ubuntu Server, el MySQL no se podía detener.

Después de escribir el comando:
sudo /etc/init.d/mysql stop

Se quedaba trabado en:
* Stopping MySQL database server mysqld

Y de ahí no salía.

  1. sudo apt-get remove mysql-server-5.0

Tampoco ofrecía remedio.

Al parecer había un problema en un directorio, porque al tratar de respaldar las bases de datos con una simple copia el comando cp se quedaba trabado también.

Siendo una base de datos de desarrollo, no había mucho que respaldar realmente, así que eliminé el directorio de los datos y santo remedio.

El problema fue causado por un apagón en la oficina. Me pregunto que hubiera pasado si este error hubiese ocurrido en una aplicación en producción…

Cómo instalar LAMP en Ubuntu 8.04

[singlepic=485,80,,,left]

Instalar LAMP (Linux Apache MySQL PHP) en tu máquina con Ubuntu no podría ser más fácil.

Con esta guía aprenderás cómo hacerlo en unos cuantos minutos. El procedimiento se divide en tres partes: Instalar y probar Apache, después dar soporte para PHP y finalmente instalar el manejador de base de datos MySQL.

Comencemos con Apache

En tu terminal (Aplicaciones → Accesorios → Terminal) teclea:

  1. sudo apt-get install apache2

Listo, ya tienes instalado Apache 2 en tu máquina.

Continuar leyendo “Cómo instalar LAMP en Ubuntu 8.04”

Aztlan está de regreso

[singlepic=33,50,,,left]

Al fin pude terminar el mantenimiento del nuevo sitio de Aztlan, tuve unos problemas con la base de datos debido a una bronca con el codificado de algunos caracteres especiales.

Por si a alguien le sirve el tip, después de importar el contenido de la base de datos, en lugar de tener caracteres acentuados veía unos muy raros:

Adrián → Adrián
¿Cómo hago...? → ¿Cómo hago...?

¿La solución? agregar un parámetro extra a la hora de importar los datos:

[sourcecode language=”css”]
mysql -u user -ppassword databasename –default_character_set utf8 < databasedump.sql [/sourcecode]

Con esa línea se le indica a MySQL que la codificación de los caracteres está en UTF8.

Visita el nuevo sitio de Aztlan RPG.