viernes, 11 de abril de 2008

APACHE2 VIRTUAL HOST

Supongamos que tenemos 1 servidor Apache, este esta en la ip 192.168.1.1 , ahora instalamos otro apache en la ip 192.168.1.200 y quermos acceder a el desde el primer apache y alverez... digamos que asi:

http://192.168.1.1/apache2/

y desde el otro apache queremos acceder al 1, asi http://192.168.1.200/apache1/.

esto es posible hacerlo con el modproxy, lo primero es haber compilado apache con estos modulos. aqui dejo la instrucción para ello.

./configure --enable-mods-shared=all --enable-proxy=shared --enable-proxy-connect=shared --enable-proxy-ftp=shared --enable-proxy-http=shared --enable-proxy-ajp=shared --enable-proxy-balance=shared --prefix=/installdir/Apache-2.2.8
make
make install


Ahora en el httpd.con del Primer Apache (192.168.1.1) escribimos.

<virtualhost *>
ServerAdmin nuestromail@nuestrodominio.cl
ServerName 192.168.1.1
ProxyPass /apache2/ http://192.168.1.200/Inicio/
ProxyPassReverse /apache2/ http://192.168.1.200/Inicio/
</virtualhost>


y en el httpd.con del Segundo Apache (192.168.1.200)
<virtualhost *>
ServerAdmin nuestromail@nuestrodominio.cl
ServerName 192.168.1.200
ProxyPass /apache1/ http://192.168.1.1/Inicio/
ProxyPassReverse /apache1/ http://192.168.1.1/Inicio/
</virtualhost>


Según nuestro conf en el htdocs debemos de tener un directorio Inicio donde alojamos la información.

Bien, de este modo tenemos nuestros apaches conectados entre si, la gracia de esto es que, podemos tener un apache mirando en internet y hacer que pida paginas a otro apache que tenemos dentro de nuestra red.

saludos.

martes, 1 de abril de 2008

MONTAR CONECCIONES NFS CON SCRIPT

Habiendo ya configurado un servidor nfs, me sucedio el problema que, se cortó la luz y las unidades no se montaron adecuadamente porque... el servidor prendio despues que la maquina cliente, como montar las unidades nfs sin que yo tenga que typear las instrucciones?.


He aqui el script que se ejecuta cada cierto tiempo por crontab, este script primero verifica si las unidades estan montadas, si ya lo estan muestra el menjsaje "Las unidades NFS ya fueron montadas", y si no, las monta como debe ser.

if [ "`mount | grep nfs`" = "" ]; then
echo "Montando unidades NFS..."
mount /usr/local/slackwares/wmail
mount /usr/local/mapeada
exit
fi
echo "Las unidades NFS ya fueron montadas"

De seguro existen otras formas de lograr lo mismo, pero esta me salio fácil.

NOTE QUE: fstab contiene las lineas correspondientes

192.168.1.184:/usr/local/pagina/webmail /usr/local/slackwares/wmail nfs auto,rw 0 0
192.168.1.184:/etc /usr/local/mapeada nfs auto,rw

SOFTLAND PYME

















La empresa donde yo trabajo ha utilizado a softland como solución informática, en si, el software tiene sus cosas buenas, aqui no me dedicare a recalcar lo malo, sino que a exponer lo estudiado, ya que he tenido que hacerle mantención al software ya que su manejo para ingresar información es algo limitado y lento, asi que, via php y usando sql llenaremos algunas cositas de este mentado software de gestion de pymes, obviamente desde nuestro desktop Linux, si no sabe como conectar a una maquina con MSSQL lea el tema "APACHE + PHP + MYSQL + MSSQL" que esta en este mismo Blog.


Las familias y subfamilias se guardan en las siguientes tablas de datos:
iw_tgrupo (Para Familia)

iw_tsubgr (Para Sub Familia)

y los productos se almacenan en :

iw_tprod

Ingresando Grupos y SubGrupos (Familias y SubFamilias)

echo "Ingresando Familias";
$sql= "insert into iw_tgrupo (CodGrupo,DesGrupo,PubGrupo)
values ('Fam552','Zapatillas','S')";
mssql_query($sql);

CodGrupo es el codigo de identificación (ID) y DesGrupo es la descripcion de la familia, ej. Zapatillas
PubGrupo debe quedar en S, si es que se desea publicar en internet (eso creo yo), por ahi alguna otra version del software la utilizaría.

echo "Ingresando SubFamilias";
$sfsql= "insert into iw_tsubgr (CodSubGr,DesSubGr,PubSubGR)
values ('SFam123','Rojas','S')";
mssql_query($sfsql);

CodSubGr, el codigo de identificación, DesSubGr la descripcion de la subfamilia, ej. Rojas.

o sea juntando estas dos tablas tendriamos, Zapatillas-Rojas


Luego podemos ingresar la tabla de productos y si estos manejan iva.

$codprodc='10001'; // CODIGO PRODUCTO
$codgrupoc='Fam552';//CODIGO FAMILIA o GRUPO
$codsubgrc='SFam123';//CODIGO SUBFAMILIA
$codumedc='PL';//CODIGO UNIDAD DE MEDIDA PL para pulgadas
$desprodc='Descripcion1 del producto';
$desprod2c='Descripcion2 del producto';
$preciovtac='100' //precio de venta;


$sql= "insert into iw_tprod (CodProd,CodGrupo,CodSubgr,DesProd2,DesProd,PrecioVta,
CodUMed,NivMin,NivRep,esParaCompra,CtaActivo
,CtaVentas,CtaGastos,CtaCosto,Impuesto)
values ('$codprodc','$codgrupoc','$codsubgrc'
,'$desprod2c','$desprodc','$preciovtac',
'$codumedc','1','1','0','1-1-08-01','5-1-01-02'
,'4-2-01-01','4-2-01-01','-1')";
$inserta= mssql_query($sql) or die("Error en producto $codprodc");

Las cuentas tienen que ser congruentes con las cuentas contables, si aun no se tienen se pueden dejar en blanco, Y LOS NIVELES DE STOCK DE RESPOSICION Y MINIMO SE DEJAN EN 1.

$sql="insert into iw_timprod (CodProd,CodImpto) values ('$codprodc','IVA')";
$inserta= mssql_query($sql);

Tengo mas cosas guardadas bajo la manga (Ingreso de clientes, stock, movimientos, salida y entradas de productos, cotizaciones...) si existe interes en que publique algo solo notifiquemelo.

Nota: Un muy buen programa para conectarnos a los servidores MSSQL y hacer consultas es el DbBrowser. http://developer.berlios.de/project/showfiles.php?group_id=5387
saludos.

Respaldos Con RSYNC

rsync -zavv --stats --backup --backup-dir=/usr/local/respdata/`date +%d-%m-%Y-Hora-%k-%M-%B` 192.168.1.55::back /usr/local/respaldos/ >> /usr/local/respaldos/log


Bien, con esta grandiosa linia, se le esta diciendo a rsync lo siguiente:

-zavv...
z: que comprima los datos que se trae.
a: que archive todo (Archivos, directorios y subdirectorios), que conserve permisos, que conserve los dueños y la hora del fichero.
vv: verbosidad, muestra los datos que estamos respaldando (se pouede quitar una vez que se esta seguro que todo funciona correctamente)

-stats : muestra los datos transferidos

--backup : le decimos que haga backups de los archivos modificados
--backup-dir=/usr/local/respdata/`date +%d-%m-%Y-Hora-%k-%M-%B` : Le decimos donde queremos que deje los archvios respaldados (los que sufrieron modificacion en el servidor), y que genere un directorio con formato Dia-Mes-Año-HORA (para tener un indice claro), ejemplo: /usr/local/respdata/31-12-2007-Hora-15-00-December

192.168.1.55::back : es el servidor de los archivos a respaldar y el modulo donde estan los archivos (::back)

/usr/local/respaldos/ : donde queremos que queden los archivos copiados.

EL ARCHIVO RSYNC.CONF

use chroot = false #(la jaula)
strict modes = false
hosts allow = 192.168.1.1 #(solo permitimos que se nos conecte esta maquina)
log file = rsyncd.log
pid file = rsyncd.pid

[back] #(este es el modulo)
transfer logging = yes
path = /usr/local/gestion #(Los archivos que queremos compartir para que sean accesados)
read only = true #(solo permitimos lectura)



Saludos.

Apache + PHP + MySQL + M$SQL



He logrado hacer la coneccion para php 5.2.5 con un Apache 2.2.6 y utilizando FreeTDS (FreeTDS para conectar a Servidores Ms-SQL)

NOTA. El medtodo de compilación tambien funciona con Apache 2.2.8, la version de FreeTDS es la 0.64 y la de PHP es 5.2.5.

aqui les dejo la forma de compilar cada uno de los packages (no les envio el .TGZ porque no tiene gracia asi)


#mkdir /apache226/usr/local/apache2 -p

luego bajamos el Apache (http://www.apache.org/dyn/closer.cgi)

lo descomprimimos en el directorio adecuado ..../httpd-2.2.6
cd ..../httpd-2.2.6
compilamos apache
$./configure --prefix=/usr/local/apache2
$make
#make install prefix=/apache226/usr/local/apache2
cd /apache226
#makepkg apache226.tgz (y queda creado el package para slackware)
#installpkg apache226.tgz (instalado)

--- freetds (http://www.freetds.org/software.html)
lo bajamos , descomprimimos entramos a su dir y...
mkdir /freetds/usr/local/freetds -p
$./configure --with-tdsver=8.0 --prefix=/usr/local/freetds
$make
#make install prefix=/freetds/usr/local/freetds
cd /freetds
#makepkg freetds.tgz
#installpkg freetds.tgz

Ahora el php (http://cl.php.net/get/php-5.2.5.tar.gz/from/a/mirror)

#mkdir /php525/usr/local/php5 -p
lo bajamos , descomprimimos entramos a su dir y...

$./configure --with-mysql --with-apxs2=/usr/local/apache2/bin/apxs --with-mssql=/usr/local/freetds --without-pdo-sqlite --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5

$make
#make install prefix=/php525/usr/local/php5
cd /php525
#makepkg php525.tgz
#installpkg php525.tgz

luego de instalar todo es necesario copiar el directorio /usr/local/apache2/conf a /usr/local/
y proceder a configurar el httpd.conf de la manera que se desee. Y el archivo php.ini debe de copiarse a /usr/local/php5, esta ruta la designamos con --with-config-file-path.

la ver 8.0 a la que se hace referencia en la instalacion de freetds se refiere a la ver 2k del mssql server.