XAMPP/LAMPP

Esto es algo que escribi ya hace unos meses en otro blog que ya no atiendo, anexo esto aqui en vista de que se que existen partes de este contenido que se que puede hacerme falta en algun momento asi que lo incorporo aqui. Esta es una documentacion sobre la instalacion y configuracion de LAMPP para ambiente de desarrollo.

Antes que todo, algo a comentar:

Parto de armar este post en base a la referencia de varios sitios, desafortunadamente creia que habia indicado dichas referencias al pie del post pero no fue asi, y no consigo en mi enorme folder-tree de favoritos de firefox esos links (no se si los guarde o si esta en mi enorme estrucutra de favoritos y comenzar a ver cual podria ser y me disculpo por ello en esta ocasion y sobre este post. Tambien recuerdo otros sitios que duplicaban la misma informacion “exactamente igual” un copy+paste, eso en internet es un problema ya que no ayuda a detectar la fuente original del material debido a que no lo mencionan, rompiendo el vinculo hacia la fuente.

Empezando:

Descargamos lampp de apachefriends.org abrimos una terminal, nos dirigimos a la carpeta donde se encuentra y lo descomprimidos en la carpeta /opt que es donde recomiendan en la web.

sudo tar xvfz xampp-linux-1.7.2.tar.gz -C /opt

sudo: Super User Do (algo asi como decir, el superusuario va a hacer tal cosa, darle privilegios para ello) luego del comando tar, los parametros x(eXtraer, v:verbose ver la descompresion, f: el objeto es de tipo archivo(file), z: descomprime con gzip, ungzip, gunzip -C le indica donde lo descomprimira (el directorio).

La carpeta opt es para la instalación de paquetes que no requieren dependencias, debe ser por esto que aconsejan que sea ahi. Luego de descomprimirlo lo ejecutamos:

sudo /opt/lampp/lampp start

En caso de que indique un error que no permita correr Apache, esto es debido a algun paquete de Apache que debe estar activo y en nuestro sistema que de seguro fue descargo de algun repositorio al momento de actualiar algo, lo detenemos:

sudo /etc/init.d/apache2 stop

Volvemos a iniciar lampp, si todo se inicia bien, procedemos a abrir el navegador y escribimos localhost. Debe salir o “Its Works!” o la ventana de presentacion de lampp, donde escogemos nuestro idioma para luego acceder al panel o menu de lampp.

Debemos activar la seguridad puesto que los usuarios de lampp poseen claves vacias predeterminadamente, lo cual no es seguro. En el menu de la izquieda en la web local de lampp podremos ver Status o Security donde nos indican que hacer para habilitarla.

sudo /opt/lampp/lampp security Indicamos [yes] a todo y le indicamos un password a todos, puede ser el mismo password o preferiblemente por mayor seguridad distintos. Debemos cerrar la web de lampp, debemos por la terminal detener lampp y volverlo a iniciar:

sudo /opt/lampp/lampp restart

Para quienes no lo sepan, lampp si trae de forma grafica el poder ver el status play/stop de apache, mysql y php de forma ventana, un script hecho en python que nos ayuda visualmente con el lampp:

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

Algo asi como la interfaz que xampp ofrece para windows Abrimos el navegador, o refresh a la pagina de lampp y nos pedira login y password, el usuario es: lampp, para myphpadmin el usuario es pma, pero este usuario no tiene privilegios para crear bases de datos ni usuarios, por lo que en el caso de myphpadmin entramos con el usuario root, y desde este usuario, nos creamos otro, que es con el que trabajariamos con privilegios de crear databases, tables, view, otros usuarios de ser necesario, etc.

Al final de la web de descarga de apachefriends.org se encuentra los comandos de xampp/lampp, los que se han indicado en este post y otros. Tanto para xampp en windows como lampp para linux, nuestras paginas .php, .hml, etc, deben estar en la carpeta “htdocs” en linux /opt/lampp/htdocs pero obviamete no podemos colocar de forma revuelta estos archivos, mas si son varios proyectos web y no uno solo, lo predeterminado que he visto a consejo es colocar dentro de la carpeta /htdocs una carpeta principal y dentro de esta las subcarpetas por cada proyecto, de esa forma cuando un dia agamos respaldo, tomamos la carpeta padre y listo, puede ser proyectosweb, pagweb o webs.

sudo mkdir /opt/lampp/htdocs/webs

Pero no tenemos el debido acceso de publicar en esta carpeta debido a que nuestro usuario no es el usuario root, en la terminal podemos tener esos privilegios cada vez que reurrimos al comando sudo, pero para el momento de publicar archivos web, no se nos permitira agregar archivos ahi. Para evitar esto, lo que hacemos es que nuestro usuario herede la carpeta.

sudo chown usuario -R /opt/lampp/htdocs/webs

Podemos darle permisos totales 777 a la carpeta pero en caso de que a ella accedan otros usuarios, por intranet, internet lo mejor es que sea 775 por seguridad.

sudo chmod 775 -R /opt/lampp/htdocs/webs

Vinculemos la carpeta que esta en /htdocs/webs con una que apunte a ella en nuestra carpeta de usuario:

ln -s /opt/lampp/htdocs/webs /home/usuario

De esta forma no tenemos que ir hasta /opt/lampp/htdocs/webs/proyecto para guardar algun archivo web, sino que podremos guardar nuestros archivos en una carpeta dentro de nuestras carpetas de usuario ya que el vinculo o link fue creado.

Lo que coloquemos en /home/usuario/webs/proyecto se guardara realmente en /opt/lampp/htdocs/webs/proyecto. Igual como el Windows cuando se crea un acceso directo en el escritorio, eso mismo es esto pero en linux.

Para evitar estar escribiendo en el navegador:

http://localhost/webs/proyectoX/index.php creamos un host virtual, como un Alias para no indicar esta URL local sino solo poner http://proyectoX/. Esto lo hacemos editando un archivo (el httpd.conf de apache):

sudo gedit /opt/lampp/etc/httpd.conf

Buscamos y le quitamos el simbolo # a lo siguiente para descomentariarlo y hacerlo activo o util:

#Include etc/extra/httpd-vhosts.conf

El httpd-vhosts.conf es otro archivo al cual tambien entraremos para descomentariarle algo de igual forma:

sudo gedit /opt/lampp/etc/extra/httpd-vhosts.conf

Este archivo ya viene con unos ejemplos para crear o establecer unos hostvirtuales por lo que tomanos uno de estos y lo editamos para su uso. Copie y pegue uno de los ejemplos y lo edite quedando esto:

DocumentRoot /opt/lampp/htdocs/webs/sahim ServerName sahim

En mi caso “sahim” seria un proyecto que estaria dentro de la carpeta principal webs: /opt/lampp/htdocs/webs/sahim

Guardamos el archivo y reiniciamos lampp:

sudo /opt/lampp/lampp restart

Virtualhost:

Solo falta que al momento de escribir en el navegador (firefox en mi caso): http://sahim

Nos cargue la pagina index.html o index.php que tengamos hecha y no el que nos indique error pagina no encontrada, ya que nuestro sistema operativo resolvera la URL y no la encontrara en internet. Esto se arregla editando y ajustando algo en el archivo hosts ubicado en la carpeta /etc/hosts.

sudo gedit /etc/hosts

En este archivo veremos al comienzo unas direcciones IP con un nombre algo asi como: 127.0.0.1 localhost Simplemente debajo de esta o de la ultima, colocamos la nuestra, por ejemplo en mi caso:

127.0.0.1           localhost
127.0.0.1           sahim

Guardamos el archivo y en el navegador escribimos el nombre del proyecto bien sea: http://proyecto o solo proyecto (el navegador anexara el hhtp delante) En mi caso seria: http://sahim

La pagina index que tengas en la carpeta aparecera, puedes crear algo de prueba, abriendo el editor de texto y escribiendo algo como:

Guardas el archivo llamandolo index.php en /webs/proyecto y al escribir en el navegador: http://proyecto debe aparecer una pagina que diga: Hola Mundo Incluso solo escribiendo en un txt que guardaremos como .php es mas que suficiente para probar. Con esto podremos comenzar con un proyecto web local con la base de lampp, el resto ya es de tu parte con php y mysql, o postgresql, queda a tu criterio.

Solucionando algunos problemas en EasyPHP

Si usas EasyPHP en vez de XAMPP/LAMPP veras que con EasyPHP-1.8 solo tienes que hacer un pequeno ajuste en el archivo de configuracion de Apache (httpd.conf) para que el localhost del navegador apunte a tu carpeta de proyectos web. No he encontrado EasyPHP para linux asi que podriamos suponer que es solo para Windows. Si tienes tu carpeta de proyectos web en C:\www en el archivo de Apache (httpd.conf) debes buscar el DocumentRoot y cambiarlo a tu ruta.

El DocumentRoot “$[path]/www” lo cambias por DocumentRoot “C:\www”

Esto seria todo para el EasyPHP-1.8 pero si usas un EasyPHP superior version 2.0 o v3.0, en la web de EasyPHP (www.easyphp.org) para las fechas de este Post, estan las versiones EasyPHP-5.3.0 Release y 6.0 Developer. En estas versiones (superior a la 1.8) en el archivo de Apache debemos editar otra cosa ademas de lo ya comentado.

Algo mas abajo del DocumentRoot busca algo que dice:

#
# This should be changed to whatever you set DocumentRoot to.
# ======================================================
# !!! DO NOT CHANGE THIS LINE AND THE FOLLOWING ONES !!!
# DocumentRootDirectory
<strong><Directory "C:/www" /></strong>
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    # Options FileInfo AuthConfig Limit
    #
    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #
    Order allow,deny
    Allow from all
</Directory>

Ya en mi caso tengo indicado <Directory “C:\www”> pero originalmente esta seccion aparece con <Directory “${path}” la cual cambias con la ruta de tu carpeta.
Si no haces esto, al momento de escribir el localhost en el navegador, te mostrara un Acceso denegado Error 403.

Comentando sobre la situacion de “table read only” en MySQL

Buscando una lista de Paises y sus Ciudades (aunque en mi caso buscaba Paises, Estados y sus Ciudades) encontre este instructivo sobre Select dependientes (de 2 select y de hasta 3 select) con lo cual para el ejemplo de 2 select dependientes, el ejemplo de descarga viene con un archivo .sql que importamos a mysql (o por phpmyadmin) a nuestra BD o creamos la que necesita dicho archivo para incluir estas tablas: lista_paises y lista_estados. Pero faltan paises y sus ciudades, asi que al intentar ingresar mi pais, solo recibo el aviso de que la tabla es de solo lectura ‘read only’ por lo que buscando encontre este post al cual me hubiese gustado escribirme un comentario de agradecimiento a su autor, pero en link de comentario no me carga la ventana de comentarios (no sea que ya lo tenga cerrado) ademas de que nunca he aprobado el que una persona tenga que registrarse para tan solo pueda escribir un comentario, estos deberian ser libres, ya que despues de todo se prestan a moderacion por parte del autor y editor del articulo. Al menos espero hacer ping al post por establecer su link aqui.

Entonces, como comentan en el post del blog ya mencionado, con cambiar al dueno y grupo para tener acceso a manipular las tablas. Coloco como apuntes las mismas indicaciones puesto que ya me ha pasado en repetidas veces, que informacion de otras partes con el tiempo pueden ya no estar ahi, link rotos, blogs cerrados, informacion cambiada, donde gracias al cache de google podemos volver a llegar a dicha informacion, asi que para tener un respaldo y sabemos que es mas facil conseguir las cosas cuando la informacion se repite mas de una vez en internet, indico los pasos para evitarnos el ‘read only’ de cualquier tabla al momento de intentar ingresar informacion en ella.

Nos dirigimos donde MySQL tiene todas las BDs incluyendo las nuestras:

cd /var/lib/mysql

Y procedemos a hacer el ajuste de dueno y grupo, donde indicamos que todas (el *) las BDs y tablas pertenescan al grupo de mysql, ya que en mi caso, las tablas importadas pudieron haber sido creadas por un usuario de otro grupo y por ende no se nos permite alterarlas.

Advertencia:

Antes de ejecutar la siguiente instruccion, recordamos que se debe de estar dentro de la carpeta donde se dara/cambiara estos permisos, por eso se comenta mas arriba que debemos estar en esa carpeta (cd /var/lib/mysql) ya si abres una terminal y ejecutas la instruccion a continuacion, estaras cambiandole a tu carpeta de usuario (/home/miusuario/) tus permisos sobre ella y sera el grupo mysql el que sera dueno de tu /home/miusuario, por lo que debe quedar claro que donde se esta haciendo esto.

sudo chown -R mysql:mysql *

Para que MySQL tome los cambios (los cuales MySQL aun no sabe) le ayudamos a que se entere reiniciandolo:

sudo /etc/init.d/mysql restart

Si en tu caso no tienes Apache, PHP y MySQL instalados por separado (integrados o no) sino que tienes XAMPP/LAMPP entonces para reiniciar MySQL si la mente no me falla debria ser:

sudo /opt/lampp/lampp restartmysql

Sino en todo caso con reinciiar todo el LAMPP vastaria:

sudo /opt/lampp/lampp restart

Luego de haber reiniciado el MySQL ya deberiamos poder ingresar informacion a las tablas.

Otra ultima cosa…

Apache no muestra mis archivos o carpetas dentro de la raiz

Me ha pasado que luego de un respaldo y reinstalacion del sistema por razones que no caben o no entran en este tema, al volver a colocar mi respaldo en /var/www/ en localhost no se me mostraban todas las carpetas de proyectos web, solo los archivos de la raiz. Me fije que al crear una carpeta nueva, esta si se veia lo cual indicaba que era un problema de persmisos, exactamente eso, con un chmod 777 (mas rapido que propiedades de cada carpeta e indicar Acceso a sus archivos en Grupo y Otros) con un sudo chmod -Rfv 777 /var/www/ recursivamente colocamos todo el contenido de carpetas de /var/www a ser visto nuevamente por Apache para un servidor de desarrollo No de produccion, hablamos de un localhost en este caso.

Algunos buenos comandos para usar en LAMPP:

start	Inicia XAMPP.
stop	Detiene XAMPP.
restart	Reinicia XAMPP.
startapache	Inicia solamente Apache
startssl	Inicia el soporte de SSL de Apache.
startmysql	Inicia unicamente la base de datos MySQL
startftp	Inicia el ProFTPD server. puedes subir tus archivos via ftp.
stopapache	Detiene Apache.
stopssl	Detiene el soporte de SSL de Apache.
stopmysql	Detiene MySQL.
stopftp	Detiene el ProFTPD server.
security	Inicia el programa anteriormente mencionado para establecer una mejor seguridad.
tambien esta la lista de las carpetas y archivos importantes
/opt/lampp/bin/	es la carpeta en donde se encuentran los comandos de XAMPP. por ejemplo el codigo /opt/lampp/bin/mysql invoca el monitor de MySQL.
/opt/lampp/htdocs/	Es el directorio donde se encuentran los archivos root de Apache.
/opt/lampp/etc/httpd.conf	Archivo de configuracion de Apache.
/opt/lampp/etc/my.cnf	Archivo de configuracion de MySQL.
/opt/lampp/etc/php.ini	Archivo de configuracion de PHP.
/opt/lampp/etc/proftpd.conf	Archivo de configuracion de PROFTPD.
/opt/lampp/phpmyadmin/config.inc.php	Archivo de configuracion de phpMyAdmin.
con esto acabamos, claro que si tambien quieren desinstalar Xampp solo escriban lo siguiente en la terminal:
rm -rf /opt/lampp

enjoy!


About this entry