Instalar servidor Lamp en Ubuntu 13.10

Hace un tiempo cree un tutorial de como instalar un completo servidor LAMP en Ubuntu.
Para aquel tiempo me soluciono el tema, pero tras la llegada de Ubuntu 13.10 las cosas no funcionaban.
Esto es debido a que esta versión de Ubuntu así como la última de Linux Mint vienen con Apache 2.4.6, la cual a hecho cambios significativos sobre todo en lo que respecta a la configuración.

Si bien el apunte anterior funciona, el mismo falla a la hora sobre todo de crear los Virtual Host.
Esto es debido a los cambios que mencionaba anteriormente.

También note que Drush da algunos inconvenientes, por tanto decidí hacer un nuevo apunte, el cual te paso a explicar.

Instalar Apache y Mysql en Ubuntu 13.10 y Mint 16

Hay varias formas de instalar Apache, pero yo sigo prefiriendo la siguiente:

Inicia la consola y pon:

sudo apt-get install tasksel -y

Una vez que finalice la descarga tenemos que ejecutar el siguiente comando

sudo tasksel

Esto nos abre en la terminal lo siguiente:

En Tasksel seleccionar Lamp Server

Con las flechas del cursos bajas hasta la opción que dice "LAMP server", con la barra de espacio seleccionar y luego con tabulador pasas a "Aceptar", con "Enter" confirmas.
Esto comienza la descarga de casi todos los paquetes necesarios.

Más adelante te solicita la contraseña de acceso a MySQL la cual tienes que ingresar dos veces.

Nos falta el cliente de MySQL el cual podemos instalar con:

sudo apt-get install mysql-client

Asegurar MySQL

En la consola pon el siguiente comando:

sudo mysql_secure_installation

Te pregunta la contraseña de acceso, es la utilizaste en el paso anterior.

1) Luego te dice si la quieres cambiar, en mi caso no así que pongo (n)

2) Remove anonymous users? ¿Quitar a los usuarios anónimos? (y)

3) Disallow root login remotly? ¿Des habilitar el acceso root remoto? (y)

4) Remove test database and access to it? ¿Remover la base de datos test y el acceso a la misma? (y)

5) Reload privilege tables now? ¿Recargar los privilegios de las tablas ahora? (y)

Optimizar MySQL para Drupal

Muchos me preguntan como hacer para que MySQL responda más rápido a las consultas efectuadas con Drupal, así es como yo lo hago.
Sin entrar en términos tecnológicos el secreto es que para que funcione mejor tienes que optar por el motor InnoDB y no por MyISAN que es el que viene por defecto.

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.
Si estas leyendo esto y no te interesa instalar Drupal no tienes porque hacerlo.

Para más comodidad vamos a trabajar como usuario Root, así que en la consola pon:

sudo su

Detiene el motor de la base de datos con:

service mysql stop

Los archivos que tenemos que borrar se encuentran en /var/lib/mysql
Los vamos a borrar así que es muy importante hacer una copia por si falla algo luego, en consola pon:

tar -zcf /home/tu usuario/Documentos/respaldo_mysql.tar.gz /var/lib/mysql/

Esto crea un archivo comprimido con todo el contenido del directorio /var/lib/mysql en el directorio "Documentos" de tu usuario.

Ahora desplázate hasta esa ubicación:

cd /var/lib/mysql

 
Tenemos que borrar todos los archivos que comienzan con ib, por tanto hacemos:

rm ib*

 
Ya podemos salir de la consola como super usuario, para ello lo hacemos con:

exit

 
Ahora nos vamos a encargar del archivo de configuración de MySQL, pero primero hacemos una copia de seguridad

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

 
Yo ya tengo mi archivo optimizado así que lo que vamos a hacer es editar el mismo y borrar todo el contenido, luego solo pega el siguiente contenido.

Lo editas haciendo:

sudo nano /etc/mysql/my.cnf

 
Luego borras todo el contenido del mismo, lo puedes hacer con Ctrl +K varias veces.
Copias este código y lo pegas con Shift + Insert

#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[client]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket          = /var/run/mysqld/mysqld.sock
nice            = 0

