jueves, 27 de marzo de 2014

Amazon Web Services

Amazon Web Services (abreviado AWS) es una colección de servicios informáticos remotos (también llamados servicios web) que conforman una plataforma de computación en nube, ofrecido a través de Internet por Amazon.com.

Amazon EC2

Amazon Elastic Compute Cloud (Amazon EC2) proporciona capacidad de computación de tamaño variable. Usted puede utilizar Amazon EC2 para lanzar tantos o tan pocos servidores virtuales como sea necesario, configurar la seguridad y la creación de redes, y gestión de almacenamiento.

Amazon RDS

Amazon Relational Database Service (Amazon RDS) es un servicio web que hace que sea más fácil configurar, operar y ampliar una base de datos relacional en la nube. Proporciona rentable, la capacidad de tamaño variable para una base de datos relacional estándar de la industria y gestiona las tareas de administración de base de datos común.

Regions y Availability Zones

Amazon EC2 está alojado en varios lugares en todo el mundo. Estos lugares se componen de regions y availability zones. Cada region es un área geográfica separada e independiente. Cada region tiene varias ubicaciones aisladas conocidas como availability zones, pero las availability zones de una region están conectados a través de enlaces de baja latencia. Amazon EC2 proporciona la capacidad de colocar los recursos y los datos en múltiples ubicaciones. Los recursos no se replican en todas las regions a menos que sea especificado.
CodeName
ap-northeast-1
Asia Pacific (Tokyo) Region
ap-southeast-1
Asia Pacific (Singapore) Region
ap-southeast-2
Asia Pacific (Sydney) Region
eu-west-1
EU (Ireland) Region
sa-east-1
South America (Sao Paulo) Region
us-east-1
US East (Northern Virginia) Region
us-west-1
US West (Northern California) Region
us-west-2
US West (Oregon) Region

Amazon EC2 Security Groups

Un security group actúa como un cortafuegos virtual que controla el tráfico para una o más instancias. Cuando se inicia una instancia, se asocia uno o más security group con la instancia. Agrega reglas para cada security group para permitir el tráfico hacia o desde sus instancias asociadas. Puede modificar las reglas para un security group en cualquier momento, las nuevas reglas se aplican automáticamente a todas las instancias que están asociadas con el security group.

VPCs and Subnets

Una nube privada virtual o virtual private cloud (VPC) es una red virtual dedicada a su cuenta de AWS. Lógicamente está aislada de otras redes virtuales en la nube de AWS. Usted puede iniciar sus recursos de AWS, como instancias de Amazon EC2, en su VPC. Puede configurar su VPC, seleccionar su rango de direcciones IP, crear subredes y configurar tablas de rutas, puertas de enlace de red y ajustes de seguridad.
Una subred o subnet es un rango de direcciones IP en su VPC. Puede iniciar recursos de AWS en una subred que seleccione. Utilice una subred pública para los recursos que deben ser conectados a Internet, y una subred privada de los recursos que no se pueden conectar a Internet.

jueves, 27 de febrero de 2014

Tips Alfresco

Tips Alfresco


 - Edición en linea con MS Office: 
      Los documentos MS Office cargados en Alfresco se puede editar en linea http://docs.alfresco.com/4.2/topic/com.alfresco.enterprise.doc/tasks/library-item-edit-online.html

Para esta prueba se ha utilizado la version alfresco-4.2.0.

Se ha modificado el archivo  alfresco-global.properties agregando las siguientes lineas al final del archivo:



##configuración para abrir documentos desde MS Office
vti.server.external.host=<IP>
vti.server.external.port=7070


para que los documentos desde alfresco se puedan visualizar se tiene que habilitar el puerto 7070 para el servidor donde esta instalado Alfresco.




Ruta para ubicación de log de solr

Dentro de la ruta


/opt/alfresco-4.0.2.9-VUR/tomcat/webapps/alfresco/WEB-INF/classes/log4j.properties


Se observa


# Indexer debugging
log4j.logger.org.alfresco.repo.search.Indexer=error
#log4j.logger.org.alfresco.repo.search.Indexer=debug

log4j.logger.org.alfresco.repo.search.impl.lucene.index=error
log4j.logger.org.alfresco.repo.search.impl.lucene.fts.FullTextSearchIndexerImpl=warn
#log4j.logger.org.alfresco.repo.search.impl.lucene.index=DEBUG




Estos valores se pueden cambiar a traves de JMX con los siquientes pasos:
MBeans > Log4j >  org.alfresco.repo.search.Indexer


****

Se esta colocando el siguiente valor en el archivo  /opt/alfresco-4.0.2.9-VUR/tomcat/webapps/alfresco/WEB-INF/classes/log4j.properties (se ha colocado el mismo valor en alfresco global properties pero no funciona)

log4j.logger.org.alfresco.repo.search= debug


Se reviso el servidor de producción y se encontro el siguiente mensaje cuando se realizar la busqueda por sitios, pero cuando se realiza la busqueda por repositorio el log no muestra ningun mensaje.

Feb 19, 2014 11:41:04 PM org.apache.solr.common.SolrException log
SEVERE: java.lang.NullPointerException

Feb 19, 2014 11:41:04 PM org.apache.solr.common.SolrException log
SEVERE: java.lang.NullPointerException



Modificar el numero de elementos de la busqueda en Share

En el archivo 
/opt/alfresco-4.2.0.3/tomcat/webapps/share/WEB-INF/classes/alfresco/share-config.xml

Se modificar las siguiente linea (en negrita) por defecto es 250

   <config evaluator="string-compare" condition="Search">
      <search>
         <!-- default minimum length for search terms -->
         <min-search-term-length>1</min-search-term-length>
        
         <!-- default maximum number of results for a search -->
         <max-search-results>250</max-search-results>
    

         <repository-search>context</repository-search>
      </search>








Cambiar el puerto de inicio de Alfresco (8080 por otro puerto)

Los archivos donde se tiene que modificar es "alfresco-global.properties" y "server.xml" de tomcat
 
alfresco-global.properties (/opt/alfresco-4.2.0.3/tomcat/shared/classes)

alfresco.context=alfresco
alfresco.host=192.168.56.101
alfresco.port=8080
alfresco.protocol=http

share.context=share
share.host=192.168.56.101
share.port=8080
share.protocol=http
 
 
y

server.xml (/opt/alfresco-4.2.0.3/tomcat/conf)

    <Connector port="8080" URIEncoding="UTF-8" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" maxHttpHeaderSize="32768" />
    <!-- A "Connector" using the shared thread pool-->



miércoles, 26 de febrero de 2014

Configurar Apache Proxy RHEL 6


Configurar Apache Proxy RHEL 6

Utilización de proxy, se utiliza el proxy como un intermediario que recibe las peticiones de los clientes y las redirije a sus respectivos servidores. Esto con el objetivo que el servidor que se

exponga a una red externa sea el proxy y no los servidores reales. Tambien la ventaja del proxy es que ahorra el trabajo de estar creando reglas en el firewall para redireccionamiento de los servidores.

Ejemplo de uso de arquitectura



Siguiendo los pasos de la documentación de Red Hat para Apache (http://goo.gl/QPxr2v), se realizo lo siguiente:



1- Se instalo httpd desde el respositorio

[]# yum install httpd

2- Se modifico el archivo httpd ubicado en /etc/httpd/conf/httpd.conf agregando al final del documento las siguientes lineas:



<VirtualHost *:80>
# Your domain name
ServerName <IP>

ProxyPreserveHost On

# The IP and port of the JBoss Enterprise Application Platform
# These represent the default values, if your HTTPD is on the same host
# as your JBoss Enterprise Application Platform managed domain or server

ProxyPass / http://<IP>:8080/ retry=0 timeout=5
ProxyPassReverse / http://<IP>:8080/

# The location of the HTML files, and access control information
DocumentRoot /var/www
<Directory /var/www>
Options -Indexes
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

Donde se tiene que reemplazar <IP> por el numero de IP del sevidor donde se esta ejecutando Apache.







3- Se ejecuto el siguiente comando para permitir las conexiones httpd (http://goo.gl/iwIYZG)

[]# /usr/sbin/setsebool httpd_can_network_connect 1

Con este comando el apache proxy funciona correctamente.




miércoles, 12 de febrero de 2014

Configurando un cluster de Alfresco 4.2 de alta disponibilidad usando mod_jk

Escenario

El sistema ECM está desplegado sobre una red de 5 ordenadores de la siguiente manera:
  • Un ordenador aloja al Servidor Web Apache (192.168.1.138).
  • Un ordenador aloja al servidor MySQL (192.168.1.136).
  • Un ordenador aloja el Almacén de Contenidos de Alfresco (192.168.1.134).
  • Dos ordenadores alojan, cada uno, un Servidor Tomcat que contiene un Alfresco Repository junto con sus propios Share y Solr (192.168.1.130 y 192.168.1.132).
Cada Tomcat tiene su propio Solr y su propio Almacén de Índices; y ambos acceden simultáneamente a la Base de Datos y al Almacén de Contenidos. El Balanceador de Carga (Apache HTTP Server) debe soportar sesiones "Sticky" para que cada cliente se conecte con el mismo servidor (Tomcat) durante la sesión.

Prerrequisitos

Se debe tener instalado:
  • Alfresco One 4.2
  • Apache HTTP Server 2.2.15
  • MySQL 5.6

Configurando cluster

Para configurar Alfresco Cluster se debe seguir los siguientes enlaces:
  1. http://docs.alfresco.com/4.2/topic/com.alfresco.enterprise.doc/tasks/cluster-setup.html
  2. http://docs.alfresco.com/4.2/topic/com.alfresco.enterprise.doc/concepts/cluster-startup.html
  3. http://docs.alfresco.com/4.2/topic/com.alfresco.enterprise.doc/tasks/cluster-test.html

Configurando la Alta Disponibilida

  1. Descargar el módulo (son archivos con extensión .so) que nos permitirá conectar Apache con los Tomcat's, para ello nos descargamos el módulo desde la sección Binary Releases del siguiente enlace: http://tomcat.apache.org/download-connectors.cgi.
  2. Instalamos el módulo en Apache. Para ello, deberemos copiar el archivo descargado (actualmente mod_jk-1.2.28-httpd-2.2.3.so) al directorio modules de Apache, debe estar apagado, y lo renombramos como mod_jk.so
  3. Modificamos la configuración de Apache para cargar el módulo cuando sea nuevamente iniciado. Para ello deberemos agregar la siguiente linea a continuación de los otros LoadModule que aparecen en el archivo de configuración de Apache <APACHE_HOME>/conf/httpd.conf:
    LoadModule jk_module modules/mod_jk.so
  4. Creamos en el directorio <APACHE_HOME>/conf un archivo de nombre workers.properties en donde especificaremos las direcciones y puertos en donde escuchan todos los servidores (Tomcat).
    # Los servidores a balancear estarán definidos más abajo en "balancer" worker.list=balancer # Configuración del Tomcat 1 worker.worker1.port=8009 worker.worker1.host=192.168.1.130; worker.worker1.type=ajp13 worker.worker1.lbfactor=1 # Configuración del Tomcat 2 worker.worker2.port=8009 worker.worker2.host=192.168.1.132; worker.worker2.type=ajp13 worker.worker2.lbfactor=1 # Configuración del balanceador worker.balancer.type=lb worker.balancer.balance_workers=worker1,worker2 worker.balancer.method=B # El siguiente parámetro indica al balanceador que todas las peticiones de una misma # sesión (usuario) vayan al mismo servidor worker.balancer.sticky_session=true
  5. En algunas ocasiones quizás sólo se desee alta disponibilidad sin balanceo de carga, pues bien con la siguiente configuración todas las peticiones irán a un tomcat y que sólo se utilizará el otro Tomcat en caso de fallo.
    # En caso de que falle worker1 que se use worker2 worker.worker1.redirect=worker2 # Por defecto, worker2 estará deshabilitado y el balanceador sólo lo usará en caso de fallo. worker.worker2.activation=disabled
  6. Agregamos las siguientes lineas al final del archivo APACHE_HOME/conf/httpd.conf
    # Le indicamos donde está ubicado el archivo de configuración workers.properties JkWorkersFile <APACHE_HOME>/conf/workers.properties # Le indicamos que redirija todas las peticiones de todos los contextos de aplicación al balanceador. JkMount /* balancer
  7. En la configuración de cada Tomcat (<TOMCAT_HOME>/conf/servers.xml), modificamos el parámetro jvmRoute del elemento Engine.
    <!-- Un Tomcat tendrá el valor worker1 y el otro worker2 --> <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker1"> 

Prueba

Para verficar la Alta Disponibilidad dentro de cada Tomcat cree un archivo con distinto contenido en la misma ubicación (por ejemplo http://direccion_tomcat/a.html). Desde un navegador web solicite al Apache HTTP Server la página a.html, recargue varias veces la página y observará ambos contenidos de forma alternativa.
Detenga un Tomcat y el otro debería de prestar el servicio, inicie de nuevo el tomcat detenido y automáticamente debería de prestar el servicio también.

martes, 11 de febrero de 2014

Ocultar los botones de "descarga" para los usuarios Consumer en Share

Escenario:

Como se sabe los Sitios en Alfresco manejan roles tales como Manager, Collaborator, Contributor y Consumer y un usuario creado puede pertenecer a uno de estos roles según las funciones que deba realizar.


Según el rol que tenga un usuario se le habilitará ciertas funciones en la interfaz de Alfresco Share, como se muestra en la imagen estas son las funciones habilitadas para un caso de usuario Consumer en un documento:

Lo que se desea es ocultar los botones de descarga para el caso de un usuario Consumer, lo que vamos a hacer primero es ocultar los botones 1 y 2. Luego el 3 por ser algo diferente.

Solución

Accedemos a la siguiente ruta dentro de la instalación de nuestro Alfresco: tomcat/shared/classes/alfresco/web-extension/ y abrimos el archivo share-config-custom.xml, antes del cierre </alfrsco-config> agregamos las siguientes lineas:

<!-- Custom DocLibActions config section -->
<config evaluator="string-compare" condition="DocLibActions">
  <actionGroups>
    <actionGroup id="document-browse">
      <action index="100" id="document-download" >
        <permissions>
          <permission allow="true">CreateChildren</permission>
        </permissions>
      </action>
    </actionGroup>
    <actionGroup id="document-details">
      <action index="100" id="document-download" >
        <permissions>
          <permission allow="true">CreateChildren</permission>
        </permissions>
      </action>
    </actionGroup>
  </actionGroups>
</config>

El id document-browser es para ocultar el boton 1 y document-details es para el 2, el tag <permission> se usa para que este boton solo aparezca cuando el usuario tenga permisos específicos. En este caso decimos que deseo que el boton aparezca cuando el usuario tenga permisos de CreateChildren (cosa que el Consumer no tiene). Podemos deshabilitar el boton para otros roles como Contributor o Collaborator usando otros permisos tales como:
  • Read
  • Write
  • WriteContent
  • Delete
  • All
El tag <action> tiene un id que es el nombre de la acción y un atributo index, la lista completa de acciones y sus repsectivos index que podemos modificar están en el archivo share-documentlibrary-config.xml ubicado en share/WEB-INF/classes/alfresco/.

Para deshabilitar el boton 3 se deben modificar directamente archivos del share. Abrir el archivo node-header.get.js ubicado en share/WEB-INF/classes/alfresco/site-webscript/org/alfresco/component/ y agregar la siguiente linea en el if (nodeDetails){...}: 

model.permissions = AlfrescoUtil.getSiteMembership(model.site).role ;

Esto es para habilitar el uso de permisos y roles en la plantilla que vamos a modificar a continuación. Abrir el archivo node-header.get.html.ftl y ubicar el segemento <!-- Download Button --> modificarlo para que se muestre así:

<#if permissions!="SiteConsumer" >
    <#if showDownload == "true" && node.contentURL??>
        <!-- Download Button -->
        <span class="yui-button yui-link-button onDownloadDocumentClick">
            <span class="first-child">
               <a href="${url.context}/proxy/...${msg("button.download")}</a>
            </span>
        </span>
    </#if>
</#if>

En este caso en la plantilla ftl hemos agregado un IF cuando se muestra el boton download para que aparezca solo para usuarios que NO son de tipo Consumer, podemos usar también otros roles según la necesidad.

Guardar los cambios realizados y reiniciar el servicio de Alfresco, los botones 1, 2 y 3 que se muestra gráficos arriba ahora solo se mostrará cuando el usuario NO sea de tipo Consumer.



viernes, 31 de enero de 2014

Problema al montar directorio RHEL


Problema a cambiar el password de Windows Server


Descripción: En servidor de Windows de VUR_CENTRIA, solicito que se realice el cambio de contraseña, luego de realizado esto se accedió al servidor de Alfresco de producción y cuando se entró a la ruta “/mnt/compartida/” salió un mensaje de error de permisos para acceder a la carpeta. Luego se procedió a cambiar la contraseña del servidor de VUR_CENTRIA en el archivo “/mnt/fstab/” y se ejecutó el comando “mount -a” pero no se pudo acceder a la carpeta “/mnt/compartida/” y se procedió  a listar las carpetas de /mnt/  se encontró con una lista de carpetas y la carpeta “compartida” tenia como permisos ???? por ejemplo  http://serverfault.com/questions/18110/permission-denied-to-a-file-i-own  o http://askubuntu.com/questions/42411/file-permissions-why-cant-i-list-a-directory luego se procedió a realizar lo siguiente “umount /mnt/compartida” y se listo la carpeta y ya no estaba corrupta, sino tenia los permisos correctos “root root” luego se verifico que el archivo “/etc/fstab” este correctamente configurado para finalmente ejecutar el comando “mount -a” y el archivo se volvió a montar.

sincronizar hora BIOS y S.O. Linux


Ver la hora del S.O.

[root@localhost ~]# date
Fri Sep 27 11:16:34 PET 2013

Ver la hora de la BIOS

[root@localhost ~]# hwclock --show
Fri 27 Sep 2013 11:17:24 AM PET  -0.980769 seconds


Sincronizar la hora de la bios con la hora del sistema

# hwclock -s