Instalación de un entorno LAMP en Debian y derivados

En este tutorial se explicará cómo instalar un entorno de desarrollo LAMP. Pero, ¿Qué es eso de LAMP? LAMP es la abreviatura de Linux+Apache2+PHP5+MySQL, o sea, un ambiente para escribir scripts, mantener o montar sitios hechos o escritos en PHP con MySQL sobre un server Apache.

Metiendo las manos en el asunto…

Instalamos Apache2

server@host:# apt-get install apache2 apache2-doc

Uso básico de Apache:

server@host:# /etc/init.d/apache2 {start|stop|restart|reload|force-reload}

Ahora bien, ¿cómo decirle a Apache2 que use los módulos que le instalamos?

Editando /etc/apache2/apache2.conf y añadiendo:

<IfModule dir_module>
DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl index.xhtml
</IfModule>

Añadir módulos:

Se pueden encontrar en /usr/lib/apache2/modules/

Por ejemplo: Mod_Rewrite sobrescribe las URL para que sean más amigables al usuario.

Añadir en /etc/apache2/apache2.conf:

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

Una forma más elegante puede ser, desde la terminal de comandos habilitarlo con el siguiente comando:

server@host:# a2enmod rewrite

Y después reiniciar Apache:

server@host:# /etc/init.d/apache2 restart

Instalación/Configuración de PHP5

server@host:# apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-json php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Algunos cambios a PHP 5

En /etc/php5/apache2/php.ini:

Subir archivos al server [tamaño]:

upload_max_filesize = 8M

Uso de la memoria:

memory_limit = 32M

Subir archivos, método POST:

post_max_size = 8M

Iniciar, reiniciar PHP 5?

PHP 5 corre en el sistema como módulo de Apache2, así que, si hacemos alguna configuración en PHP5 solamente con reiniciar Apache se aplican los cambios realizados.

Instalación/Configuración de MySQL

server@host:# apt-get install mysql-server

En la instalación se le pedirá el password para el usuario root de MySQL, por cuestiones de seguridad, trate de que sea distinto del password de root del sistema.

Uso básico de MySQL:

server@host:# /etc/init.d/mysql {start|stop|restart|reload|force-reload|status}

Y en la configuración [/etc/mysql/my.cnf, línea 71 aproximadamente] habilitamos los logs descomentando:

log  /var/log/mysql/mysql.log

Y luego reiniciando MySQL para que los cambios se apliquen…

server@host:# /etc/init.d/mysql restart

Instalación/Configuración de PHPMyAdmin

server@host:# apt-get install phpmyadmin

Y la configuración viene en el archivo config.inc.php, que no está, pero lo crearemos con el siguiente contenido:

<?php
$cfg['blowfish_secret'] = 'phpmyadmin';
$i = 0;
$i++;
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
?>

VirtualHosting

Es un método que permite la publicación de varios sitios web [con varios nombres de dominio distintos] bajo una misma dirección IP. Permite compartir memoria y ciclos de procesador [Hz] de manera más eficiente.

Comandos de Apache2 para VirtualHosting:

  • a2ensite: Activa un sitio web. Deben estar las configs en /etc/apache2/sites-available/
  • a2dissite:Desactiva un sitio web.
  • a2enmod: Activa un módulo de apache disponible en /etc/apache2/mods-available/
  • a2dismod: Desactiva un módulo.

Crear un virtualhost

Creamos el archivo de configuración del VirtualHost:

server@host:# cd /etc/apache2/sites-available/
server@host:/etc/apache2/sites-available# touch blog.example.com

Creamos la carpeta donde estará el sitio web…

server@host:# mkdir -p /var/www/blog/

Configuración de blog.example.com:

<VirtualHost *:80>
ServerAdmin admin@blog.example.com
ServerName blog.example.com
DocumentRoot /var/www/blog/
# HTML documents, with indexing.
<Directory />
Options +Includes
</Directory>
</VirtualHost>

Habilitamos:

server@host:# a2ensite blog.example.com

¿Y después? Claro, el final feliz:

server@host:# /etc/init.d/apache2 restart

Nota: Debemos hablar con nuestro administrador de red, si somos nosotros mejor, para añadir un registro A en el DNS que apunte a nuestra IP con el nombre “blog”. Esto debe hacerse para redirigir toda encuesta del DNS de blog.example.com a nuestra PC.

Después solamente escribimos en nuestro navegador:

http://blog.example.com

Y tendremos acceso al sitio en cuestión.

Solo queda instalar en este virtualhost un WordPress o un Drupal, si vamos a desarrollar, desde cero o algún framework.

Eso es todo, nos vemos en otro momento para continuar instalando/configurando servicios en sistemas GNU/Linux.


