Instalando Apache, php y mysql en windows manualmente en windows

Apache, php y mysql son aplicaciones altamente demandadas en el mundo de la web. Por esta y muchas razones vamos a hacer una instalción manual de dichas herramientas manualmente en Windows para su uso.

Un repaso de lo que haremos:

  1. Instalar apache
  2. Instalar php
  3. Configurar apache para soportar php
  4. Instalar mysql
  5. Habilitar mysql para php

Instalar apache

Primero, descarga apache en su versión mas favorable en su repositorio. Sin mas ni menos se procese a instalar como una aplicación convencional de windows.

Al finalizar la instalación podran ver una estructura de archivos tal como esta:

C:\Archivos de programa\Apache Software Foundation\Apache2.2

C:\Archivos de programa\Apache Software Foundation\Apache2.2\conf (donde esta el archivo httpd)

C:\Archivos de programa\Apache Software Foundation\Apache2.2\htdocs (donde se depositaran todos los archivos html, php y demas).

Para comprobar que al instalación se efectuó correctamente pueden acceder al siguiente enlace:

htttp://localhost o como en mi caso: http://localhost:8080

Configurar apache para soportar php

Abrir el archivo httpd con un editor de texto.

Al final del archivo debemos agregar:


# PHP CONFIG

LoadModule php5_module C:/PHP/php5apache2_2.dll
PHPIniDir "C:/PHP/"
AddType application/x-httpd-php .php

Lo que está en negrita corresponde al directorio donde se encuentra la instalación de php.

Habilitar MySQL para php

Editar el archivo php.ini y buscamos:


;extension=php_mbstring.dll

;extension=php_mysql.dll

;extension=php_mysqli.dll

y eliminamos los ; (punto y coma).

Ahora, debemos especificar el directorio de extenciones de php. Buscamos:

extension_dir = "./"

Y lo reemplazanmos por el directorio antes dicho. Generalmente se encuentra en C:\php\ext :

extension_dir = "C:\php\ext"

Y por último, copiamos el archivo libmysql.dll que se encuentra en el directorio de PHP y pegarlo en la carpeta se system32 de la instalación de Windows. El archivod php_mysql.dll no servirá si no hacemos este proceso.

ene 4th, 2012 | Filed under Apache, mysql, Php, Windows

Almacenar imagen en SQL Server 2005 desde Java

Bueno, este post lo empece gracias a Xosel que me ha dado la iniciativa de crear un ejemplo de cómo guardar una imagen en SQL Server, en mi caso: la versión 2005.

Lo primero sería crear la conexión a la base de datos. Para ello tenemos ya un post que explica cómo hacerlo:

http://apuntes.delibertad.com/java/conexion-entre-sql-server-y-java/

Como ya he dicho en otros post: la interacción entre java y una base de datos va siendo casi lo mismo, por lo general la forma de conexión, las consultas, actualizaciones y demás conservan un 90% de similitud, pero bueno, vamos al ejemplo concreto:

Yo he creado una base de datos llamada Google, y en ella he hecho una tabla con la siguiente estructura:


use google

go
Create Table fotos
(
id_foto int primary key,
foto varbinary(max) not null
)

Aora bien, luego de crear la conexión tenemos algo como esto:

DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver());
Connection connection = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=Google", "sa", "adminadmin");

Creamos la consulta:

File file = new File("ayuda.png");

Cargamos el archivo a la aplicación:

PreparedStatement ps = connection.prepareStatement("insert into fotos(id_foto, foto) values (1, ?)");

Creamos un flujo para leerlo, y asi sacar los bytes:

FileInputStream fis = new FileInputStream(file);

Asignamos a la consulta el flujo de bytes que corresponden a la imagen cargada:

ps.setBinaryStream(1, fis, (int) file.length());

Y por último se ejecuta la consulta:

ps.executeUpdate();
connection.commit();

Aca dejo las fuentes del proyecto:

Conexión entre Java y SQL Server 2005

Viendo que no había formulado un ejemplo para tal función, hoy decidí hace este pequeño código para ir empezando con ello.

Nada fuera de lo normal a otros tipos de conexiones yo en mi caso he utilizado los siguientes elementos:

  • Java 1.6
  • JRE 1.6
  • SQL Server 2005

Adicional a esos tres elementos me he descascardo el driver JDBC que soporta SQL server 2005 desde su pagina principal.

Una vez descargado el driver que por cierto es un zip, lo descomprimimos. En él vamos a encontrar dos archivos jar:

  • sqljdbc4.jar
  • sqljdbc.jar

Únicamente agregamos el sqljdbc4.jar al proyecto

Con ayuda de SQL Server Management Studio he creado una base de datos llamada Google, un usuario nombrado como sa y la contrasena asignada como adminadmin.

Creamos la conexión:

DriverManager.registerDriver( new com.microsoft.sqlserver.jdbc.SQLServerDriver() );
Connection connection = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=Google", "sa", "adminadmin");

El String de conexión es mas que claro, pero veamos cuales son los argumentos:

  • jdbc:sqlserver : es el protocolo de la conexión, es una obligación ponerlo
  • localhost : es el servidor al que nos vamos a conectar, en este caso la base de datos y la aplicación están la misma pc.
  • 1433 : el puesto donde escucha el servicio de SQL Server 2005 (el puerto 1433 viene por defecto)
  • databaseName=Google : es el parámetro de la base datos, la palabra “Google” puede cambiarse por otro nombre, según sea su nombre de base de datos.

Por último probamos la conexión:


if (connection != null) {
System.out.println();
System.out.println("Successfully connected");
System.out.println();
// Meta data
DatabaseMetaData meta = connection.getMetaData();
System.out.println("\nDriver Information");
System.out.println("Driver Name: " + meta.getDriverName());
System.out.println("Driver Version: " + meta.getDriverVersion());
System.out.println("\nDatabase Information ");
System.out.println("Database Name: " + meta.getDatabaseProductName());
System.out.println("Database Version: " + meta.getDatabaseProductVersion());
}

Si todo ha salido bien, y hemos establecido una conexión la aplicación debería imprimir algo como esto:

Driver Information
Driver Name: Microsoft SQL Server JDBC Driver 2.0
Driver Version: 2.0.1803.100

Database Information
Database Name: Microsoft SQL Server
Database Version: 9.00.1399

Errores encontrados durante la creación de la conexión

Mientras trataba de crear la conexión me encontre con varios problemas, y bueno, investigando dí con la solución. Acá voy a poner cuáles fueron y su resolución (al menos para mí).

  • Use the sqljdbc4.jar class library, which provides support for JDBC 4.0.”

Al descomprimir el zip del driver, cometí el error de agregar los dos jars mencionados al principio de éste post. La solución: eliminar el jar sqljdbc.jar del proyecto.

  • The TCP/IP connection to the host has failed. java.net.ConnectException: Connection refused: connect

Al parecer este error se debe a que el servicio de SQL server no acepta conexiones así no más, y por lo tanto, el protoco TCP/IP esta desabilitado por medio de SQL Server. La solución que encontré fue la siguiente, abrir SQL Server Configuration Manager, luego seleccionar la opción Protocols for SQL SQLEXPRESS, seleccionas las propiedades para TCP/IP; luego seleccionas el tab IP Adresses, por último asignarle el valor 1433 a la propiedad IPAll. Y claro, no olvidarse de dar clic derecho sobre TCP/IP
y habiliar ésta opción.

  • WARNING: Failed to load the sqljdbc_auth.dll

El driver JDBC soporta el uso de dos tipos de autentificación integrada sobre Windows a través del argumento de conexión integratedSecurity. Para usar la autentificación integrada se debe copiar el archivo sqljdbc_auth.dll al directorio de WINDOWS.  Si embargo, para evitarme cualquier tipo de error también lo he copiado en el directorio system32 y en la carpeta root de mi proyecto.

Nota: En un procesador de 32 bits, se debe usar el sqljdbc_auth.dll del folder auth/x86. Un procesar de 64 bits debe usar el  archivo sqljdbc_auth.dll del folder x64.

Adjunto las fuentes del proyecto: