martes, 1 de mayo de 2012

06 Video

05 Código Fuente y Direcciones web.




Copia espejo en box.com: box.com

Páginas Webs Relacionadas:

Post en el foro de gambas-es.org:
Post explicando la instalación de apache2 y mysql:

Videos en YouTube:


01 Introduccion. Instalación servidor apache2


Manual Paso a Paso:

Como empezar a Realizar Páginas Web dinámicas con Gambas

(Para gambas 2.xx y 3.1)




Redactado por Julio Sánchez Berro


Agradecimientos al foro Gambas-es.org
y en especial a sus miembros Soplo y Jguardon
por sus aportaciones




Instalar Apache y MySQL


1.- Lo primero que haremos será aumentar nuestros privilegios como root:
$ sudo su


2.- Instalamos MySQL 5
# apt-get install mysql-server mysql-client


2.1.- Llegará un momento en que te pedirá la contraseña para el usuario root de MySQL
Nueva contraseña para el usuario “root” de MySQL : TUCLAVE
Vuelva a introducir la contraseña para el usuario “root” de MySQL: TU CLAVE


3.- Instalamos Apache2
Ya esta disponible en los repositorios, así que solo ejecutamos la siguiente instrucción:
# apt-get install apache2


Luego que instale verificamos en nuestro navegador http://localhost ó desde cualquier maquina de nuestra red local escribimos la ip del equipo donde estamos montando nuestro servidor

Si todo va bien debería mostrarnos en nuestro navegador algo como esto: It works!







02 Configurar Apache para ejecutar script realizados en Gambas

Configurar Apache para poder ejecutar script realizados en Gambas

0) Tenemos que tener instalado el componente gambas2-script (o gambas3-script)
Si no lo tenemos instalado, lo instalamos con
$sudo su apt-get install gambas2-script


1) Crear enlaces simbólicos y carpetas

Debes de crear un enlace símbolico al programa gbs2 (o gbs3)

Nota:
Si no sabes donde esta el archivo gbs2 (o gbs3 para gambas3), lo puedes buscar con el comando whereis
$whereis gbs2

Que te devolverá las rutas donde este el programa.

Dependiendo como lo hayas instalado (con paguete .deb, repositorio oficial, o compuilandolo), estas rutas podrán variar.

Imaginamos que se haya instalado en /usr/bin, ahora vamos a crear el enlace:

Para Gambas2
sudo ln -s /usr/local/bin/gbs2 /usr/local/bin/gbw2


(si lo hemos compilado a mano, se instala en /usr/local)

Nota:
Si instalas gambas desde paquete .deb, la ruta sera:
sudo ln -s /usr/bin/gbs2 /usr/bin/gbw2


Para Gambas3
sudo ln -s /usr/local/bin/gbs3 /usr/local/bin/gbw3

Nota:
Si instalas gambas desde paquete .deb, la ruta sera:
sudo ln -s /usr/bin/gbs3 /usr/bin/gbw3


Ahora tendras que crear una carpeta donde vayas a alojar los archivos de script.
Por ejemplo la puedes crear en /usr/bin/cgi-bin

Con permiso de ejecución para todos los usuarios:
sudo chmod 705 /usr/bin/cgi-bin

Es esta carpeta, es donde alojarás tus script realizados en gambas. sudo chmod 705 miscript.cgi



2)Editar el archivo de configuración de apache2 (/etc/apache2/sites-available/default)

sustituir:

ScriptAlias /cgi-bin/ “/usr/lib/cgi-bin/”
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

y por:

ScriptAlias /cgi-bin/ /var/www/cgi-bin/

<Directory "/var/www/cgi-bin/">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
Addhandler cgi-script .cgi .pl .gb
</Directory>


3) Y reiniciar apache
sudo /etc/init.d/apache2 restart



Ya esta tu servidor apache preparado para ejecutar scripts CGI en gambas....!!

Nota:
Si te aparece este error:

apache2: bad user name ${APACHE_RUN_USER}

En esta dirección explica como arreglarlo: http://guerratopia.com/error-apache2-bad-user-name-apache_run_user

Básicamente esta es la solución:
Abrimos una terminal y ponemos lo siguiente:
sudo gedit /etc/apache2/apache2.conf
Dentro buscamos estas lineas:
# These need to be set in /etc/apache2/envvars
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
Y las sustituimos la parte de ${APACHE_RUN_USER} y de ${APACHE_RUN_GROUP} por www-data, quedara algo asi:
# These need to be set in /etc/apache2/envvars
User www-data
Group www-data
Después guardamos y cerramos y reiniciamos apache.
sudo /etc/init.d/apache2 restart


Para ver el fichero de log con los errores que se hayan producido en apache2:
cat /var/log/apache2/error.log

03 Un ejemplo: Web dinamica con SQLite (1)


Os explico a continuación un pequeño ejemplo.

