Este pequeño manual, describe como instalar un servidor Apache basado en Centos 6.5 que permita la conexión a bases de datos en SQLServer a través de FreeTDS, ademas aproveche la seguridad que proporciona SELinux, delimitando el dominio de ejecución del servicio.
Paso.1 Verificamos que SELinux este activado.
[root@localhost ~]# getenforce
Enforcing
Paso2. Se realiza la instalación del servidor Apache.
[root@localhost ~]# yum -y install httpd
Paso3. Se abre el puerto 80 en el Firewall.
[root@localhost ~]# system-config-firewall-tui
Paso4. Se inicia Apache y se le indica al sistema que arranque el servicio al iniciar el servidor.
[root@localhost ~]# service httpd start
[root@localhost ~]# chkconfig httpd on
Paso5.Instalamos PHP.
[root@localhost ~]# yum -y install php
Hasta este punto parece que todo va bien, pero, sorpresa, nos damos cuenta que la versión de PHP instalada es la 5.3.3, instalemos algo mas reciente, que tal la versión 5.5.9.
[root@localhost ~]# php -v
PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
Paso6. Removemos la versión instalada de PHP.
[root@localhost ~]# yum remove php*
Paso7. Instalamos la versión 5.5.9 de PHP.
[root@localhost ~]# rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
[root@localhost ~]# yum install php55w php55w-opcache php55w-mcrypt php55w-pdo php55w-mssql
Error: El paquete php55w-mssql, falla al intentar instalarse, existe un problema con dependencias, que hay que corregir.
–>Package php55w-mssql-5.5.9-1.w6.x86_64 will be installed
–> Processing Dependency: libsybdb.so.5()(64bit) for package: php55w-mssql-5.5.9-1.w6.x86_64
–> Finished Dependency Resolution
Error: Package: php55w-mssql-5.5.9-1.w6.x86_64 (mt_dv_extras)
Requires: libsybdb.so.5()(64bit)
You could try using –skip-broken to work around the problem
You could try running: rpm -Va –nofiles –nodigest
Paso8. Instalar las dependencias desde el repositorio Remi y corregir los problemas generados por php55w-mssql.
[root@localhost ~]# rpm -ivh http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost ~]# wget http://rpms.famillecollet.com/enterprise/remi.repo
[root@localhost ~]# yum -y install php55w-mssql
VERIFICAMOS: La versión instalada debe ser la 5.5.x.
[root@localhost ~]# php -v
PHP 5.5.9 (cli) (built: Feb 7 2014 14:31:25)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
Paso9. Instalamos Freetds.
[root@localhost ~]# yum install freetds freetds-devel
[root@localhost ~]# yum install unixODBC unixODBC-devel
Editamos:
[root@localhost ~]# vi /etc/odbcinst.ini
Agregamos lo siguiente:
[FreeTDS]
Description=ODBC para nuestro SQL Server
Driver=/usr/lib/libtdsodbc.so
Setup=/usr/lib/libtdsS.so
FileUsage=1
Editamos:
[root@localhost ~]# vi /etc/freetds.conf
Cambiamos lo siguiente:
;tds version = 4.2
por
tds version = 8
Editamos:
[root@localhost ~]# vi /etc/profile.d/freeTDS.sh
Agregamos lo siguiente:
# Desc: Variable necesaria conectar php y Freetds
export SYBASE=/usr/local/freetds
Paso10. Permitir a Apache conectarse a la Red, este paso es muy importante ya que si no se realiza, el servicio no puede conectarse con servicios en la red.
SELinux no permitirá el acceso al servidor SQL.
[root@localhost ~]# /usr/sbin/setsebool -P httpd_can_network_connect=1
Paso11. Verificamos la conexión hacia SQL Server.
[root@localhost ~]# tsql -S SQLServerIP -U SQLServerUser -P SQLServerPassword
locale is “en_US.UTF-8”
locale charset is “UTF-8”
using default charset “UTF-8”
1> use DBName
2> select * from TableName
3> go
Resultado:
ID GroupID USR Password Email FullName Position IsActive CartId addedby addeddate CustomerID WarehouseID LogoURL CatalogLanguage CatalogCurrency
16 1 fvasquez 11111 faustino.vasquez@midomain.com Faustino Vasquez Limon Jefe de Sistemas 1 0 16 May 5 2011 04:50:33:607PM