Instalar proxy Squid en Solaris 11
Para que funcione un proxy Squid necesitamos tener dos interfases instaladas en el equipo. En este caso es un server HP Proliant con dos adaptadores on-board. Solaris los reconoce como bnx0 y bnx1.
En la zona global, hay que crear las rutas permanentes para poder acceder sin problemas a los equipos de la red local y a internet.
En mi caso, el router que me conecta a internet tienen una dirección de 192.168.1.1. Ese router pasará a ser mi default gateway.
netstat -rn
Routing Table: IPv4
Destination Gateway Flags Ref Use Interface
-------------------- -------------------- ----- ----- ---------- ---------
default 192.168.1.1 UG 17 201030
10.0.0.0 10.80.22.2 UG 22 230249
10.80.22.0 10.80.22.30 U 3 13 bnx1
127.0.0.1 127.0.0.1 UH 2 148 lo0
192.168.1.0 192.168.1.20 U 3 0 bnx0
Routing Table: IPv6
Destination/Mask Gateway Flags Ref Use If
--------------------------- --------------------------- ----- --- ------- -----
::1 ::1 UH 2 4 lo0
En la interfase conectada al router (la bnx0) creo una IP fija para el server (192.168.1.20), la otra IP fija esta sobre la bnx1 (10.80.22.30).
La idea es tener un proxy que me permita acceder a internet en los equipos que estan sobre la red interna (10.0.0.0 / 8).
Para eso se crea una zona nueva, que llamaremos 'proxy' a la cual le configuramos una dirección para cada interfase bnx0 = 192.168.1.30/24 y bnx1 = 10.80.22.8/24
# su
(poner clave de root)
# zonecfg -z proxy
create
set zonepath = /zonas/proxy
set autoboot = true
add net
set physical = bnx0
set address = 192.168.1.30/24
end
add net
set physical = bnx1
set address = 10.80.22.8/24
end
verify
commit
exit
#zoneadm -z proxy boot
#zlogin -C proxy
(responde las preguntas de inicialización del server virtual, si parece que no pasa nada, dar un ENTER)
(Salir con ~. y volver a entrar)
#pkg install squid
(tarda un rato hasta que instala el paquete. )
Para evitar que se produzca este error en el log del squid:
2012/03/27 12:50:12| icmpSend: send: (96) Destination address required
Hay que ejecutar:
# chmod 4555 /usr/squid/libexec/pinger
Iniciar el servicio:
#svcadm enable squid
Ahora los clientes pueden acceder a internet configurando la IP interna del proxy en el puerto 3128.
Si los clientes son otros solaris, hay que meter en el archivo /etc/profile una linea asi:
export http_proxy=http://10.80.22.8:3128
Para configurar clave de acceso y otras configuraciones mirar la documentación del Squid.
Yo le habilite el cache en memoria y en disco, para tener un poco mas de ancho de banda libre.
martes, 27 de marzo de 2012
domingo, 25 de marzo de 2012
Envío de SMS desde plataforma4
Este articulo es una guía para usar el servicio de envío de SMS provisto por el proveedor
SMSMASIVOS (ver http://www.smsmasivos.com.ar/ ).
Seteo inicial del entorno
La arquitectura de mensajería soporta
múltiples servidores de ingreso y egreso de mensajes. Como tal el
primer paso es configurar un servidor de SMS saliente en el entorno.
Ingresar con una cuenta que tenga
permisos de administrador y abrir el menú “Administración” ->
“Mensajería” -> “Nuevo Servidor”
Completar los campos como se muestra a
continuación:
Tomar nota del código asignado al
servidor, en este caso es el “2”
Una vez creado el servidor saliente,
hay que indicar que este será el servidor por defecto. Para eso hay
que editar el archivo /www/includes/configuration/any.php
y agregar un define con el dato.
//Fin
de la configuración
define("DEFAULT_SMS_SERVER",2);
En este caso, ponemos el valor “2”
que es el código del servidor recién creado. En cada implementación
el numero puede ser diferente.
Uso del servicio:
- a) Incluir el archivo “common/cmessaging.php” al comienzo del script.
- b) Crear un objeto mensaje ( $msg = new cmessage(); )
- c) Invocar al método SendSMS ( $msg->SendSMS(); )
Ejemplo:
Se crea una clase y un formulario para
enviar mensajes SMS. El código de envío se implementa en el hook.
Clase (Modelo):
<!--
Clase SMS TEST -->
<make
object="class">
<build
out_file="csms_test.php"
classname="csms_test"
classlabel="Test
SMS">
<parse
tablename="reg_test"
/>
<field
name="sms_destino"
type="varchar"
size="30"/>
<field
name="sms_mensaje"
type="varchar"
size="140"/>
</build>
</make>
La
clase define dos campos, uno para el numero de teléfono y otro para
el mensaje a enviar.
Table
Maint (Vista):
<!--
ABM de SMS TEST -->
<make
object="table_maint">
<build
out_file="sms_maint.php"
classname="csms_test"
title="Test
de envio de SMS">
<group
title="Mensaje"
id="basicos">
<field
name="sms_destino"
presentation="PHONE"
label="Destino"
ismandatory="true"
note="Usar
formato 15-4444-5555"/>
<field
name="sms_mensaje"
presentation="TEXTAREA"
label="Mensaje"
ismandatory="true"
rows="2"
cols="70"/>
</group>
</build>
</make>
El
formulario simplemente presenta estos dos campos al operador.
Hook (controller):
<?php
include_once
"common/cmessaging.php";
class
csms_test_hooks extends
cclass_maint_hooks {
public
function canSaveDB()
{
return
false;
}
public
function beforeSaveDB() {
$err
= array();
$data
= $this->m_data;
$dest
= $data->getField("sms_destino")->getValue();
$mensaje
= $data->getField("sms_mensaje")->getValue();
$msg
= new cmessage();
$ret
= $msg->sendSMS(DEFAULT_SMS_SERVER,$dest,$mensaje);
if($ret!="OK")
$err[]
= "MENSAJE: ".$ret;
return
$err;
}
}
?>
El
Hook utiliza el método beforeSaveDB() y el canSaveDB() para evitar
que el framework quiera salvar el registro a la base de datos
(recordar que la clase no se basa en una tabla real en la base).
Se
recuperan los valores del formulario y se los pasa al método
sendSMS() para el envío del mensaje. Si todo esta bien, el servicio
contesta “OK” caso contrario responde con el mensaje de error
apropiado.
En
este ejemplo, el mensaje de error, se empuja al usuario, con el
prefijo “MENSAJE: “ (Si no se le pone este prefijo, el error no
llega al usuario, solo va a los logs de errores).
Proceso de la cola de mensajes:
Para que los mensajes efectivamente salgan a la calle, hay que ejectuar un proceso de envío de la cola de mensajes. Es semejante al proceso de envío de mails.
Crear
un script:
#!/bin/bash
#Envio
mensajes
cd
/Users/jcordero/plataforma4/modules/messaging
/Applications/XAMPP/xamppfiles/bin/php
-dinclude_path=.:/Users/jcordero/plataforma4_sites/roac/www/includes:/Users/jcordero/plataforma4/includes
-f email_process.php $1
/Applications/XAMPP/xamppfiles/bin/php
-dinclude_path=.:/Users/jcordero/plataforma4_sites/roac/www/includes:/Users/jcordero/plataforma4/includes
-f sms_process.php $1
En
este script deberá ajustar:
- La ubicación del ejecutable php
- La ubicación del sitio del proyecto y su nombre
- La ubicación del código de plataforma4
Una
vez creado el script apropiado (verificar bien los paths). En el
ejemplo yo llame el script “run.sh”
Darle
permiso de ejecutable con “chmod +x run.sh” y acceso a la cuenta
del cron de ser necesario.
Finalmente
hay que modificar el crontab del sistema.
Hacerlo
con el comando crontab -e (editar)
*
* * * * /Users/jcordero/plataforma4/modules/messaging/run.sh
www.ombu-test.com.ar
Nuevamente
ajustar el path absoluto adonde se encuentra el script anterior
(run.sh). Pasarle el ultimo valor con el identificador del sitio.
El
editor del crontab es el “vi” así que recuerden que se inserta
con la “i”, borra con la “x” y se sale con “ESC” ->
“:” -> “wq”
Las
cinco * indican que el script se ejecutara una vez por minuto.
ACTUALIZACION DEL APACHE/PHP EN SOLARIS 11
En una implementación se debe acceder simultaneamente a una base de datos MySQL y PostgreSQL. Como el combo Apache + PHP regular publicado por Oracle, no contiene el módulo de PostgreSQL vamos a tener que cambiar de repositorio de paquetes (o compilar el PHP que un gran problema).
- Se utilizará el repositorio http://www.opencsw.org (community software)
Para comenzar hay que detener el servicio nativo del web server apache:
svcadm disable apache22
Instalar el mantenedor de paquetes de CSW:
pkgadd -d http://get.opencsw.org/now
## Downloading...
..............25%..............50%..............75%..............100%
## Download Complete
The following packages are available:
1 CSWpkgutil pkgutil - Installs Solaris packages easily
(all) 2.6.4,REV=2012.02.21
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]:
(Poner [Enter] y esperar a que termine)
Instalar el soporte de certificados PKI:
/opt/csw/bin/pkgutil -i CSWcswpki(Muchos mensajes hasta llegar al final...)
Installation of <CSWcswpki> was successful.
Habilitar confianza con CSW
/opt/csw/bin/gpg --edit-key board@opencsw.org trustInstalar paquete wget
/opt/csw/bin/pkgutil -i wget
Instalar firma de CSW
/opt/csw/bin/wget -q -O - http://www.opencsw.org/security/ | /opt/csw/bin/gpg --import -Instalar APACHE2 version CSW
/opt/csw/bin/pkgutil -i apache2esperar hasta que termine con:
Installation of <CSWapache2> was successful.
Instalar PHP 5.3 con los paquetes necesarios de Plataforma4
/opt/csw/bin/pkgutil -i php5 php5_apc php5_bcmath php5_curl php5_dom php5_gd php5_gettext php5_iconv php5_json php5_mbstring php5_mssql php5_mysql php5_mysqli php5_pgsql php5_session php5_soap php5_sockets php5_xsl php5_zipesperar hasta que termine con:
Installation of <CSWphp5-xsl> was successful.
Unir PHP con APACHE
/opt/csw/bin/pkgutil -i ap2_modphp5Una vez que termina, hay que reiniciar el Apache
svcadm restart cswapache2
Validar la INSTALACION DEL APACHE + PHP
Crear en el document root una pagina de prueba
cd /opt/csw/apache2/share/htdocs/
echo "<?php phpinfo(); ?>" > info.php
Abrir el browser, poner la dirección IP del server, pagina info.php (en mi caso, la IP es 192.168.56.101)
http://192.168.56.101/info.php
Se debe ver una pagina como esta:
Notar donde estan guardados los archivos de configuracion del PHP (/etc/opt/csw/php5/php.ini) y del Apache (/opt/csw/apache2/etc/httpd.conf)
La configuración del PHP esta sobre /etc y la del apache sobre /opt
Tareas post instalación:
El modulo APC hay que agregarlo a mano en el php.iniextension=apc.so
El modulo de graficos GD esta mal referenciado en el php.ini y no lo carga. Corregir el nombre:
original -> extension=gd2.so
debe decir -> extension=gd.so
Reiniciar el apache (svcadm restart cswapache2) y verificar con la info.php que los modulos están ahora activos.
Suscribirse a:
Comentarios (Atom)



