domingo, 8 de mayo de 2016

Conectar Apache y PHP con MSSQL en Ubuntu 14.04

En un artículo anterior explicaba cómo instalar LAMPP en Ubuntu 14.04, en esta ocasión vamos a conectar Apache y PHP con MSSQL, para este ejemplo voy a explicar cómo trabajar desde una máquina virtual con windows 7 y SQL Server 2012.


Primero necesitamos instalar el conector dblib, para esto iniciamos sesión en una terminal como root e instalamos los paquete necesarios:

apt-get install php5-sybase php5-odbc freetds-common

Luego debemos reiniciar el servidor apache

service apache2 restart

Ahora hay que modificar el archivo freetds, en este ejemplo voy a usar nano pero pueden usar el editor que deseen

nano /etc/freetds/freetds.conf

Luego hay que agregar en él al final del archivo la conexión a la máquina que posee instalado el SQL Server

[MSSQL]
        host = 192.168.0.225
        port = 1433
        tds version = 11.0


En este caso el valor dentro de los corchetes será el nombre que recibe nuestra conexión, muy importante cuando definamos la conexión en nuestras aplicaciones. El valor de host será la ip de la máquina. El puerto por defecto es 14433, modificar port si se ha cambiado. Y la tds version se establece de acuerdo a la versión de MSSQL, en este caso, la versión 11 es para la versión 2012 del servidor de bases de datos

Ahora hay que configurar la máquina virtual para que escuche nuestro PC, para eso, con el sistema operativo windows iniciado, vamos a la configuración de la red de la máquina virtual (no la de windows ni la de linux) y damos click en preferencias de red, luego debemos verificar la configuración que debe ser como la siguiente:

una vez hecho esto debemos verificar que tenemos conexión entre la máquina local y la invitado, para eso hacemos ping a la ip de la máquina virtual.

Ahora hay que verificar que SQL Server permita conexiones a través de la red, para esto vamos a windows y abrimos Inicio -> Microsoft SQL Server -> Herramientas de configuración -> Administrador de configuración de SQL Server.
Buscamos el apartado Configuración de red de SQL Server -> Protocolos de SQLEXPRESS. Verificamos que canalizaciones con nombre y TCP/IP se encuentren habilitadas. Luego click derecho sobre TCP/IP y establecemos el puerto a 1433, el dinámico puede dejarse o ponerse cero (probar ambas configuraciones en caso de error).
Después hay que indicarle al firewall de Windows (si lo tenemos habilitado) que permita la conexión a través de la red con MSSQL. Para ello podemos oprimir la combinación de teclas Windows_R y escribir firewall.cpl. En la ventana que se abre debemos buscar al lado izquierdo Permitir un programa o una característica a través del Firewall de windows.
En la nueva vista damos en Cambiar la configuración para habilitar los cambios.
Una vez habilitado damos click en Permitir otro programa luego en examinar y buscamos el siguiente archivo: C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\Binn\sqlservr. Damos click en Agregar.

Repetimos el proceso con el archivo: C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.

Una vez agregado debería verse de la siguiente forma:
Nótese cómo se encuentra marcada la opción Doméstica/trabajo.

Ahora, para evitar tener que evitar el servicio manualmente, vamos a la configuración de servicios y los ponemos automáticos, para esto usamos la combinación de teclas Windows_R escribimos services.msc, esto abrirá el panel de configuración de servicios. Verificamos que tanto SQL Server como SQL Server Browser estén Iniciados y el tipo de inicio sea automático. Para cambiar la configuración damos damos doble click sobre cada uno.
Luego de esto deberíamos poder conectarnos desde la consola usando alguna de estos comandos:

tsql -S 192.168.0.225 -U sa -P MiPassword -p 1433
o
tsql -H MSSQL -U sa -P

Una vez verificado que todo funciona, podríamos conectarnos desde una aplicación PHP por ejemplo usando el siguiente dsn:

dblib:host=MSSQL;dbname=blonder413

donde MSSQL es el nombre que le dimos en el archivo freetds y dbname es el nombre de nuestra base de datos.

0 comentarios:

Publicar un comentario