Como instalar un servidor LAMP en Ubuntu 14.04

La nueva versión de Ubuntu 14.04 aparte de traer algunas novedades tal vez su rasgo más importante es que LTS osea de soporte extendido.
Es la versión que se puede utilizar por unos años y que seguirá contando con soporte por parte de Canonical.
Este es muy importante por varios motivos pero quizás el más importante para los que nos encargamos del desarrollo de sitios dinámicos es que nos aseguramos así la continuidad en el tiempo.
Por tanto nos podemos centrar en nuestro trabajo y no pasar por las experiencias de volver a configurar todo cada poco tiempo.
Por tanto el siguiente material te explico como poder instalar un completo servidor LAMPP en Ubuntu 14.04 Trusty Tahr.
Para esta versión y al día de hoy cuenta con las siguientes versiones:

Apache2 versión 2.4.7
PHP 5.5.9
MySQL 5.5.35

Esto quiere decir que no solamente puedes trabajar con Drupal 7 sino que también ya cuenta con las versiones recomendadas para Drupal 8.

El proceso es bastante similar a otros materiales que he creado, la única salvedad es al momento de crear los Virtul Host los cuales cambian con la versión 2.4.6 de Apache, por lo demás es todo igual.

Instalar Apache2 en Ubuntu 14.04

Es muy sencillo instalar Apache en Ubuntu, tan solo tienes que hacer:

sudo apt-get install apache2 -y

Esto descarga y habilita Apache listo para usar.

Instalar Mysql en Ubuntu 14.04

Para instalar el motor de base de datos por defecto en Ubuntu el cual sigue siendo MySQL tienes que hacer:

sudo apt-get install mysql-server mysql-client

Te aparece ahora la opción de ingresar la contraseña del usuario root para mayor seguridad

Ingresar la contraseña en MySQL

Para mayor seguridad te pregunta dos veces la nueva contraseña.

También si lo deseas puedes instalar MySQL Workbench.
MySQL Workbench es la herramienta oficial de Oracle para crear y diseñar tus bases de datos.
Si quieres instalarlo puedes hacer:

sudo apt-get install mysql-workbench

 

Asegurar MySQL

Para asegurar Mysql lo puedes hacer mediante su asistente, tan solo corre el siguiente comando en la consola:

sudo mysql_secure_installation

 

Asegurar MySQL

Si has creado una contraseña al momento de instalar MySQL es la que tienes que poner a continuación.
Esto inicia el asistente el cual te hace las siguientes preguntas, las cuales tenemos que responder con si (Y) o no (n):

  • Change the root password? [Y/n] = ¿Cambiar la contraseña root? [Y/n] n
  • Remove anonymous users? [Y/n] = ¿Quitar a los usuarios anónimos? Y
  • Disallow root login remotely? [Y/n] = ¿Prohibir el login remoto del root?
  • Remove test database and access to it? [Y/n] ¿Quitar la base test y su acceso? Y
  • Reload privilege tables now? [Y/n] = ¿Re cargar los privilegios? Y

Por supuesto que tu puedes optar por las respuestas como lo desees, yo solo te muestro mis opciones.

Configurar y optimizar MySQL para Drupal 7

Si estas leyendo esta página y no te interesa instalar Drupal no tienes que hacer esto.
Aquí es donde la cosa se complica un poco.

Aquí el motivo, MySQL por defecto viene con el motor MyISAM.

Drupal esta optimizada para el motor de bases de datos InnoDB, no voy a entrar en comparaciones pero si quieres que Drupal corra más fluido esto son los pasos que tienes que hacer:

Es muy importante que hagas una copia de seguridad antes, ya que te puedes cargar todo.
Si ya tienes base de datos tienes que exportarlas y luego de terminar volver a importarlas porque de lo contrario no te van a funcionar.
Es siempre aconsejable hacer esto con la instalación en limpio de Ubuntu.

Primero ingresa en consola como usuario Root, lo haces con:

sudo su

Ahora detén el servidor MySQL con:

service mysql stop

Crea una copia de seguridad de tus archivos, en caso de que salga mal puedes volver atrás.
Estos se encuentra en /var/lib/mysql y utilizan MyISAM.

tar czf /home/usuario/Documentos/respaldo_mysql.tar.gz /var/lib/mysql

Remplaza usuario por tu nombre de usuario correspondiente.

Esto te crea en el directorio Documentos un archivo comprimido con los original de Mysql.
Si sale mal, descomprime este archivo y automáticamente se remplaza por los originales.

Ahora nos desplazamos hasta /var/lib/mysql y procedemos a borrar todos los archivos que tengan ib:

cd /var/lib/mysql
rm ib*

Esto borra los archivos ib_logfile0 ib_logfile1 y ibdata1

Ya podemos salir de la consola como super usuario.

exit

 

Ajustar Mysql en Ubuntu para Drupal

Ahora tenemos que decirle a MySQL que utilice InnoDB y ya de paso vamos a modificar algunos ajustes para incrementar el rendimiento.

Como siempre comenzamos por crear una copia de seguridad del archivo de configuración de MySQL.

El mismo se encuentra en /etc/mysql y se llama my.cnf.

sudo cp /etc/mysql/my.cnf /etc/mysql/my.cnf_original

Esto crea un nuevo archivo llamado my.cnf_original, si sale mal solo tenemos que restaurarlo con:

sudo cp /etc/mysql/my.cnf_original /etc/mysql/my.cnf

 

Para editar el archivo lo puedes hacer vía nano o vía Gedit, yo utilizo nano.

sudo nano /etc/mysql/my.cnf
#Comandos nano útiles:
#Ctrl+w busca en el archivo
#Ctrl+F2 guarda los cambios
#Ctrl+x sale del editor
#Ctrl+o guarda los cambios
#Ctrl+e te lleva al final de la línea
#Ctrl+a te lleva al comienzo

Este es mi ajuste para Mysql:

Ahora ya podemos iniciar nuevamente el motor de bases de datos MySQL pero esta vez com InnoDB.

sudo service mysql start

Instalar PHP

Ahora que ya pasamos lo más difícil vamos a instalar PHP en Ubuntu, para ello hacemos:

sudo apt-get install php5 -y

Si deseas buscar más paquetes para PHP puedes hacer:

sudo apt-cache search php

Como yo lo estoy explicando para Drupal voy a instalar los suguientes:

sudo apt-get install php5-curl php-pear php5-imagick php5-imap php5-mcrypt libssh2-php php5-dev php5-gd php5-mcrypt -y

Por supuesto que tu puedes instalar los que consideres necesarios.

Ahora tenemos que reiniciar el servidor para que los cambios surjan efecto, lo hacemos con:

sudo /etc/init.d/apache2 restart

Ajustar Apache2

Así como hicimos con MySQL podemos también optimizar PHP en nuestro Ubuntu para sacar mejor desempeño a nuestro servidor.
Pero primero vamos a hacer una copia del archivo de configuración de PHP.

Este archivo se encuentra en /etc/php5/apache2 y se llama php.ini.

sudo cp /etc/php5/apache2/php.ini /etc/php5/apache2/php.ini_original

Lo importante en este paso es cambiar los siguientes valores:

  • realpath_cache_ttl
  • max_execution_time
  • max_input_time
  • memory_limit
  • post_max_size
  • upload_max_filesize
  • default_socket_timeout

Por en mi caso:

  • realpath_cache_ttl = 36000
  • max_execution_time = 300
  • max_input_time = 60
  • memory_limit = 256M
  • post_max_size = 128M
  • upload_max_filesize = 256M
  • default_socket_timeout = 60

Por supuesto que tu puedes modificar estos valores a tus necesidades.

Una vez hechas las modificaciones tenemos que reiniciar Apache2

Instalar phpMyAdmin

Una forma muy útil de manejar nuestras bases de datos es por medio de phpMyAdmin, con el cual podemos crear, eliminar, subir y exportar bases de datos entre otros.

Lo instalamos con:

sudo apt-get install phpmyadmin

Instalar PHPMYADMIN

Seleccionamos la opción apache2 con la barra espaciadora, luego con tabulador nos desplazamos hasta "Aceptar" y damos enter.

Luego tienes que dejar la opción por defecto, que es "dbconfig_common", enter.

Seleccionar dbconfig_common

Te pregunta la contraseña de acceso a MySQL (la que usaste cuando instalamos MySQL) y luego la contraseña propia de PhpMyAdmin, puedes dejar la misma que utilizas en MySQL.
Esta última (la de phpMyAdmin) te la pregunta dos veces por seguridad.

Ingresar la contraseña de PHPMYADMIN

No hay problema por utilizar la misma contraseña para MySQL y phpMyAdmin.

Habilitar Upload Progress en Ubuntu

Esto es opcional y no tienes que hacerlo si no vas a utilizar Drupal.

Pero si quieres habilitar el progreso de subida ese que te informa Drupal en tus informes del sitio y que dice "Su servidor es capaz de mostrar progreso de subida de archivo, pero no tiene las bibliotecas necesarias...", esto es lo que tienes que hacer:

sudo pecl install uploadprogress

Esto es si has seguido este tutorial, de lo contrarío tienes que instalar antes lo siguiente:

sudo apt-get install php-pear
sudo apt-get install php5-dev

Ahora procedemos a editar el archivo php.ini nuevamente y ponemos lo siguiente:

extension=uploadprogress.so

Yo lo pongo luego de extension=modulename.extension, al final de este artículo te dejo mi archivo php.ini final.

Habilitar Upload Progress en Ubuntu

Habilitar las URL's amigables en Ubuntu

Lo hacemos con el siguiente comando:

sudo a2enmod rewrite

No te olvides de volver a reiniciar el servidor...

Crear un Virtual Host en Apache2 versión 2.4.6

Como te comentaba al principio este es uno de los cambios al momento de instalar y configurar un servidor LAMPP en Ubuntu.
Las versiones anteriores de Ubuntu vienen con una versión de Apache que no tuvo cambios en los Virtual Host.
En cambio Ubuntu a partir de la versión 13.10 ya cuenta con la versión de Apache 2.4.6, de hecho Ubuntu 14.04 cuenta con la versión 2.4.7 de Apache.
Esto es lo que tienes que hacer para crear un Virtual Host en Ubuntu 14.04 con Apache 2.4.6 o 2.4.7:

Yo voy a crear un directorio dentro de /home/mi usuario/ llamado www, el nombre es irrelevante siempre y cuando luego hagas los cambios necesarios.
Esto es porque así es más cómodo trabajar ya que no es tan estricto con los permisos.

mkdir ~/www

Por tanto de ahora en más todos mis sitios van a estar dentro de /home/usuario/www en vez de /var/www

Para definir el Virtual Host tenemos que utilizar el archivo que ya viene con la instalación y que se encuentra en /etc/apache2/sites-available y el mismo se llama 000-default.conf.

Primero hacemos una copia de seguridad del mismo:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/000-default.conf_original

Ahora vamos a crear nuestro Virtual Host:

cd /etc/apache2/sites-available/
cp 000-default.conf server.net.conf

Como puedes notar mi Virtual Host se va a llamar server.net

Ahora lo editamos y ponemos:

sudo nano server.conf

Aquí esta el mío:

Creando el Virtual Host

ServerName server.net
ServerAdmin webmaster@localhost
DocumentRoot /home/charly/www
<Directory />
Options All
AllowOverride All
Require all granted
</Directory>

 

Le indico el nombre con "ServerName" y la ruta con "DocumentRoot", las demás opciones son para que se habiliten las URL's amigables, recuerda cambiar los valores por los tuyos.

Ahora tenemos que agregar nuestro Virtual Host a los sitios activos, los que se encuentran en /etc/apache2/sites-enabled, lo hacemos con:

sudo a2ensite server.net

Reinicia el servidor.

Agregar nuestro Virtual Host como dominio

