miércoles, 5 de marzo de 2014

APRENDI A INSTALAR LAMP

INSTALAR LAMP EN LINUX


El presente BLOG me ha entusiasmado ya que he pasado el curso de programación avanzada y he tenido que volver a instalar LAMP. Mi primer blog del 2013 fue de como instalar XAMPP pero me ha gustado LAMP. (Es necesario decir que este procedimiento es válido tanto para Ubuntu 12.04 y 13.04)

Sin más preámbulos vamos a iniciar la instalación y todo será llevado a cabo por consola ... :) 




INSTALANDO APACHE
  1. sudo apt-get install apache2
Con esto, ya tendremos Apache 2 instalado. Este servicio se inicia automáticamente, pero puede que necesites pararlo, resetearlo o volverlo a iniciar manualmente en algún momento:Iniciar ApacheComando: sudo /etc/init.d/apache2 startComando Corto: sudo service apache2 startDetener ApacheComando: sudo /etc/init.d/apache2 stopComando Corto: sudo service apache2 stopReiniciar ApacheComando: sudo /etc/init.d/apache2 restartComando Corto: sudo service apache2 restartEstatus ApacheComando: sudo /etc/init.d/apache2 statusComando Corto: sudo service apache2 statusNota: Si no les funciona el comando sudo service apache2 … deben instalar sysvinit-utils (especialmente en las versiones más viejas de Ubuntu).El archivo de configuración por defecto de Apache se encuentra en el directorio /etc/apache2/ y el directorio por defecto de los archivos donde se guardarán las páginas web es en /var/wwwPara probar que Apache está funcionando bien basta con ir a la dirección en tu navegador y escribir http://localhost desde el mismo servidor o http://ipservidor desde otra PC y les debe aparecer algo como lo siguiente:



                                         INSTALANDO PHP
  1. sudo apt-get install php5 libapache2-mod-php5 php5-cli php5-mysql
Una vez haya acabado la instalación, reiniciamos apache manualmente con el mismo comando que se ha puesto arriba:

  1. sudo service apache2 restart


                                    INSTALANDO MYSQL
  1. sudo apt-get install mysql-server mysql-client libmysqlclient-dev
Con esto instalamos mysql y en la parte que nos solicita la contraseña sólo la colocamos y la repetimos, en realidad es algo intuitivo y esta clave nos servirá para el superusuario o administrar de las bases de datos que creemos en mysql 



                                   INSTALANDO PhpMyAdmin

phpMyAdmin es un gestor gráfico de MySQL. Para instalarlo, ejecutamos lo siguiente en consola

  1. sudo apt-get install phpmyadmin

Para acceder a él, vamos a http://localhost/phpmyadmin.

En caso de que no podamos acceder a phpMyAdmin, tendrás que crear un enlace simbólico, introduciendo lo siguiente por consola:
  1. sudo ln -s /usr/share/phpmyadmin /var/www/



CONFIGURACIONES PARA CODEIGNITER

Activar Directorios

Los directorios de usuario en Apache permiten que cada usuario tenga un directorio en su carpeta personal o cuenta donde podrá colocar archivos que podrán ser vistos por un navegador.

Sería algo como:
  1. http://localhost/~usuario

Para disponer de esta función debemos activar el modulo de Apache userdir. Creamos el directorio public_html en nuestra carpeta Personal. En el alojaremos los archivos que se verán a través del navegador. Desde un terminal ejecutamos las siguientes ordenes:
  1. mkdir public_html
  2. sudo chmod 777 public_html
  3. sudo a2enmod userdir
  4. sudo /etc/init.d/apache2 restart
1. mkdir public_html
Ocurre que los script en php en vez de ejecutarse se descargan. Como no queremos esto, debemos editar un archivo de configuración. Desde el terminal abrimos para editar:

  1. sudo gedit /etc/apache2/mods-enabled/php5.conf
Buscamos en el archivo hasta ver algo así:

<IfModule mod_userdir.c><Directory /home/*/public_html>php_admin_value engine Off</Directory></IfModule>
Como nos dice en las líneas comentadas, las que llevan una almohadilla, debemos comentar desde <IfModule> hasta </IfModule> para que quede así:
#<IfModule mod_userdir.c>#<Directory /home/*/public_html>#php_admin_value engine Off#</Directory>#</IfModule>
Podríamos simplemente cambiar php_admin_value engine Off por php_admin_value engine On pero esto se impondría sobre .htaccess donde a veces podemos desear indicar que no puedan ejecutarse scripts php.
Y reiniciamos el servidor Apache para que los cambios tengan efecto:

  1. sudo /etc/init.d/apache2 restart