Vamos a crear una pagina web con un formulario (inicio.html), donde preguntemos al usuario por unos datos (nombre o apellidos), y según lo que introduzca el usuario y usando un script realizado en gambas (consulta.cgi), haremos una consulta a una base de datos del tipo Sqlite (llamada agenda), y mostraremos los resultados en otra pagina web.

La estructura a crear es la siguiente:
a)Base de datos Sqlite:
La base de datos sqlite estará en:
/var/www/base/
Y se llamará
agenda
Nota:
La base de datos “agenda” contiene una tabla llamada “lista” con varios campos ( nombre, apellidos y teléfono).

b)Archivo inicio.html
Estará en:
/var/www/inicio.html

c)Archivo script en gambas:
Estará en:
/var/www/cgi-bin/

Y se llamará: (consulta.gb)
consulta.cgi


El código:
El archivo inicio.html:
<html>
<head>
<title>Ejemplo Web de Bases de datos con Gambas</title>
</head>
<body>

<FORM action="http://localhost/cgi-bin/consulta.cgi" method="GET">
<h1>Ejemplo Web de Bases de datos con Gambas</h1>
<h3> Buscar por nombre o apellido </h3>
<P>
Introduzca el nombre:<INPUT TYPE="text" NAME="nombre"><BR>
<INPUT type="submit" value="Enviar"> <INPUT type="reset">
</P>
</FORM>

<FORM action="http://localhost/cgi-bin/consulta.cgi" method="GET">
<P>
Introduzca el apellido:<INPUT TYPE="text" NAME="apellido"><BR>
<INPUT type="submit" value="Enviar"> <INPUT type="reset">
</P>
</FORM>
</body>

</html>
Como veis son dos formularios (<form>) y usa el metodo GET para enviar el nombre de la variable (nombre/apellido) y el valor que ha escrito el usuario.

Esta es la captura de pantalla que se obtiene:



 

04 Un Ejemplo: Web dinamica con SQilte (2)


El archivo script en gambas: consulta.cgi

#!/usr/bin/env gbw2
<%
USE "gb.db"
USE "gb.db.sqlite3"

Dim myreqnombre as String
Dim myreqapellido as String
dim conexion as connection
dim tablacontactos as result
dim sentencia as string

myreqnombre = Request["nombre"]
myreqapellido = Request["apellido"]

conexion=new connection
conexion.type="sqlite3"
conexion.host="/var/www/base"
conexion.name="agenda"
conexion.open()
if error then
print "Error al conectarse a la base de datos"
conexion=null
else
print "<html><body>"
if myreqnombre<>"" then
print "El dato pasado es el nombre..."
print myreqnombre
print "<br>"
sentencia="Select * from lista where nombre like '%" & myreqnombre & "%'"
print "<br> La sentencia que ejecuto es: " & sentencia & "<br>"
tablacontactos=conexion.Exec(sentencia)
print "Numero de registros: " & tablacontactos.count & "<br>"
print "<TABLE BORDER=\"1\">"


do while tablacontactos.Available
print "<TR>"
print "<th>" & tablacontactos["nombre"] & "</th>" & "<th>" & tablacontactos["apellido"] & "</th>" & "<th>" & tablacontactos["telefono"] & "</th>"
print "</TR>"
tablacontactos.movenext()
loop
print "</TABLE> "
endif

if myreqapellido<>"" then
print "El dato pasado es el apellido..."
print myreqapellido
print "<br>"

sentencia="Select * from lista where apellido like '%" & myreqapellido & "%'"
print "<br> La sentencia que ejecuto es: " & sentencia & "<br>"
tablacontactos=conexion.Exec(sentencia)
print "Numero de registros: " & tablacontactos.count & "<br>"
print "<TABLE BORDER=\"1\">"

do while tablacontactos.Available
print "<TR>"

print "<th>" & tablacontactos["nombre"] & "</th>" & "<th>" & tablacontactos["apellido"] & "</th>" & "<th>" & tablacontactos["telefono"] & "</th>"
print "</TR>"
tablacontactos.movenext()
loop
print "</TABLE> "

endif

if myreqapellido="" and myreqnombre="" then
Print "Debe de escribir un criterio" & "<br>"
endif

print "<a HREF=\"http://127.0.0.1/inicio.html\"> Ir al Inicio</A>"

print "</body></html>"
endif
%>

Varias cosas a comentar:
  1. Los script para web, no admiten comentarios, (por eso no he comentado nada del código) por que se genera un error en el servidor y no ejecuta el script
  2. La orden “USE” debe de ir en mayúscula. Esta orden indica los componentes que vamos a usar en el programa
  3. La primera línea “#!/usr/bin/env gbw2” indica al servidor que estamos ejecutando un script del tipo de gambas2
  4. Con <% y %> indicamos que empiezan órdenes en el lenguaje Basic




Captura de pantalla: