Instalar un Web Server sobre openSUSE 11

12 \12\UTC agosto \12\UTC\Tuesday 2008

En junio, si no me equivoco, se liberó la versión estable 11 de openSUSE, una de las mejores distribuciónes de Linux. Mi experiencia con Linux es muy limitada, pero he llegado a aprender algunas cosas (a la fuerza) gracias a la practica y a la ayuda de un compañero de trabajo.

Te mostraré los pasos para instalar tu propio servidor LAMP en openSUSE 11, pero no te alegres tanto, porque si bien al final de este tuto tu servidor estara funcionando, no seria recomendable que lo coloques en la zona pública aún. Para ello debes hacerle un hardening a su servidor y yo no estoy capacitado para eso.

Paso 1: Consigue el instalador de openSUSE 11

Lo puedes descargar desde http://software.opensuse.org/. Es un archivo en formato ISO de 4.3Gb. Este archivo debes volcarlo a un disco DVD. Eso lo puedes hacer con un software como Nero o MagicISO. Puedes buscarte uno gratuito por aquí.

Una vez que hayas quemado la imagen en el dvd empiezas con la instalación.

Paso 2: Empezar a instalar

El disco grabado es booteable, solo asegurate que tu bios busca archivos de inicio en el CDRom antes que en tu disco duro.

Una vez que lo encuentre veras la siguiente pantalla.

openSUSE Install Arranque desde el disco de instalacion

openSUSE Install Arranque desde el disco de instalacion

Eliges Installation para empezar con el proceso. No te preocupes por el ingles, luego lo puedes cambiar.

Una vez iniciada la instalación y continuado con la bienvenida verás esto.

openSUSE Install Modo de instalacion

openSUSE Install Modo de instalacion

Yo elijo la primera opcion porque es lo que quiero hacer, no me interesa lo que actualmente tengo en mi disco duro.

openSUSE Install Zona horaria

openSUSE Install Zona horaria

Luego elijo mi zona horaria y verifico que la hora mostrada sea correcta.

En la siguiente pantalla debo decidir que escritorio gráfico usaré.

openSUSE Install Seleccion de escritorio

openSUSE Install Seleccion de escritorio

Yo elijo el KDE4, pero tu puedes elegir el que mas te guste. Si ya has usado ubuntu alguna vez, entonces debes conocer a Gnome. KDE4 es una nueva version de KDE que trae consigo buenas mejoras gráficas entre otras cosas. En este ejemplo no utilizaras el entorno gráfico.

openSUSE Install Propuesta de particionamiento

openSUSE Install Propuesta de particionamiento

En la siguiente pantalla debes elegir las particiones que deseas crear. Mi amigo me dice que es mejor hacerlo de forma manual, hay unos pasos a seguir. Pero como él esta ocupado dejaré que suse decida. Este no será un servidor de producción, no necesito que todo sea perfecto.

En la ultima parte de la preparación te pregunta por la identidad del servidor. En “Nombre completo” puedes escribir tu nombre. En el siguiente campo te pide el nombre de usuario. Coloca ahi tu nick (no debe tener espacios ni caracteres especiales). Y en los dos ultimos campos tu contraseña (una que elijas). Asegurate de marcar la opcion de “Utilizar esta contraseña para el administrador” (osea, el usuario root).

Una vez que ya he contestado a varias preguntas me muestra el resumen de lo que va a hacer.

openSUSE Install Configuracion de la instalacion

openSUSE Install Configuracion de la instalacion

Yo decido cambiar algunas cosas como el software que va a instalar, no me interesan los juegos o los efectos de pantalla, lo que harán sera ocuparme espacio y memoria.

openSUSE Install Eligiendo los paquetes a instalar

openSUSE Install Eligiendo los paquetes a instalar

Otra cosa a cambiar es el tipo de inicio del sistema. Por defecto inicia en el estado 5 que es el modo gráfico. Como este será un servidor la intención es no gastar memoria en cargar cosas imnecesarias. Por lo tanto, le decimos que inicie en el modo 3.
Te da tres modos:

  • 1: Modo de consola sin red
  • 3: Modo de consola con red (recomendado)
  • 5: Modo gráfico con red

Si inicias por defecto en modo gráfico no hay problema. Puedes usar la consola en cualquier momento.

Conforme empiezas con la instalación, lo primero que hará será preparar el disco duro, lo particionará y formateará de acuerdo a lo decidido anteriormente.

openSUSE Install Preparando el disco duro

openSUSE Install Preparando el disco duro

Luego continuar con la instalación de los paquetes.

openSUSE Install Instalacion de paquetes

openSUSE Install Instalacion de paquetes

openSUSE Install Terminando la instalacion basica

openSUSE Install Terminando la instalacion basica

Una vez haya terminado te pedirá reiniciar. Si dejas el disco de instalación, dentro de la compu, no importa, la primera opcion del menu booteable es “Iniciar desde el disco duro”.

openSUSE Install Configuracion automatica

openSUSE Install Configuracion automatica

De manera automática vuelve al programa de instalacion para configurar los paquetes instalados.

Paso 3: La configuracion de tu LAMP (Linux, Apache, MySQL y PHP)

Una vez que hayas terminado con la instalación empieza lo divertido, la configuración. Depende a el tipo de inicio que hayas elegido puedes seguir de dos maneras:

Si elegiste usar el modo grafico por defecto

Si elegiste iniciar por defecto en modo gráfico has lo siguiente:

Una vez el escritorio este cargado, dale un clic a la iguana verde ubicada en la esquina inferior irquierda y luego escribe la palabra “terminal” en el campo de busqueda ubicado en la parte superior del menu emergente. Dale un clic sobre el primer resultado.

openSUSE Install Abriendo el terminal en KDE4
openSUSE Install Abriendo el terminal en KDE4

Una vez abierto el terminal escribes:

su –

Luego la contraseña que elegiste previamente tal como se muestra en la siguiente imagen. Esto te da los privilegios del usuario root (administrador).

openSUSE Install Ejecutar comandos como root desde la terminal

Te recomiendo que maximices la ventana del terminar porque necesitaras espacio para lo que sigue. El boton de maximixar se encuentra exactamente debajo del cursor (ver última imagen).

Si elegiste el modo de consola por defecto

Entonces una vez que el servidor termine de iniciar te pedira inicies tu sesión. Escribe root como nombre de usuario y luego la contraseña que hayas elegido previamente.

De aqui en adelante los pasos son comunes.

Una vez que te hayas logeado tipeas:

yast

Ahora debes tener al administrador Yast2 en pantalla. Con Yast puedes realizar varios cambios en tu servidor sin necesitad de estar editando archivos de configuración. Te ayuda sobretodo si eres un principiante como yo.

Usa las flechas direccionales para moverte y la tecla <TAB> para saltar de un cuadro a otro o entre los botones.

Paso 3.1: Configurando con Yast

En Network Devices / Network Settings puedes configurar tu tarjeta de red: IP, Nombre, etc. Por defecto usaras DHCP.

openSUSE Install Configurando con Yast

openSUSE Install Configurando con Yast

Ve a Network Services y elige HTTP Server. Luego, asegurate que el puerto de escucha esa el 80 y que Open port in Firewall este seleccionado. Puedes seleccionar y deseleccionar usando la barra espaciadora. No olvides que puedes saltar entre los campos activos usando <TAB>. Vas a la siguiente pagina y activas lo que necesites: PHP5, Perl, etc… Sigues avanzando y veras que este asistente te ofrece varias opciones. Si desearas cambiar algo luego puedes volver a entrar aqui. Recuerda el DocumentRoot, es ahi donde se deben encontrar los archivos que seran visibles desde la web. Usualmente se encuentra en <RAIZ>\srv\www\htdocs.
En la última pantalla te da dos opciones:

  • Start apache2 server when booting
  • Start apache2 server manually

Te recomiendo la primera opción, asi apache2 iniciará de forma automatica al arrancar openSUSE.

Bien, ahora que Apache esta configurado pasamos a mySQL.

Salimos de yast, puedes ir saltando con <TAB> hasta llegar al boton Quit o presional simplemente <F9>. Asi como hecho que el servicio apache2 se inicie automaticamente al arrancar nuestro servidor debemos hacer lo mismo con mySQL. Para ver si el servicio mysql esta configurado para un inicio automatico escribimos lo siguiente:

chkconfig –list | grep mysql

Como resultado tendremos:

openSUSE Install Estado del inicio automatico de un servicio

Te resumo que significa esto: Estos numeros del 0 al 6 representan tipos de inicio del sistema operativo. 3 inicio en modo de consola y 5 el inicio en modo gráfico. Como ves en la imagen el servicio mysql no se iniciará automaticamente en ningun tipo de inicio. Debemos hacer el “off” del estado 3 y 5 se convierta en “on“. Para esto escribimos lo siguiente:

chkconfig mysql on

Asi de simple. Si deseas puedes ejecutar otra vez el comando que te informa del estado del servicio para verificar que realmente en los estados 3 y 5 el servicio mysql a pasado a “on“.

Tambien puedes ejecutar: chkconfig –list | grep apache2 para asegurarte que apache2 este en “on” en los tipos 3 y 5.

Habiendo hecho debes reiniciar tu servidor, para ello ejecuta el comado:

init 6

Con esto ya tienes corriendo tu servidor Apache con PHP y mySQL.

Te dejo algunos comandos que te pueden ser útiles:

init 0 : Apagar el servidor.
init 6 : Reiniciar el servidor.
service apache2 status : Para conocer el estado de un servicio. Puedes cambiar apache2 por el servicio que quieras.
service apache2 start : Para iniciar un servicio. Asimismo, en vez de mysql puede ser apache, sshd, etc.
service apache2 stop : Para detener un servicio.
service apache restart : detiene y vuelve a iniciar un servicio.
ifconfig : Muestra la configuracion de las tarjetas de red.
man nombre_cualquiera : Muestra la ayuda del comando nombre_cualquiera.
ping nombre_host : Hace un ping a un nombre de host o direccion IP, igual que el comando ping de windows. A diferencia que este no se detendra hasta presionar las teclas <CRTL> + <C>.
top : Muestra el estado de los procesos en ejecucion asi como su uso en memoria y procesador. De la misma manera, presiona <CRTL> + <C> para salir.

Si elegiste iniciar en modo consola por defecto y tambien elegiste instalar el escritorio KDE durante la instalación y ahora quieres probarlo, puedes ejecutar el comando startx. Esto iniciará el escritorio KDE usando el usuario actual. Para volver a la línea de comandos simplemente cierra sesión desde el entorno gráfico.

Si por algún motivo la aplicacion con la que tabajases se congelara, puedes reiniciar tu servidor saltando a otro escritorio. Para saltar entre escritorios presiona la tecla <ALT> + <del F1 al F6>. Tienes seis escritorios en modo de consola disponibles. El escritorio gráfico usa el siete. Para saltar del escritorio de comandos al grafico lo puedes hacer con <ALT>+<F7>, y para pasar del escritorio gráfico al de comandos lo debes hacer con <CRTL>+<ALT>+<del F1 al F6>. Recuerda usar las teclas <CRTL> y <ALT> de la izquierda de tu teclado.

El método trigger_error

13 \13\UTC junio \13\UTC\Friday 2008

A pesar de usar PHP por años he conocido recientemente este método al buscar una manera mas facil de controlar los errores que pueden ocurrir durante la ejecución de un script.

Yo uso AMFPHP para conectar el cliente Flash con mi servidor con PHP, y que decir, me sirve de mucho. Cree mis clases, mis metodos, etc etc y diseñe los metodos de tal manera que siempre me devolvian una matriz asociativa de la forma {data:mixed, error:str, errcode:int}. Asi que cuando lo queria usar un metodo siempre tenia que verificar if($func_result[“error”]==””) lo cual era algo tedioso y no me permitia programar rapidamente porque tenia que estar controlando errores para cada llamada. Un día dije SE ACABÓ y me puse a investigar como lo hacen los grandes. Asi encontre las llamadas Exceptions (excepciones) y senti un alivio al mismo tiempo que me senti un imbecil por no haber encontrado esto antes.

Funcionan asi:
cuando se produsca un error llamas al método trigger_error pasandole como primer parametro una descripcion del error y como segundo el codigo del error. El código no te lo vas a inventar, ya hay codigos predefinidos que PHP conoce, si pones uno que no existe simplemente el error que verás es el que PHP te increpa porque no haces las cosas bien.

Ahora, que pasa cuando no quieres que cierto error se muestre, en vez de eso quieres “controlarlo”. Para eso existe las sentencia try … catch. Lo que hace es bien simpatico:

try{ 
// Aki escribes el codigo que quieres probar
}catch(Exception $e){ 
// Si el codigo probado produjera un error se ejecutara esto  
// La informacion del error puedes leerla de $e. $e es un objeto de la clase Exception.  
// Puedes ver que propiedades tiene esta clase en la documentacion de PHP.net
}

Lo que si no he podido es pasar un código personalizado del error. La mentablemente el metodo trigger_error solo acepta dos parametros, y el segundo es como ya dije no puede ser personalizado.