Si quieres ingresar a tu servidor por un dominio ficticio en vez de localhost lo que tienes que hacer es editar el archivo hosts y poner el nombre:

sudo nano /etc/hosts

Configurar el dominio del Virtual Host

Demás esta decir que esto solo te sirve para local...

Esto es todo, ahora tienes un potente, completo y personalizado servidor LAMPP corriendo en Ubuntu 14.04

Calificar: 
4

Comentarios

Muy buen tema. No me queda claro este coamndo: sudo a2enmod rewrite , antes había que modificar el archivo .conf y cambiar todos los "none" por "all" , veo que de igual forma aquí se agrega al final en el AllowOverrirte
Imagen de charly

Es verdad David, pero en la nueva versión de Apache ya no se necesita hacer esto. Ahora se hace de esta manera, son las cosas del software...

Instalación de uploadprogress La instalación de uploadprogress falla dando el error: "could not extract the package.xml file from ....." Saludos
Imagen de charly

Púes a mi esta instalación me funciona sin problemas. Probado ayer que justo instale un servidor en la maquina de un amigo con Ubuntu 14.04. Salu2.
Imagen de makokis

¡chapeau Charly!

Buenas, primero de todo agradecer a Charly por el sitio que para mi es muy útil. Bien , me gustaría mostraros un error que me impide completar la instalación de Drupal en un servidor remoto ubuntu a ver si alguien me puede dar pistas de como solventarlo. En principio he seguido todos los pasos de este manual i además he añadido drush. Muchas gracias. Una vez hecho me sale el siguiente error : solventardelgadov@vps92084:~/tecnicstic$ drush status PHP Fatal error: Call to undefined function field_attach_load() in /home/delgadov/tecnicstic/includes/entity.inc on line 316 Drush command terminated abnormally due to an unrecoverable error. [error] Error: Call to undefined function field_attach_load() in /home/delgadov/tecnicstic/includes/entity.inc, line 316 Drush was not able to start (bootstrap) Drupal. [error] Hint: This error can only occur once the database connection has already been successfully initiated, therefore this error generally points to a site configuration issue, and not a problem connecting to the database. Drush was attempting to connect to: Drupal version : 7.31 Site URI : http://default Database driver : mysql Database username : delgadov Database name : tecnicstic Database : Connected Default theme : bartik Administration theme : bartik PHP executable : /usr/bin/php PHP configuration : /etc/php5/cli/php.ini PHP OS : Linux Drush version : 6.2.0 Drush configuration : Drush alias files : Drupal root : /home/delgadov/tecnicstic Site path : sites/default File directory path : sites/default/files Temporary file directory path : /tmp
Imagen de charly

Hola Vicens. Como tienes configurado tu archivo settings.php? Sobre todo esta parte: $databases = array ( 'default' => array ( 'default' => array ( 'database' => 'sitio1', 'username' => 'root', 'password' => 'root', 'host' => 'localhost', 'port' => '', 'driver' => 'mysql', 'prefix' => '', ), ), ); Omite tus datos de nombre de usuario, contraseña y base de datos.

Asi és como lo tengo: * Database configuration format: * @code * $databases['default']['default'] = array( * 'driver' => 'mysql', * 'database' => 'databasename', * 'username' => 'username', * 'password' => 'password', * 'host' => 'localhost', * 'prefix' => '', * ); * $databases['default']['default'] = array( * 'driver' => 'pgsql', * 'database' => 'databasename', * 'username' => 'username', * 'password' => 'password', * 'host' => 'localhost', * 'prefix' => '', * ); * $databases['default']['default'] = array( * 'driver' => 'sqlite', * 'database' => '/path/to/databasefilename', * ); * @endcode */ $databases = array(); Diria que ya viene omitido
Imagen de charly

Tienes que tenerlo así:

Premium

Landing Page con Bootstrap

Landing Page con Bootstrap y Gulp

En Youtube

Suscríbete a mi canal

Suscríbete a las noticias

* requerido

Inicio de sesión

Recursos