25 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   3ndriago dijo

    Instalacion de WampServer o XAMP en WinOS:

    1- Double clic installer.*
    2- Enjoy!

    Instalacion de MAMP en MacOS:
    1- Download the MAMP disk image from http://www.mamp.info.
    2- Open the disk image and drag MAMP into your Applications folder.
    3- Enjoy!

    Dios bendiga las GUIs!!!!!!!!!!!!!!!

    1.    KZKG^Gaara dijo

      Pero… lo simple o fácil no significa mejor. Ejemplo típico… la inmensa mayoría de servidores webs (y no webs) en el mundo funcionan sobre sistemas UnixLike… además de obviamente NO tener GUI. Y … dudo que los administradores de empresas como Google, HP, Twitter, MySQL, Facebook, Intel, Dell, etc etc estén equivocados 😀

      Saludos bro

    2.    Asuarto dijo

      Instalación de Apache2 en Debian
      1.-# apt-get install apache2 apache2-doc
      2.- Enjoy!

  2.   Koratsuki dijo

    xD, buena esa, pero bien… ¿Como personalizarías eso si no tuvieras GUI?

    1.    KZKG^Gaara dijo

      Tendría que hacer un SSH -X para hacer un forwarding de las X y lo que abra en Windows que se le muestre en su ordenador… oh.. mmm espera, acabo de recordar que, Windows no tiene SSH ni se le puede hacer un forwarding O_O

      1.    taregon dijo

        No cambies el tema, instalar XAMP con solo dar siguiente y parar/iniciar servicios desde un solo icono… aja, eso no tiene precio =P

        Ya a futuro si con las opciones disponibles en Windows no son suficientes, siempre estara la opcion de buscar a un pinguino e ir rompiendo ventanas 🙂

        1.    KZKG^Gaara dijo

          Seré yo el rarito que prefiere instalar cada servicio individual… manualmente ^⁻^» … jeje

          1.    Koratsuki dijo

            No eres tú solo, a mi me gusta así tambien xD…

  3.   3ndriago dijo

    A ver, vamos a empezar por aclarar algunos conceptos:
    1- La yuxtaposicion de intarfaces (grafica-linea de comandos) no es una guerra entre el bien y el mal, no es Aragorn VS Sauron, no hay bueno ni malo, o de hecho ambos son «el bueno» si se adecuan a tus propositos.
    2-Que yo resalte la sencillez del clic contra la linea de comandos, no quiere decir que niegue la importancia de la segunda, ni que diga que el primero es «mejor». Solo digo que es, cuando menos, mas amigable
    3- El hecho que muchos megaservidores como los que mencionas no dispongan de GUIs, tampoco hace a la interfaz de lineas de comando superior, solo mas adecuada para ese proposito. En Logica Proposicional a esto se le llama Falacia, ya que basado en argumentos verdaderos, llegas a una conclusion falsa. Te imaginas un smartphone a base de linea de comandos? Una vez mas, solo la aplicacion juzga que interfaz es mas competente.
    Juzgando por el titulo del articulo («Instalación de un entorno LAMP en Debian y derivados») no se puede captar que proposito va a tener esta instalacion de Apache, o sea, no esta sobreentendido que vaya a ser para Google, Dell, etc etc etc. (ademas dudo mucho ellos usen Apache!!! pero no tengo argumentos aqui). Basado en mi uso personal -solo para probar websites en un ambiente local antes de ponerlos online- si tuviese que hacer el deployment asi, a base de linea de comandos, me pego un tiro o cambio de oficio 😀
    Y para terminar, un proverbio chino, cultura milenaria de la que mucho hay que aprender, que refleja el concepto de ‘hazte la vida facil’ maravillosamente: «No hagas parado lo que puedas hacer sentado, y no hagas sentado lo que puedas hacer acostado».

    1.    KZKG^Gaara dijo

      En efecto jaja… WordPress.com así como Opera.com usan Nginx, notablemente menos consumidor y realmente recomendable 😀

      Sobre lo que dices, al menos yo prefiero intentar simular lo mejor posible el entorno final donde estará el sitio.
      O sea, instalo todos los servicios y configuro pensando en cómo estarán instalados y configurados estos mismos, pero en el servidor final donde estará el sitio (una vez terminado).

      Por eso es que siempre he preferido instalar todo a mano y configurarlo yo.

    2.    jorge dijo

      perdon por inmiscuirme despues de tanto tiempo, a lo mejor hasta ya saben porque los grandes servidores no tienen GUI.
      las interfaces graficas (GUI) requieren para su uso un entorno grafico. mismo que utiliza recursos en cualquier equipo sea de la capacidad que sea, como administradores, lo ultimo que queremos es «desperdiciar» recursos de un equipo para levantar un entorno grafico.

      entonces, si, si existe el bueno y el malo, argon vs sauron, cuando necesitas que el servidor responda miles de peticiones, busque en bd, envie y reciba correos, y ademas ejecute alguna otra aplicacion, simplemente desinstalas el entorno grafico y listo

      saludos!

  4.   Gabriel dijo

    Tambien se puede usar el xamp que consiste en pegar los archivos en un directorio root, mas rapido si solo queremos desarrollar.

  5.   taregon dijo

    Claro, no soy de la vieja escuela pero esta instrucción

    server@host:# /etc/init.d/apache2 restart

    Tambien pudiese ejecutarse de la siguiente manera

    server@host:# sudo service apache2 restart

    Solo era un dato que queria compartir, ya que siempre que entro a blogs veo que es mas comun usar la primera opción 🙂

    1.    KZKG^Gaara dijo

      En Debian este segundo método que propones no creo que se pueda usar.

  6.   Koratsuki dijo

    Todos conocemos que Window$ y MAC tienen sus ventajas, linda GUI[MAC solamente, la GUI de Windows sucks], muchas facilidades, muchos clics en el boton siguiente, etc, pero muchachones, el feíto Linux con su línea de comandos horroza tambien debe dársele la oportunidad, aparte el blog es de linux, si publico como instalar un Wamp aquí, me banean de por vida xD. Una, porque es dar sicuiente hasta que se te canse el dedo, la otra porque es de Windows…

    Entonces, seamos buenitos y no me maltraten xD.

    @Taregon: Yo si soy de la vieja escuela y prefiero el restart de /etc/init.d/, aunque también hay un «apache2ctl restart».

    1.    3ndriago dijo

      Totalmente de acuerdo, es que mi coentario anterior era para responder a KZKG^Gaara, pero no segui el trend… la falacia es de el, no tuya 😀

      1.    Koratsuki dijo

        Sorry, then… xD

    2.    3ndriago dijo

      Totalmente de acuerdo, lo que pasa es que mi comentario anterior era en respuesta a KZKG^Gaara, pero no segui el trend correctamente, la falacia es de el, no tuya 😀

    3.    taregon dijo

      Tranquilo, nadie saldrá herido 😉 por eso digo que no soy de la «vieja escuela» ya que soy malo reteniendo rutas en mi mente, si cambio de Mint a Centos ya lo que sabia de uno no se aplica a lo otro y prefiero buscar comandos que sean compatibles en ambos sistemas.

      SI PUEDO HACERLO ACOSTADO NO VEO POR QUE SENTARME XD mas o menos iba así el proverbio.

    4.    KZKG^Gaara dijo

      Tampoco así, que con gusto si haces el post de cómo descargar, instalar y configurar LAMP … con mucho gusto se pone 😀

  7.   jamin-samuel dijo

    Hola chicos .. aqui hay un tutorial parecio … muy practico y sencillo

    http://www.taringa.net/posts/apuntes-y-monografias/14741966/Instalar-XAMPP-en-Linux.html

  8.   Koratsuki dijo

    Ahora revisando documentación, veo que en los benchmarks, Nginx le da perfect por mucho a Apache, Cherokee, y Lighthttpd…

  9.   reisilver dijo

    Gracias , excelente guía, me sirvió de mucho , quiero trabajar con cakephp pero necesitaba instalar antes un servidor web local con lamp.

  10.   Jaime dijo

    Hola soy nuevo en linux (Fedora 20), he instalado el servidor LAMP y todo va perfecto, salvo un problema…..Resulta qu una vez que esta todo funcionando, y le doy a abrir un «index.html», lo hace sin problema muestra la pagina en el navegador,. Pero al tratar de abrir un «index.php», se abre la ventana de descargas solicitando que hacer con el archivo «Guardar» «Cancelar», pero no la muestra en el navegador.
    he probado todo lo que he encontrado por la web pero nada me resuelve el error, agradezco cualquier ayuda u orientacion. Gracias.

  11.   Jaime Rodriguez dijo

    Hola buenas tardes a todos.
    No se si esta seccion sera la mas indicada para hacer una consulta referente al resultado que recibo despues de realizar un «var_dump»….
    Dire que soy nuevo en Linux (Fedora 20) y no controlo muy bien el SO.

    RESULTADO DE UN var_dump EN WAMPSERVER-WINDOWS 7.

    array (size=6)
    ‘id’ => string ‘1’ (length=1)
    ‘nombre’ => string ‘jaime’ (length=5)
    ‘email’ => string ‘jrbios.net@gmail.com’ (length=20)
    ‘contenido’ => string ‘este es otro comentario’ (length=23)
    ‘fecha’ => string ‘2014-11-21 18:12:16’ (length=19)
    ‘estado’ => string ‘0’ (length=1)

    *********************************************************************

    RESULTADO DE UN var_dump EN LAMP-FEDORA 20.

    array(6) { [«id»]=> string(2) «17» [«nombre»]=> string(15) «Jaime rodriguez» [«email»]=> string(26) «flamencogranaino@gmail.com» [«contenido»]=> string(21) «esto es un comentario» [«fecha»]=> string(19) «2014-12-05 21:32:26» [«estado»]=> string(1) «1» }

    *****************************************************************************************************

    El asunto es que en wamp el resultado aparece ordenado y los datos recibidos de la db en rojo.
    y en lamp me aparece todo en una sola linea, entre corchetes y todos los datos en color negro….
    Agradeceria cualquier orientacion o aclaracion del porque ocurre esto y si hay alguna solucion para recibir los datos igual que en wamp.
    Muchas gracias de antemano, un cordial saludo.

    Jaime Rodriguez