Ahora podemos ejecutar nuestros scripts en php en nuestro directorio de usuario de Apache.




Configuración de CodeIgniter
1. Copiar la carpeta de CodeIgniter en la carpeta public_html

2. Renombrar la carpeta del CodeIgniter con el nombre practica

3. Dar permisos a la carpeta practica

4. Buscar el archivo de configuración /practica/application/config/

5. Abrir el config.php y editar

6. $config['base_url']='http://localhost/~usuario/practica/ ';

7. Ejecutar en el navegador poniendo la direccion http://localhost/~usuario/practica/



De este modo quedaría así en mi ordenador
  1. http://localhost/~betsabe/practica/

martes, 11 de febrero de 2014

Crear Usuarios en MySQL

Hasta ahora hemos usado sólo el usuario 'root', que es el administrador, y que dispone de todos los privilegios disponibles en MySQL.
Sin embargo, normalmente no será una buena práctica dejar que todos los usuario con acceso al servidor tengan todos los privilegios. Para conservar la integridad de los datos y de las estructuras será conveniente que sólo algunos usuarios puedan realizar determinadas tareas, y que otras, que requieren mayor conocimiento sobre las estructuras de bases de datos y tablas, sólo puedan realizarse por un número limitado y controlado de usuarios.
Los conceptos de usuarios y privilegios están íntimamente relacionados. No se pueden crear usuarios sin asignarle al mismo tiempo privilegios. De hecho, la necesidad de crear usuarios está ligada a la necesidad de limitar las acciones que tales usuarios pueden llevar a cabo.
MySQL permite definir diferentes usuarios, y además, asignar a cada uno determinados privilegios en distintos niveles o categorías de ellos.

En MySQL existen cinco niveles distintos de privilegios:
  1. Globales: se aplican al conjunto de todas las bases de datos en un servidor. Es el nivel más alto de privilegio, en el sentido de que su ámbito es el más general.
  2. De base de datos: se refieren a bases de datos individuales, y por extensión, a todos los objetos que contiene cada base de datos.
  3. De tabla: se aplican a tablas individuales, y por lo tanto, a todas las columnas de esas tabla.
  4. De columna: se aplican a una columna en una tabla concreta.
  5. De rutina: se aplican a los procedimientos almacenados. Aún no hemos visto nada sobre este tema, pero en MySQL se pueden almacenar procedimietos consistentes en varias consultas SQL.


CREANDO USUARIOS
A partir de la versión MySQL 5.0.2 existe la posibilidad de crear usuarios sin necesidad de asignarles privilegios, utilizando la sentencia CREATE USER.

Primero debemos acceder como root a mysql

Segundo creamos un usuario con una contraseña

Los privilegios necesarios para ejecutar la sentencia CREATE USER son CREATE USER o bien INSERT en la base de datos mysqlEl usuario recién creado no tiene privilegio alguno, por lo que deberemos asignarle permisos utilizando sentencias GRANT(esta vez sin la cláusula IDENTIFIED BY).

ASIGNARLE UNA BASE DE DATOS A UN USUARIO
En esta línea de código lo que se hace es darle permisos al usuario 'MaryBeth' sobre la base de datos contable.

ACCEDIENDO A  LA BASE DE DATOS
Finalmente se muestra como se accede a la base de datos de MaryBeth

MaryBeth es un usuario que tiene todos los privilegios sobre la base de datos contable.

OTROS TIPOS DE CONCESIONES DE PRIVILEGIOS
  1. ALL: para conceder todos los privilegios.
  2. CREATE: permite crear nuevas tablas.
  3. DELETE: permite usar la sentencia DELETE.
  4. DROP: permite borrar tablas.
  5. INSERT: permite insertar datos en tablas.
  6. UPDATE: permite usar la sentencia UPDATE.

lunes, 20 de enero de 2014

VALIDACIÓN DE FORMULARIOS


En toda aplicación web es importante la seguridad, tanto del propio sistema (que no produzca errores por sí mismo) como ataques contra de usuarios. Además es importante para muchos internautas que no se le permita el almacenamiento de otro tipo de datos a los que le solicitan, ejemplo si solicitan la edad, solo debería ser permitido ingresar números.
La seguridad con los tipos de datos se logra a varios niveles. Primeramente, en el diseño de la base de datos, donde se debe ajustar cada tipo de dato a lo que realmente se necesita. Una vez establecido esto, se deben validar los datos de entrada de usuarios para que coincidan con los de la base de datos, evitando así dos cosas, primero, el mensaje de error de base de datos, que como no supimos capturar nos sale de momento y rompe con todo nuestro diseño; y segundo, mantener la integridad de nuestra base de datos.

De nuestro estudio la validación se la hará en el diseño de vistas, particularmente en el controlador de esa vista. Hay maneras de evitar que el usuario escriba “sí”, “si”, “Sí”, “SI”, “s”, “yes”, “y”, etc. Se debe indicar qué datos del formulario son obligatorios (suele usarse un asterisco), y de qué tipo son.
Queda entonces validar que no entren campos vacíos, y que los entrados sean válidos (números, fechas, direcciones web, direcciones http, etc.). Es pertinente validar los datos del lado del cliente (PC donde está el usuario), es decir, usando javascript (una opción de moda es el jquery validate). Esta validación en el cliente permite que el usuario conozca sus errores antes de hacer el envío o submit de la página, lo que permite además conservar sin mucho trabajo los datos entrados en los componentes visuales.
Pero como hay diversos navegadores en los que las cosas se comportan a veces de formas diferentes, y porque el usuario puede tener deshabilitado el javascript, es necesario validar los datos también en el lado del servidor: el php no depende de qué navegador se esté usando en los clientes, por lo que estamos trabajando en un entorno más controlado.

CodeIgniter brinda una excelente aproximación a la validación de datos, con la clase de validación de formularios. Esta clase permite especificar las reglas que le vas a aplicar a los datos enviados desde el cliente, así como los mensajes de error para cada una. Además permite especificar los delimitadores que le darán formato al mensaje, y da la posibilidad de mostrar los errores nuevamente en el cliente.


Ejemplo vamos a validar los siguientes campos del logueo del Usuario a la aplicaciòn agenda

Vista de Logueo de agenda

Antes de proceder con la codificación de la función de validación y sus respectivos mensajes es importante conocer la estructura de la clase form_validation


Establecer reglas de validación
CodeIgniter permite configurar todas las reglas de validación que necesite para un campo Determinado, en cascada en orden, y que incluso le permite PrEP y pre-procesar los datos de campo al mismo tiempo. Para definir las reglas de validación que va a utilizar los () set_rules función:
$ This-> form_validation-> set_rules ();
La función anterior toma tres parámetros como entrada:
  1. El nombre del campo - el nombre exacto que se le ha dado el campo de formulario, básicamente es el name del elemento del formulario.
  2. Un nombre entendible para el usuario (una leyenda) para este campo, que se insertará en el mensaje de error. Por ejemplo, si el campo se llama "usuario" que podría darle un nombre humano de "nombre de usuario". 
  3. La validación de las reglas para este campo de formulario.


En el controlador se debe añadir el siguiente código:
class Login extends CI_Controller {

function validaForm(){
$this->form_validation->set_rules('usuario', 'Usuario', 'required|min_length[4]
           |max_length[25]|trim|alpha_dash');
$this->form_validation->set_rules('clave', 'Clave', 'required|min_length[4]
           |trim|max_length[25]');

   $this->form_validation->set_message('required','Debe introducir el campo %s');
$this->form_validation->set_message('min_length','El campo %s debe ser igual menos %d caracteres');
$this->form_validation->set_message('max_length','El campo %s debe ser menor que %d caracteres');
   $this->form_validation->set_message('alpha_dash','%s solo contiene numeros, letras y guiones alto y bajo');
if ($this->form_validation->run() == FALSE){
return FALSE;
}else{
return TRUE;
}
}
}



Con esta función se ha validado los campos Usuario y Contraseña de la vista Logueo, de forma general se ha especificado que ambos campos son requeridos (required), el valor mínimo que se puede ingresar es de 4 caracteres y el máximo de 25, así mismo en el campo usuario sólo decimos que son admisibles números, letras y guiones altos y bajos.



Referencias de Reglas

Reglas nativas de CodeIgniter

OTROS ASISTENTES

ASISTENTE DE HTML

El archivo Asistente de HTML contiene funciones que asisten en el trabajo con HTML.

CARGANDO EL ASISTENTE
  1. Puede ser cargado desde el archivo de configuración general: home/acer/public_html/Agenda/application/config/ autoload.php

    De nuestra aplicación agenda, tenemos en un array a los siguientes asistentes:
    $autoload['helper'] = array('url','form','text','date','security','html','file','download','smiley','string');
  2. Puede ser cargado en el propio controlador con:  $this->load->helper('html');

FUNCIONES DISPONIBLES

  • Etiqueta de salto de línea <br>, recibe como parámetro el numero de veces que se repite la etiqueta
    br()

    echo br(3);

  • Etiqueta de encabezado <h1>, recibe como paràmetro el tamaño del encabezado
    heading()

    Recibe como parámetros el título del encabezado y el tamaño.

    echo heading('Welcome!', 3);

  • Crear etiqueta <img>
    img()

    echo img('imagenes/fondo.jpg');

    Tiene como parámetro la dorecciòn o "href" de la ubicación de la imagen


  • Crear etiquetas <link>
    link_tag()
    $link = array( 'href' => 'estilos/contacto.css', 'rel' => 'stylesheet',  'type' => 'text/css', )
    echo link_tag($link);

    Útil para los enlaces de hojas de estilo, así como para otros enlaces. Los parámetros son href, como opcional rel, type, title, media e index_page. index_page es un valor TRUE/FALSE que especifica si el href debería haber sido especificado por la página de $config['index_page'] agregado a la dirección que creo. echo link_tag('css/mystyles.css');


        ASISTENTE DE SEGURIDAD
El archivo Asistente de Seguridad contiene funciones relacionadas con seguridad.

CARGANDO EL ASISTENTE
  1. Puede ser cargado desde el archivo de configuración general: home/acer/public_html/Agenda/application/config/ autoload.php

    De nuestra aplicación agenda, tenemos en un array a los siguientes asistentes:
    $autoload['helper'] = array('url','form','text','date','security','html','file','download','smiley','string');
  2. Puede ser cargado en el propio controlador con:  $this->load->helper('security');

FUNCIONES DISPONIBLES

  • Filtrado contra ataques XSS (Cross Site Script)
    xss-clean();

    En nuestra aplicación la hemos utilizado dentro de los validadores de los elementos de formulario.

    $this->form_validation->set_rules('usuario', 'Usuario', 'required|xss_clean');


  • Encriptaciones de una vía SHA1 (por defecto) o MD5 aptas para encriptar contraseñas. 
  • dohash() 

    $cadena = dohash($cadena); // SHA1
    $cadena = dohash($cadena, 'md5'); // MD5


  • Eliminará las etiquetas de imagen de una cadena. Deja la URL de la imagen como texto plano.
    strip_image_tags()

    $cadena = strip_image_tags($cadena);

  • Convierte etiquetas PHP a entidades
    encode_php_tags()

    $cadena = encode_php_tags($cadena);

ASISTENTE DE FORMULARIOS

El archivo Asistente de Formulario contiene funciones que asisten al trabajo con formularios.

CARGANDO EL ASISTENTE
  1. Puede ser cargado desde el archivo de configuración general: home/acer/public_html/Agenda/application/config/ autoload.php

    De nuestra aplicación agenda, tenemos en un array a los siguientes asistentes:
    $autoload['helper'] = array('url','form','text','date','security','html','file','download','smiley','string');
Puede ser cargado en el propio controlador con:  $this->load->helper('form');


FUNCIONES DISPONIBLES
  • Elemento de Apertura de Formularios: <form>
    form_open()

    El principal beneficio de usar esta etiqueta en vez de hardcodear su propio HTML es que permite que su sitio sea más portable en caso de que sus URLs cambien alguna vez.

    Ejemplo: 
    echo form_open('contacto/agregarUsuarioBD');

    Donde:
    login, corresponde al nombre del controlador al cual se le enviará por post todos los elementos del formulario
    validarLogin, corresponde al nombre de la función que se encuentra dentro del controlador login

    Agregando atributos
    Los atributos pueden ser agregados pasando un arreglo asociativo como segundo
    parámetro, así:

    $formularioCaracteristicas = array( 'class' =>'form-horizontal',  'role' =>'form' );
    echo form_open('contacto/agregarUsuarioBD',$formularioCaracteristicas);


  • Elemento de Cierre de Formularios: </form>
    form_close()

    La única ventaja de usar esta función es que permite pasar datos que serán agregados debajo de la etiqueta.
    $cadena = "</div></div>";
    echo form_close($cadena);


  • Elemento de Formularios para subir archivos:
    form_open_multipart()
    Esta función es idéntica a la etiqueta form_open(), excepto que agrega el atributo multipart, el cual es necesario si desea usar el formulario para subir archivos.

  • Elemento de Formularios de entrada de texto, similar a <input type="text"/>
    form_input()

    Puede pasar minimamente el nombre del campo y el valor en el primer y segundo parámetro:
    echo form_input('nombres', 'Maria');

    O se puede pasar un arreglo asociativo como segundo parámetro. (De nuestro estudio es más útil para la aplicación agenda)

    $nombres = array(  ''name' =>'nombres', 'id' =>'nombres', 'class' =>'form-control',
    'placeholder' =>'Ingrese sus dos primeros nombres...', 'autofocus'=>'TRUE', 'required'=>'True', 'size' =>'20');

    echo form_input($nombres);

  • Elemento de Formularios de contraseñas, similar a <input type="password"/>
    form_password()

    Con este tipo de formulario a diferencia del anterior que recibe caracteres y los muestra. La entrada de los datos son vistas como ****. (Vamos a enviarle las propiedades de este elemento como un array asociativo)
    $password = array( 'name' =>'clave', 'id' =>'clave', 'class' =>'form-control',
                    'placeholder' =>'Ingrese su contraseña...', 'required'=>'True', );

    echo form_password($password);


  • Elemento de Formulario para subir archivos, similar a <input type="file"/>
    form_upload()
    $foto = array(  'name' =>'foto', 'id' =>'foto', 'class' =>'form-control');
    echo form_upload($foto);

  • Elemento de Formulario que nos permite escribir texto en mas de una linea, similar a la caja de texto multilínea <textarea name="comentario" rows="4" cols="50"> **** </textareas>
    form_textarea()

    Es necesario que tenga como atributos el número de "rows" y "cols".

    $comentario=array( 'name' =>'comentario', 'id' =>'comentario', 'rows'=>'4',
    'class' =>'form-control',  'cols'=>'5', 'style'=>'background:pink', 'align'=>'center' );

    echo form_textarea($comentario);

  • Elemento de Formulario que permite crear un menú desplegable estándard, similar a los cuadros de selección <select name="opciones"> <option> Estudiante </option><option> Docente </option> </select>
    form_dropdown()
    El primer parámetro contendrá el nombre del campo, el segundo parámetro contendrá un arreglo asociativo de opciones, y el tercer parámetro contendrá el valor que desea sea preseleccionado.

    $estadoCivil = array('soltero'=>'Soltero','casado'=>'Casado');
    echo form_dropdown('estado_civil',$estadoCivil);

  • Elemento de Formularios para casillas de verificación, similar a <input type="checkbox" name="intereses" value="solterio"> Soltero
    form_checkbox()

    $datos = array( 'name' => 'cerrarCuenta', 'id' => 'cerrarCuenta', 'value' => 'aceptar',
                  'checked' => TRUE, 'style' => 'margin:10px', );

    echo form_checkbox($datos).'  Cerrar Cuenta';

  • Elemento de Formularios para radio (selección única de un conjunto de opciones), similar  a  los botones de selección <input type="radio" name="genero" value="F"  checked >Femenino
    <input type="radio" name="genero" value="M> Masculino 
    form_radio()

    echo form_radio('genero','1','true').'Femenino';
    echo form_radio('genero','2').'Másculino'.'<br>';

  • Elemento de Formulario para generar un botón de envío, similar a <input type="submt"/>
    form_submit()

    echo form_submit('guardar','Guardar');

    Donde:
    El primer parámetro (guardar) corresponde al name del botón
    El segundo parámetro (Guardar) es el valor de dicho botón.

  • Elemento de Formulario para crear un botón de reestablecer
    form_reset()

    echo form_reset($boton, 'Reestablecer los datos iniciales');

    Donde:
    El primer parámetro (guardar) corresponde al name del botón
    El segundo parámetro (Guardar) es el valor de dicho botón.


  • Elemento de Formulario para crear un label, similar a <label>
    form_label()
    $atributos = array( 'class' => 'col-lg-2 control-label', 'style' => 'color: #000;', );
    echo form_label('Cual es tu nombre', 'nombre', $atributos);

    Donde: 
    El primer parámetro es el texto que mostrará el label
    El segundo parámetro es el id de la etiqueta
    El tercer parámetro (opcional) son los atributos que le afectará al elemento.

viernes, 13 de diciembre de 2013

Instalar Xampp 1.8.3 en Ubuntu 12.04

_________________________________________________________________________________
Tener que armar nuestro servidor web puede resultar una tarea frustrante, pero con Xampp esta tarea se nos facilitará enormemente.



XAMPP es un servidor, para desarrollar aplicaciones en php, con conexión a base de datos sql (LAMPP= Linux + Apache + MySQL + PHP + Perl)

Podemos descargar Xampp 1.8.3 de la página oficial (en mi caso descargué la versión para 32 bits). El link de descarga es el siguiente --> http://www.apachefriends.org/en/xampp-linux.html#374)

Pàgina oficial para descargar Xampp, el mouse nos muestra la versión para 32 bits)

PD: Si no sabemos de cuántos bits es nuestro SO, escribimos en la terminal:

uname -a
Si el resultado incluye "x86_64" entonces nuestro Ubuntu es de 64 bits. 
Si en cambio nos muestra solo "x86" o algo como "i686" entonces es un indicativo que el Ubuntu instalado en nuestra PC es de tan solo 32 bits.



Una vez descargado el paquete, vamos a empezar a instalar Xampp
1 - Debemos colocarnos en la carpeta donde lo descargamos (en mi caso lo tengo en Descargas) con el comando "cd". Por ejemplo, si ha sido en "Descargas", sería:


cd Descargas

2 - Damos los permisos pertinentes para poder ejecutarlo con:
sudo chmod 755 xampp-linux-x64-1.8.3-1-installer.run

3 - Lo instalamos con:
sudo ./xampp-linux-x64-1.8.3-1-installer.run

Y aparecerá un instalador al más puro estilo de Win2 (siguiente, siguiente, ...). Durante la instalación, se puede elegir la opción de instalar "Core files o archivos del núcleo" y "Developer Files o archivos de desarrollo" (yo aconsejo dejar los 2 marcados para instalar) e informa sobre "BitNami" (módulos para WordPress.org, Joomla!, Drupal, phpBB, Moodle, ...).




Al finalizar la instalación y en la última ventana nos da la opción de lanzar Xampp al finalizar y se debería de abrir directamente la página de bienvenida de Xampp, pero si se tiene el navegador abierto, viendo estas instrucciones por ejemplo, nos dará un error. No pasa nada, abrimos una ventana nueva de nuestro navegador, escribimos en la barra de direcciones:
http://localhost
Y aparecerá la ventana, donde elegimos el idioma "Español":




Se abrirá la ventana principal de Xampp con la bienvenida y unas sugerencias:




Y lo primero que debemos de hacer es pulsar "Status" en el panel de navegación izquierdo para asegurarnos de que todo funciona correctamente:




Como podemos ver no se han activado todos los servicios (MySQL está desactivado). 

En la página donde encontré esta instalación sugieren una solución pero que a mí no me funcionó. Más adelante, mostraré como solucione esto. De momento continuemos con nuestras configuraciones :)


_________________________________________________________________________________


Panel de control de Xampp


Para un usuario común en un entorno de escritorio gráfico se han creado una interfaz gráfica que nos permite Iniciar / Detener de una forma fácil los servicios más importantes (Apache, MySQL y ProFTPD) o uno por uno. Es el llamado Panel de Control de Xampp y se abre con el siguiente comando:


sudo /opt/lampp/share/xampp-control-panel/xampp-control-panel


Pero antes, es necesario instalar el siguiente paquete:
sudo apt-get install python-glade2
Panel de Control de Xampp para inicializar o detener los componentes de Xampp

Crear un lanzador para el panel de control:



Para que nos aparezca la aplicación en el Dash o tablero (botón Inicio de la barra lateral de Ubuntu) creamos un archivo "nombre.desktop" en /usr/share/applications/, ejecutando en un terminal:


sudo gedit /usr/share/applications/xampp-control-panel.desktop


Pegar el siguiente código en el archivo:
[Desktop Entry]
Comment=Start/Stop XAMPP
Name=XAMPP Control Panel
Exec=gksudo python /opt/lampp/share/xampp-control-panel/xampp-control-panel.py
Icon[en_CA]=/opt/lampp/xampp.png
Encoding=UTF-8
Terminal=false
Name[en_CA]=XAMPP Control Panel
Comment[en_CA]=Start/Stop XAMPP
Type=Application
Icon=/opt/lampp/xampp.png


Guardar y cerrar.

Con esto ya tenemos un controlador para Xampp, con este ya no es necesario para que Xampp se inicie o se detenga, sin tener que escribir estas instrucciones en el terminal. Muy útil cuando no estamos muy familiarizados con las instrucciones por consola.



_________________________________________________________________________________


Permisos al directorio /opt/lampp/htdocs



Aquí es donde se almacenan los directorios/archivos de las páginas web. En la práctica del curso se hizo una carpeta llamada public_html ubicada en nuestra carpeta personal.

Para ello es necesario cambiarle los permisos con:

ls -ls /opt/lampp
sudo chmod a+w /opt/lampp/htdocs
sudo ln -s /opt/lampp/htdocs ~/public_html
sudo ln -s /opt/lampp/htdocs ~/Webs

Con esto hemos conseguido lo siguiente:

Abrimos nuestra carpeta public_html y tendremos


La carpeta agenda es la carpeta de CodeIgniter (que configuramos en clases) y la carpeta htdocs es un acceso directo de la carpeta donde se ejecutan las aplicaciones para Xampp. En ella se ha creado un archivo de texto llamado prueba.php que contiene únicamente escrito (sin etiquetas ni nada) Hola Mundo.


Ahora con esto podemos ver que están bien los permisos a nuestro directorio.
En el navegador (en mi caso Google Chrome) escribimos en la barra de direcciones: localhost/prueba.php   y se nos presentará lo siguiente:


Con esto ya tenemos listo el directorio para trabajar normalmente en el curso.



_________________________________________________________________________________


Seguridad


Como ya lo había dicho Xampp presenta problemas respecto al running de MySql y phpMyAdmin, lo que hice fue darle claves a Apache, MySql y al proFTPD. 

Además es conveniente hacerlo ya que al estar en la web cualquiera podría tener acceso a nuestros archivos. Para ello en el terminal: 

sudo /opt/lampp/lampp security


Se inicia el control de seguridad, donde nos irá preguntando si queremos poner contraseña a los distintos servicios o páginas, escribimos "yes", pulsamos Enter y escribimos la contraseña 2 veces. 

Asì cuando volvamos a cargar en el navegador: localhost. Se nos pedirá las respectivas contraseñas (bueno sólo hemos dado seguridad a nuestro servidor pero con esto no hemos resuelto el problema de la conexión con la base de datos)



_________________________________________________________________________________


Solucionando el running de MySql


Lo que hice fue agregar la instalación de MySql (aunque por contrario que parezca ya que según nos indica el directorio nos dice que si tenemos instalado mysql, esto lo vemos en el opt/lampp/mysql).
Continuando, escribimos en la terminal:

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

Con esto hemos instalado mysql, habitualmente nos pediría contraseña pero como ya le hemos puesto en el apartado anterior de seguridad ya no nos lo pedirá.

Esta es la solución que me funcionó y me permitió solucionar el running de MySql y el de phpMyAdmin.



_________________________________________________________________________________


Xampp puesto a punto

  1. Abrimos el Xampp Control Panel e iniciamos XAMPP
  2. Donde se ubica el mouse nos indica que podemos iniciar los componentes de Xampp o podemos hacerlo individualmente.
  3. En el navegador escribimos localhost y nos presentará el entorno de Xampp. En el panel izquierdo seleccionamos Status y veremos lo siguiente:
  4. Con esto ya logramos que MySQL database esté activo
  5. Igualmente vamos al panel izquierdo en la sección de herramientas seleccionamos phpMyAdmin y vemos que ya nos es posible trabajar con la base de datos.


Listo, esta la solución que encontré y me funcionó para instalar Xampp 1.8.3 para Ubuntu 12.04.


Tomé como referencia la guía de instalación de Xampp 1.8.3 para Ubuntu 13.10, disponible en REFERENCIA DE GUÍA.