[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
#
# * Fine Tuning
#
max_allowed_packet = 128M
#key_buffer = 16M
#max_allowed_packet = 16M
#thread_stack = 192K
#thread_cache_size       = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover         = BACKUP
#max_connections        = 100
#table_cache            = 64
#thread_concurrency     = 10
#
# * Query Cache Configuration
#
#query_cache_limit = 1M
#query_cache_size   = 16M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file        = /var/log/mysql/mysql.log
#general_log             = 1
#
# Error log - should be very few entries.
#
log_error = /var/log/mysql/error.log
#
# Here you can see queries with especially long duration
#log_slow_queries       = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
#       other settings you may need to change.
#server-id              = 1
#log_bin                        = /var/log/mysql/mysql-bin.log
expire_logs_days        = 10
max_binlog_size         = 100M
#binlog_do_db           = include_database_name
#binlog_ignore_db       = include_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
#innodb_log_file_size = 64M
#innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 2
#innodb_lock_wait_timeout = 50
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#      
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem

[mysqldump]
quick
quote-names
max_allowed_packet      = 16M

[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

[isamchk]
key_buffer              = 16M
#
# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/

 
Ahora si podemos iniciar nuevamente el motor de MySQL con:

sudo service mysql start

 
Si te da error algo no has hecho bien.

Instalar las extras de PHP

Como el cometido es utilizar Drupal hay ciertas características que tiene que tener nuestro servidor, para ello instalamos los siguiente:

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

 
Al finalizar recargamos el servidor:

sudo /etc/init.d/apache2 restart

 

Ajustes especiales de Apache2

Tenemos que editar nuestro archivo php,ini y hacer las siguientes modificaciones, pero antes hacemos una copia.

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

 
Ahora si lo editamos con:

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

 
Los valores que tenemos que modificar son los siguientes:

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

 
Si utilizas PhpMyAdmin para importar las bases de datos y te muestra un valor máximo permitido para subir un archivo, el valor corresponde a "upload_max_filesize".

Instalar PhpMyAdmin

Ya que estamos hablando de PhpMyAdmin vamos a instalarlo con:

sudo apt-get install phpmyadmin

 

Seleccionar Apache2

Tienes que seleccionar Apache2 de las opciones, lo haces con las flechas del cursor y con la barra de espacio seleccionas.

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

Te pregunta la contraseña de acceso a MySQL y luego la contraseña propia de PhpMyAdmin, puedes dejar la misma que utilizas en MySQL.

Habilitar Upload Progress

Upload Progess Upload te permite tener una barra de progreso a medida que se suben los archivos a tu sitio Drupal, si quieres habilitarlo solo haz:

sudo pecl install uploadprogress

 
Luego tienes que editar nuevamente el archivo php.ini y poner lo siguiente:

extension=uploadprogress.so

 
Donde dice extension=modulename.extension

Reinicia el servidor.

Creando el Virtual Host con Apache 2.4.6

Para mayor comodidad vamos a cambiar nuestro directorio de trabajo que de momento es var/www a /home/tu usuario/www ya que es más fácil.
Este paso es totalmente opcional, pero te ahorra todo el tema de los permisos al momento de descargar módulos, temas, etc.
El directorio que yo llamo www no tiene por que ser este, tu le puedes poner el nombre y/o la ruta que quieras.

Nos desplazamos hasta la siguiente ruta

cd /etc/apache2/sites-available

 
Habilitamos las url's amigables con:

sudo a2enmod rewrite

 
Esto es importante, yo quiero que mi Virtual Host se llame "server", tu puedes poner el nombre que quieras, solo recuerda sustituir server por el tuyo.

sudo cp 000-default.conf server.conf

 
Editamos el nuevo archivo

sudo nano server.conf

 
Y tenemos que hacer los siguientes cambios

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

 

Configuración del Virtual Host

Como puedes ver tanto la ruta de DocumentRoot como el ServerName tienes que modificar por tus valores.

Ahora tenemos que Apache2 reconozca nuestro nuevo Virtual Host, lo hacemos con:

sudo a2ensite server

 
Recuerda cambiar "server" por el nombre que tu le hayas asignado.

Reiniciamos Apache2 nuevamente.

Agregar el nombre del Virtual Host

Para poder poner en la barra del navegador el nombre que le hayas dado y lo reconozca tienes que editar el siguiente archivo:

sudo nano /etc/hosts

 
En la primera línea dice:

127.0.0.1 localhost

 
Recuerda que mi nombre es server, así que lo dejo de la siguiente manera:

127.0.0.1 localhost server

 
Guardamos el archivo y listo.

Instalar Drush

Antes de instalar Drush necesitamos tener instalado ImageMagick y PEAR.

Puedes instalar Drush vía:

sudo apt-get install drush

 
El problema es que no te instala la última versión de Drush.

Así que vamos a valernos de PEAR para tener una versión más actualizado, sobre todo si luego quieres trabajar con Omega 4.0

Instalar ImageMagick

En consola pon:

sudo apt-get install libmagickwand-dev libmagickcore-dev imagemagick

 

Tenemos que agregar "imagick.so" a nuestro archivo php.ini, una manera de hacerlo sin tener que editar el mismo es con este comando:

sudo echo extension=imagick.so /etc/php5/apache2/php.ini

 

Reinicia nuevamente Apache2 con:

Instalar PEAR

PEAR nos va a permitir instalar Drush, así que primero tenemos que tenerlo instalado, lo hacemos con:

sudo apt-get install php-pear
sudo pear upgrade --force pear
sudo pear upgrade --force Console_Getop Console_Table
sudo pear upgrade-all
sudo pear channel-discover pear.drush.org
sudo pear install drush/drush

Ya tenemos Drush instalado pero todavía nos queda algo más para hacer.

Si ejecutas el comando drush status veras que te muestra un error, el cual es el siguiente:

"The following restricted PHP modes have non-empty values: disable_functions.
This configuration is incompatible with drush.
Please check your configuration settings in /etc/php5/cli/php.ini..."

Nos está dando un error en la configuración la cual no es compatible con Drush, para solucionar este problema tenemos que editar el siguiente archivo:

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

 
Aquí buscamos la línea que dice:

disable_functions =

 
Lo que tenemos que hacer es borrar todo lo que está a continuación del signo de =, quedando solo "disable_functions ="

Guardamos el archivo.

Borra el directorio de Drush que se crea durante la instalación para que no te de luego problemas de permisos.

sudo rm -Rf ~/.drush

 
Reiniciamos el servidor con:

sudo /etc/init.d/apache2 restart

 
Recuerda crear en tu directorio de usuario el directorio de trabajo, yo en mi caso lo llamé www

mkdir ~/www

 
En consola navegamos hasta esa ruta

cd ~/www

 

Descargar Drupal vía Drush

Ahora que estamos en nuestro directorio de trabajo vamos a descargar la última versión de Drupal por medio de Drush.

drush dl --drupal-project-rename=sitio1

 
Esto lo que hace es descargar la última versión de Drupal y cambiarle el nombre a lo que sea que pongas a continuación de rename=

Una vez descargado tenemos que ingresar por consola a nuestro nuevo sitio.

cd sitio1

 

Instalar Drupal vía Drush

Para comenzar la instalación tenemos que hacer lo siguiente:

drush si --db-url=mysql://root:root@localhost:3306/nombre_de_la_base --account-name=drupal --account-pass=drupal --account-mail=me@localhost.com --site-mail=me@localhost.com --site-name="El nombre del sitio" -y

 
Donde root:root no es más que el nombre de usuario y luego la contraseña de acceso a MySQL, en mi caso es root las dos veces.
nombre_de_la_base es el nombre que le quieras dar a tu nueva base de datos
Las opciones account-name y account-pass no es más que el nombre de usuario y la contraseña de acceso a tu nuevo sitio.

Una vez terminado la instalación tenemos que modificar los permisos del directorio files para poder trabajar.

chmod a+w -R sites/default/files

 
Con esto tenemos listo nuestro servidor, el cual hemos descargado los distintos componentes de un servidor, hemos configurado Apache2 y MySQL, creado el Virtual Host y hasta instalado Drush.

Errores con los que me he encontrado

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in lock_may_be_available()...

Me di cuenta que MySQL corre bastante lento a pesar de los valores que antes he puesto.
Para solucionarlo hay que editar el archivo php.ini
Luego buscar lo siguiente:

pdo_mysql.default_socket=

Hay que poner luego del signo de igual lo siguiente: /var/run/mysqld/mysqld.sock, quedando entonces así:

pdo_mysql.default_socket= /var/run/mysqld/mysqld.sock

 

Esta ruta la encuentras en tu archivo my.ini
Recordar reiniciar el servidor.

[core:notice] [pid 20818] AH0052: child pid 5068 exit signal Segmentation fault (11)

Cuando vi este error quede sorprendido ya que nunca me había dado un error así, pero se soluciona de la siguiente manera.

Edita el archivo php.ini y busca por output_buffering.
Modifica el valor del mismo de 4096 a 8192, quedando de la siguiente manera:

output_buffering = 8192

 

Comandos útiles

Yo utilizo el editor "Nano" porque me resulta muy cómodo, tu puedes utilizar "Vi" o incluso "Gedit", pero los comandos a continuación son solo para Nano.

Ctrl + W = Busca en el archivo
Ctrl + O = Guarda los cambios pero pregunta primero el nuevo nombre
F2  = Guarda los cambios sin preguntar el nuevo nombre
Ctrl + X = Para salir de Nano
Ctrl + C = Para cancelar
Shift + Insert = Pega lo tengas en la memoria
Ctrl + K = Borra la línea actual

 

Comandos útiles para Apache2

Reiniciar Apache2
sudo /etc/init.d/apache2 restart

Recargar Apache2
sudo /etc/init.d/apache2 reload

También
sudo service apache restart
sudo service apache2 reload

Detener Apache2
sudo service apache2 stop
o
sudo /etc/init.d/apache2 stop

Lo mismo para iniciar Apache2

sudo service apache2 start
o
sudo /etc/init.d/apache2 start

Ver el registro de errores de Apache2
sudo tail -f /var/log/apache2/error.log

La opción (-f) hace que se muestre en el momento el informe.

Se sale del mismo son Ctrl +c

Calificar: 
5

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