viernes, 28 de diciembre de 2012

apache tomcat con APR (Apache Portable Runtime) subir rendimiento de tomcat

Hola a todos los que han llegado a mi blog!

Sí están en este enlace es porque probablemente necesitan una forma de configurar el APR para tomcat, la verdad en el sitio de apache no es tan claro, pero para es este apunte rápido.
Un compañero me hizo la observación acerca que es lo que hace APR. APR es una librería nativa de tomcat que ayuda a incrementar o subir o optimizar el rendimiento que proporciona el servidor de aplicaciones tomcat. en realidad sí se nota una reducción en la carga del servidor, es mas tolerante en cuanto a los fallos presentados y por otro lado, también tolera mas errores.

1. Descargar el tomcat 7 en cualquiera de sus versiones de aca. (usar el comando wget url.descarga)
2. Luego con el comando yum se deben instalar las librerias así:

yum install -y apr-devel openssl-devel apr.x86_64 apr-util.x86_64 apr-util-devel.x86_64
3. Descargar la libreria nativa con:
wget http://apache.mesi.com.ar//tomcat/tomcat-connectors/native/1.1.24/source/tomcat-native-1.1.24-src.tar.gz

Con lo anterior se tiene mas de la mitad del trabajo. Ahora se deben descomprimir los 2 archivos descargados así:

4. tar -zxvf apache-tomcat-VERSION-DESCARGADA.tar.gz

5. tar -zxvf tomcat-native-1.1.24-src.tar.gz

6. Iniciar tomcat ingresando a la carpeta bin así: cd apache-tomcat-VERSION-DESCARGADA/bin
y ejecutar  ./startup.sh &

7. Verificar el log de tomcat "ubicado en: apache-tomcat-VERSION-DESCARGADA/log/catalina.FECHA-INICIO-TOMCAT.log" y ver que la librería APR no fue cargada buscando la siguiente línea "INFO: La biblioteca nativa de Apache Tomcat basada en ARP que permite un rendimiento óptimo en entornos de desarrollo no ha sido hallada en java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib" o  si el idioma es ingles debe decir algo similar en el idioma configurado.

8. ahora si verificando que no está la librería o que la version es errada, entonces se ingresa a la carpeta de la llibrería así:
cd tomcat-native-1.1.24-src/jni/native/

9. Se ejecuta el comando para compilación e instalación "se debe recordar que se usa la opción  --with-apr=/usr/local/apr porque en ese lugar reposan las librerías de APR que se instalaron con YUM, pero si estan localizadas en otro sitio se debe colocar dicha ruta.":

./configure --with-apr=/usr/local/apr && make && sudo make install

al final sale una información que dice algo similar a:
Libraries have been installed in:
   /usr/local/apr/lib

"entonces las librerías están instaladas en ese lugar"
10. Listo!, ahora solo se deben crear los enlaces simbólicos a las librerías, es de anotar que las librerías están ubicadas en /usr/locar/apr/lib como aparece en el ítem anterior, ahora se usa el comando ln así:
ln -s destino origen "a todas las librerías que estén en el directorio /usr/locar/apr/lib"
aplicándolo es así:
ln -s  /usr/local/apr/lib/libtcnative-1.so.0.1.24 /usr/lib/libtcnative-1.so.0.1.24
ln -s  /usr/local/apr/lib/libtcnative-1.so.0 /usr/lib/libtcnative-1.so.0
ln -s  /usr/local/apr/lib/libtcnative-1.so /usr/lib/libtcnative-1.so
ln -s  /usr/local/apr/lib/libtcnative-1.la /usr/lib/libtcnative-1.la
ln -s  /usr/local/apr/lib/libtcnative-1.a /usr/lib/libtcnative-1.a
ln -s  /usr/local/apr/lib/libapr-1.so.0.4.6 /usr/lib/libapr-1.so.0.4.6
ln -s  /usr/local/apr/lib/libapr-1.so.0 /usr/lib/libapr-1.so.0
ln -s  /usr/local/apr/lib/libapr-1.so /usr/lib/libapr-1.so
ln -s  /usr/local/apr/lib/libapr-1.la /usr/lib/libapr-1.la
ln -s  /usr/local/apr/lib/apr.exp /usr/lib/apr.exp
ln -s  /usr/local/apr/lib/libapr-1.a /usr/lib/libapr-1.a

11. ahora solo queda reiniciar el tomcat y verificar de nuevo en el log que ya está la librería de APR funcionando adecuadamente... así:

Detener ingresar al directorio tomcat y detener el servidor :
cd apache-tomcat-VERSION-DESCARGADA/bin
./shutdown.sh

ahora iniciar tomcat y verificar el log
 ./startup.sh &

Verificar el log de tomcat "ubicado en: apache-tomcat-VERSION-DESCARGADA/log/catalina.FECHA-INICIO-TOMCAT.log" y ver que la librería APR fue cargada satisfactoriamente! se pueden encontrar estas lineas en este caso están en español:
INFO: Cargada la biblioteca nativa APR de Apache Tomcat 1.1.24 con la versión APR 1.4.6.

Espero sea de ayuda!, hasta pronto!

jueves, 11 de octubre de 2012

Script bash query oracle send mail

Hola a mis apreciados lectores, en el día de hoy tenemos otras de las travesuras que hemos realizado en el día a día de nuestro ambiente laboral, gracias al compañero Hader por el suministro del insumo para poder publicarlo en este blog. creo que el script está bien explicado "comentarios en ingles" pero de todas maneras voy a darles una introduccion.

primero se establecen las variables de entorno porque el usuario que ejecuta el el bash "un crontab" no conoce donde ubicar los ejecutables de oracle "sqlplus" no sabe el SID de la base de datos y pues todo eso es necesario para poder ejecutar el comando, se hace enfasis en realizar el cambio al directorio de instalación de su propia BDO y de su SID oracle para que funcione adecuadamente. por otro lado se creó un directorio de LOG para poder almacenar los mismos y verificar en que punto está fallando el script "Hader es un maestro en esto de los log". se usa el comando "spool" para guardar el log del resultado de la consulta de oracle y por ultimo se envia el email

#!/bin/bash
# author hceron
# 11 Octubre 2012
# Description - Script para obtener el reporte diario para Movistar

# Environment Variables
export ORACLE_SID=habitat
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export ORACLE_BASE=/u01/app/oracle
PATH=$ORACLE_HOME/bin:$PATH:/usr/local/bin

# Directorys
LogDirectory='/home/oracle/scripts/reports/habitat/logs'
DataDirectory='/home/oracle/scripts/reports/habitat/data'

# DataBase Parameters
DBUSER='HABITAT_MOBILE'
DBUSERPASSWORD='HABITAT_MOBILE'
DB='habitat'

# Email Parameters
EMAILMESSAGE="/home/oracle/scripts/reports/habitat/data/emailmessage.txt"
SUBJECT="Reporte"
CLIENTUSERNAME="CTest1"

# Query to get Email of the Client
EMAIL=`sqlplus -s <"${DBUSER}/${DBUSERPASSWORD}@${DB}"
set linesize 32767
set feedback off
set heading off
set verify off
spool '/home/oracle/scripts/reports/habitat/logs/sql.log'
select EMAIL from CLIENT where USER_NAME = '${CLIENTUSERNAME}';
spool off
exit
EOF`

# Send email using /bin/mail
/bin/mail -s $SUBJECT $EMAIL < $EMAILMESSAGE
echo "Email enviado a ${EMAIL} satisfactoriamente"

trigger con oracle before insert

el codigo es bastante senecillo, y tener cuidado con el error de intentar insertar dentro del trigger dentro en la misma tabla porque sino queda con una recursividad infinita, el codigo es el siguiente:

create or replace
TRIGGER SMS_MT_ISR_TGR
   BEFORE INSERT ON SMS_MT
   FOR EACH ROW
DECLARE
PROVIDER_ID NUMBER(38,0);
MT_GATEWAY_ID NUMBER(38,0);
MT_CONNECTION_ID NUMBER(38,0);
BEGIN

SELECT CMTR.CONNECTION_ID, MTGW.MT_GATEWAY_ID, CON.PROVIDER_ID INTO MT_CONNECTION_ID, MT_GATEWAY_ID, PROVIDER_ID --INTO :NEW.MT_CONNECTION_ID, :NEW.MT_GATEWAY_ID, :NEW.PROVIDER_ID
FROM SENDING_MT SMT, "ACCOUNT" AC, MT_GATEWAY MTGW, CONNECTION_X_MT_ROUTING CMTR, MT_ROUTING MTR, CONNECTION CON
WHERE AC.ACCOUNT_ID=SMT.ACCOUNT_ID
AND MTGW.MT_GATEWAY_ID=AC.MT_GATEWAY_ID
AND MTR.MT_GATEWAY_ID=MTGW.MT_GATEWAY_ID
AND CMTR.MT_ROUTING_ID=MTR.MT_ROUTING_ID
AND CON.CONNECTION_ID=CMTR.CONNECTION_ID
AND MTR.OPERATOR_ID=:NEW.OPERATOR_ID
AND SMT.SENDING_MT_ID=:NEW.SENDING_MT_ID;

:NEW.PROVIDER_ID:=PROVIDER_ID;
:NEW.MT_GATEWAY_ID:=MT_GATEWAY_ID;
:NEW.MT_CONNECTION_ID:=MT_CONNECTION_ID;
END;

martes, 9 de octubre de 2012

tomcat con librerias nativas

Otro compendio de comandos que se le deben al arquitecto Diego, solo es copiar y pegar, bueno y para que sirve esto, seguramente si han llegado hasta aca es porque saben de lo importante y que incrementa bastante el rendimiento del tomcat el tenerlo configurado así, ahora los comandos que creo que son bastante claros:



Ahi va el primer pedazo de como configurar el tomcat con librerías nativas



cd ${TOMCAT_HOME}/bin

tar -zxvf tomcat-native.tar.gz

# Check which version is currently in the new tomcat directory before upgrading!!!

cd tomcat-native-1.1.24-src/jni/native/

./configure --with-apr=/usr/bin/apr-1-config

make

make install



vi /home/appserver/tomcat/bin/startup.sh



export CATALINA_OPTS="-Xms1024m -Xmx2048m -XX:MaxPermSize=1024m"

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib

export LD_LIBRARY_PATH

load balancer tomcat

Hola esta no pretende ser una guia explicativa, es mas un compendio de comandos de que se debe hacer para configurar un load balancer round robin con apache, solo basta copiar y pegar, antes que todo hay que agradecer al arquitecto de aplicaciones Diego, este compendio se le debe a El. bueno ahora las instrucciones:

configurar mod_jk HTTPD



cd /usr/src/

wget http://download.nextag.com/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.37-src.tar.gz



tar xvf /usr/src/tomcat-connectors-1.2.37-src.tar.gz

cd /usr/src/tomcat-connectors-1.2.37-src/native

yum install gcc*



yum install httpd-devel





./configure --with-apxs=/usr/sbin/apxs



make

make install





vi /etc/httpd/conf/httpd.conf





# Load module



LoadModule jk_module  modules/mod_jk.so



# Specify path to worker configuration file



JkWorkersFile conf/workers.properties



# Configure logging and memory



JkShmFile logs/mod_jk.shm



JkLogFile logs/mod_jk.log



JkLogLevel info



# Configure monitoring



JkMount /jk_status status





        Order deny,allow

        #Deny from all

        Allow from all




# Configure applications



JkMount /* loadbalancer











vi /etc/httpd/conf/workers.properties







# Define worker names



worker.list=status,loadbalancer



# Create virtual workers



worker.status.type=status



worker.loadbalancer.type=lb



# Declare Tomcat server workers 1 through n



worker.worker1.type=ajp13



worker.worker1.host=192.168.100.92



worker.worker1.port=8009



# Declare Tomcat server workers 2 through n



worker.worker2.type=ajp13



worker.worker2.host=192.168.100.85



worker.worker2.port=8009





# Associate real workers with virtual LoadBalancer worker



worker.loadbalancer.balance_workers=worker1,worker2



es importante reemplazar el archivo de configuracion httpd.conf


con este contenido:


#
# This is the main Apache server configuration file.  It contains the
# configuration directives that give the server its instructions.
# See for detailed information.
# In particular, see
#
# for a discussion of each configuration directive.
#
#
# Do NOT simply read the instructions in here without understanding
# what they do.  They're here only as hints or reminders.  If you are unsure
# consult the online docs. You have been warned. 
#
# The configuration directives are grouped into three basic sections:
#  1. Directives that control the operation of the Apache server process as a
#     whole (the 'global environment').
#  2. Directives that define the parameters of the 'main' or 'default' server,
#     which responds to requests that aren't handled by a virtual host.
#     These directives also provide default values for the settings
#     of all virtual hosts.
#  3. Settings for virtual hosts, which allow Web requests to be sent to
#     different IP addresses or hostnames and have them handled by the
#     same Apache server process.
#
# Configuration and logfile names: If the filenames you specify for many
# of the server's control files begin with "/" (or "drive:/" for Win32), the
# server will use that explicit path.  If the filenames do *not* begin
# with "/", the value of ServerRoot is prepended -- so "logs/foo.log"
# with ServerRoot set to "/etc/httpd" will be interpreted by the
# server as "/etc/httpd/logs/foo.log".
#

### Section 1: Global Environment
#
# The directives in this section affect the overall operation of Apache,
# such as the number of concurrent requests it can handle or where it
# can find its configuration files.
#

#
# Don't give away too much information about all the subcomponents
# we are running.  Comment out this line if you don't mind remote sites
# finding out what major optional modules you are running
ServerTokens OS

#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# NOTE!  If you intend to place this on an NFS (or otherwise network)
# mounted filesystem then please read the LockFile documentation
# (available at );
# you will save yourself a lot of trouble.
#
# Do NOT add a slash at the end of the directory path.
#
ServerRoot "/etc/httpd"

#
# PidFile: The file in which the server should record its process
# identification number when it starts.
#
PidFile run/httpd.pid

#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300

#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On

#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 0

#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 15

##
## Server-Pool Size Regulation (MPM specific)
##
ServerLimit 1024
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves

StartServers       8
MinSpareServers    5
MaxSpareServers   20
#ServerLimit      512
MaxClients       512
MaxRequestsPerChild 0


# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves

StartServers         2
MaxClients         512
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
ThreadLimit         64
MaxRequestsPerChild  0


#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, in addition to the default. See also the
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
#Listen 12.34.56.78:80
Listen 80

#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule info_module modules/mod_info.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule cache_module modules/mod_cache.so
LoadModule suexec_module modules/mod_suexec.so
LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule file_cache_module modules/mod_file_cache.so
LoadModule mem_cache_module modules/mod_mem_cache.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so

#
# The following modules are not loaded by default:
#
#LoadModule cern_meta_module modules/mod_cern_meta.so
#LoadModule asis_module modules/mod_asis.so

#
# Load config files from the config directory "/etc/httpd/conf.d".
#
Include conf.d/*.conf

#
# ExtendedStatus controls whether Apache will generate "full" status
# information (ExtendedStatus On) or just basic information (ExtendedStatus
# Off) when the "server-status" handler is called. The default is Off.
#
#ExtendedStatus On

#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch. 
#
# User/Group: The name (or #number) of the user/group to run httpd as.
#  . On SCO (ODT 3) use "User nouser" and "Group nogroup".
#  . On HPUX you may not be able to use shared memory as nobody, and the
#    suggested workaround is to create a user www and use that user.
#  NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET)
#  when the value of (unsigned)Group is above 60000;
#  don't use Group #-1 on these systems!
#
User apache
Group apache

### Section 2: 'Main' server configuration
#
# The directives in this section set up the values used by the 'main'
# server, which responds to any requests that aren't handled by a
# definition.  These values also provide defaults for
# any containers you may define later in the file.
#
# All of these directives may appear inside containers,
# in which case these default settings will be overridden for the
# virtual host being defined.
#

#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed.  This address appears on some server-generated pages, such
# as error documents.  e.g. admin@your-domain.com
#
ServerAdmin root@localhost

#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If this is not set to valid DNS name for your host, server-generated
# redirections will not work.  See also the UseCanonicalName directive.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
# You will have to access it by its address anyway, and this will make
# redirections work in a sensible way.
#
#ServerName www.example.com:80

#
# UseCanonicalName: Determines how Apache constructs self-referencing
# URLs and the SERVER_NAME and SERVER_PORT variables.
# When set "Off", Apache will use the Hostname and Port supplied
# by the client.  When set "On", Apache will use the value of the
# ServerName directive.
#
UseCanonicalName Off

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html"

#
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the "default" to be a very restrictive set of
# features. 
#

    #Options Indexes FollowSymLinks
    Options +FollowSymLinks -SymLinksIfOwnerMatch -Indexes
    AllowOverride None
    Order Deny,Allow
    Deny from all


#
# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.
#

#
# This should be changed to whatever you set DocumentRoot to.
#


#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
    #Options Indexes FollowSymLinks
    Options +FollowSymLinks -SymLinksIfOwnerMatch

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride none

#
# Controls who can get stuff from this server.
#
Order Allow,Deny
Allow from all


#
# UserDir: The name of the directory that is appended onto a user's home
# directory if a ~user request is received.
#
# The path to the end user account 'public_html' directory must be
# accessible to the webserver userid.  This usually means that ~userid
# must have permissions of 711, ~userid/public_html must have permissions
# of 755, and documents contained therein must be world-readable.
# Otherwise, the client will only receive a "403 Forbidden" message.
#
# See also: http://httpd.apache.org/docs/misc/FAQ.html#forbidden
#

    #
    # UserDir is disabled by default since it can confirm the presence
    # of a username on the system (depending on home directory
    # permissions).
    #
    UserDir disable

    #
    # To enable requests to /~user/ to serve the user's public_html
    # directory, remove the "UserDir disable" line above, and uncomment
    # the following line instead:
    #
    #UserDir public_html


#
# Control access to UserDir directories.  The following is an example
# for a site where these directories are restricted to read-only.
#
#
#    AllowOverride FileInfo AuthConfig Limit
#    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
#   
#        Order allow,deny
#        Allow from all
#   

#   
#        Order deny,allow
#        Deny from all
#   

#


#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
# The index.html.var file (a type-map) is used to deliver content-
# negotiated documents.  The MultiViews Option can be used for the
# same purpose, but it is much slower.
#
DirectoryIndex index.html index.html.var

#
# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives.  See also the AllowOverride
# directive.
#
AccessFileName .htaccess

#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#

    Order allow,deny
    Deny from all


#
# TypesConfig describes where the mime.types file (or equivalent) is
# to be found.
#
TypesConfig /etc/mime.types

#
# DefaultType is the default MIME type the server will use for a document
# if it cannot otherwise determine one, such as from filename extensions.
# If your server contains mostly text or HTML documents, "text/plain" is
# a good value.  If most of your content is binary, such as applications
# or images, you may want to use "application/octet-stream" instead to
# keep browsers from trying to display binary files as though they are
# text.
#
DefaultType text/plain

#
# The mod_mime_magic module allows the server to use various hints from the
# contents of the file itself to determine its type.  The MIMEMagicFile
# directive tells the module where the hint definitions are located.
#

#   MIMEMagicFile /usr/share/magic.mime
    MIMEMagicFile conf/magic


#
# HostnameLookups: Log the names of clients or just their IP addresses
# e.g., www.apache.org (on) or 204.62.129.132 (off).
# The default is off because it'd be overall better for the net if people
# had to knowingly turn this feature on, since enabling it means that
# each client request will result in AT LEAST one lookup request to the
# nameserver.
#
HostnameLookups Off

#
# EnableMMAP: Control whether memory-mapping is used to deliver
# files (assuming that the underlying OS supports it).
# The default is on; turn this off if you serve from NFS-mounted
# filesystems.  On some systems, turning it off (regardless of
# filesystem) can improve performance; for details, please see
# http://httpd.apache.org/docs/2.2/mod/core.html#enablemmap
#
#EnableMMAP off

#
# EnableSendfile: Control whether the sendfile kernel support is
# used to deliver files (assuming that the OS supports it).
# The default is on; turn this off if you serve from NFS-mounted
# filesystems.  Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#enablesendfile
#
#EnableSendfile off

#
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a
# container, error messages relating to that virtual host will be
# logged here.  If you *do* define an error logfile for a
# container, that host's errors will be logged there and not here.
#
ErrorLog logs/error_log

#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn

#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
#
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

# "combinedio" includes actual counts of actual bytes received (%I) and sent (%O); this
# requires the mod_logio module to be loaded.
#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio

#
# The location and format of the access logfile (Common Logfile Format).
# If you do not define any access logfiles within a
# container, they will be logged here.  Contrariwise, if you *do*
# define per- access logfiles, transactions will be
# logged therein and *not* in this file.
#
#CustomLog logs/access_log common

#
# If you would like to have separate agent and referer logfiles, uncomment
# the following directives.
#
#CustomLog logs/referer_log referer
#CustomLog logs/agent_log agent

#
# For a single logfile with access, agent, and referer information
# (Combined Logfile Format), use the following directive:
#
CustomLog logs/access_log combined

#
# Optionally add a line containing the server version and virtual host
# name to server-generated pages (internal error documents, FTP directory
# listings, mod_status and mod_info output etc., but not CGI generated
# documents or custom error documents).
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
# Set to one of:  On | Off | EMail
#
ServerSignature On

#
# Aliases: Add here as many aliases as you need (with no limit). The format is
# Alias fakename realname
#
# Note that if you include a trailing / on fakename then the server will
# require it to be present in the URL.  So "/icons" isn't aliased in this
# example, only "/icons/".  If the fakename is slash-terminated, then the
# realname must also be slash terminated, and if the fakename omits the
# trailing slash, the realname must also omit it.
#
# We include the /icons/ alias for FancyIndexed directory listings.  If you
# do not use FancyIndexing, you may comment this out.
#
Alias /icons/ "/var/www/icons/"


    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all


#
# WebDAV module configuration section.
#

    # Location of the WebDAV lock database.
    DAVLockDB /var/lib/dav/lockdb


#
# ScriptAlias: This controls which directories contain server scripts.
# ScriptAliases are essentially the same as Aliases, except that
# documents in the realname directory are treated as applications and
# run by the server when requested rather than as documents sent to the client.
# The same rules about trailing "/" apply to ScriptAlias directives as to
# Alias.
#
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#

    AllowOverride None
    Options None
    Order allow,deny
    Allow from all


#
# Redirect allows you to tell clients about documents which used to exist in
# your server's namespace, but do not anymore. This allows you to tell the
# clients where to look for the relocated document.
# Example:
# Redirect permanent /foo http://www.example.com/bar

#
# Directives controlling the display of server-generated directory listings.
#

#
# IndexOptions: Controls the appearance of server-generated directory
# listings.
#
IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable

#
# AddIcon* directives tell the server which icon to show for different
# files or filename extensions.  These are only displayed for
# FancyIndexed directories.
#
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip

AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*

AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core

AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^

#
# DefaultIcon is which icon to show for files which do not have an icon
# explicitly set.
#
DefaultIcon /icons/unknown.gif

#
# AddDescription allows you to place a short description after a file in
# server-generated indexes.  These are only displayed for FancyIndexed
# directories.
# Format: AddDescription "description" filename
#
#AddDescription "GZIP compressed document" .gz
#AddDescription "tar archive" .tar
#AddDescription "GZIP compressed tar archive" .tgz

#
# ReadmeName is the name of the README file the server will look for by
# default, and append to directory listings.
#
# HeaderName is the name of a file which should be prepended to
# directory indexes.
ReadmeName README.html
HeaderName HEADER.html

#
# IndexIgnore is a set of filenames which directory indexing should ignore
# and not include in the listing.  Shell-style wildcarding is permitted.
#
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

#
# DefaultLanguage and AddLanguage allows you to specify the language of
# a document. You can then use content negotiation to give a browser a
# file in a language the user can understand.
#
# Specify a default language. This means that all data
# going out without a specific language tag (see below) will
# be marked with this one. You probably do NOT want to set
# this unless you are sure it is correct for all cases.
#
# * It is generally better to not mark a page as
# * being a certain language than marking it with the wrong
# * language!
#
# DefaultLanguage nl
#
# Note 1: The suffix does not have to be the same as the language
# keyword --- those with documents in Polish (whose net-standard
# language code is pl) may wish to use "AddLanguage pl .po" to
# avoid the ambiguity with the common suffix for perl scripts.
#
# Note 2: The example entries below illustrate that in some cases
# the two character 'Language' abbreviation is not identical to
# the two character 'Country' code for its country,
# E.g. 'Danmark/dk' versus 'Danish/da'.
#
# Note 3: In the case of 'ltz' we violate the RFC by using a three char
# specifier. There is 'work in progress' to fix this and get
# the reference data for rfc1766 cleaned up.
#
# Catalan (ca) - Croatian (hr) - Czech (cs) - Danish (da) - Dutch (nl)
# English (en) - Esperanto (eo) - Estonian (et) - French (fr) - German (de)
# Greek-Modern (el) - Hebrew (he) - Italian (it) - Japanese (ja)
# Korean (ko) - Luxembourgeois* (ltz) - Norwegian Nynorsk (nn)
# Norwegian (no) - Polish (pl) - Portugese (pt)
# Brazilian Portuguese (pt-BR) - Russian (ru) - Swedish (sv)
# Simplified Chinese (zh-CN) - Spanish (es) - Traditional Chinese (zh-TW)
#
AddLanguage ca .ca
AddLanguage cs .cz .cs
AddLanguage da .dk
AddLanguage de .de
AddLanguage el .el
AddLanguage en .en
AddLanguage eo .eo
AddLanguage es .es
AddLanguage et .et
AddLanguage fr .fr
AddLanguage he .he
AddLanguage hr .hr
AddLanguage it .it
AddLanguage ja .ja
AddLanguage ko .ko
AddLanguage ltz .ltz
AddLanguage nl .nl
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pl .po
AddLanguage pt .pt
AddLanguage pt-BR .pt-br
AddLanguage ru .ru
AddLanguage sv .sv
AddLanguage zh-CN .zh-cn
AddLanguage zh-TW .zh-tw

#
# LanguagePriority allows you to give precedence to some languages
# in case of a tie during content negotiation.
#
# Just list the languages in decreasing order of preference. We have
# more or less alphabetized them here. You probably want to change this.
#
LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW

#
# ForceLanguagePriority allows you to serve a result page rather than
# MULTIPLE CHOICES (Prefer) [in case of a tie] or NOT ACCEPTABLE (Fallback)
# [in case no accepted languages matched the available variants]
#
ForceLanguagePriority Prefer Fallback

#
# Specify a default charset for all content served; this enables
# interpretation of all content as UTF-8 by default.  To use the
# default browser choice (ISO-8859-1), or to allow the META tags
# in HTML content to override this choice, comment out this
# directive:
#
AddDefaultCharset UTF-8

#
# AddType allows you to add to or override the MIME configuration
# file mime.types for specific file types.
#
#AddType application/x-tar .tgz

#
# AddEncoding allows you to have certain browsers uncompress
# information on the fly. Note: Not all browsers support this.
# Despite the name similarity, the following Add* directives have nothing
# to do with the FancyIndexing customization directives above.
#
#AddEncoding x-compress .Z
#AddEncoding x-gzip .gz .tgz

# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media types:
#
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz

#
# AddHandler allows you to map certain file extensions to "handlers":
# actions unrelated to filetype. These can be either built into the server
# or added with the Action directive (see below)
#
# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add "ExecCGI" to the "Options" directive.)
#
#AddHandler cgi-script .cgi

#
# For files that include their own HTTP headers:
#
#AddHandler send-as-is asis

#
# For type maps (negotiated resources):
# (This is enabled by default to allow the Apache "It Worked" page
#  to be distributed in multiple languages.)
#
AddHandler type-map var

#
# Filters allow you to process content before it is sent to the client.
#
# To parse .shtml files for server-side includes (SSI):
# (You will also need to add "Includes" to the "Options" directive.)
#
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

#
# Action lets you define media types that will execute a script whenever
# a matching file is called. This eliminates the need for repeated URL
# pathnames for oft-used CGI file processors.
# Format: Action media/type /cgi-script/location
# Format: Action handler-name /cgi-script/location
#

#
# Customizable error responses come in three flavors:
# 1) plain text 2) local redirects 3) external redirects
#
# Some examples:
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
#

#
# Putting this all together, we can internationalize error responses.
#
# We use Alias to redirect any /error/HTTP_.html.var response to
# our collection of by-error message multi-language collections.  We use
# includes to substitute the appropriate text.
#
# You can modify the messages' appearance without changing any of the
# default HTTP_.html.var files by adding the line:
#
#   Alias /error/include/ "/your/include/path/"
#
# which allows you to create your own set of files by starting with the
# /var/www/error/include/ files and
# copying them to /your/include/path/, even on a per-VirtualHost basis.
#

Alias /error/ "/var/www/error/"



   
        AllowOverride None
        Options IncludesNoExec
        AddOutputFilter Includes html
        AddHandler type-map var
        Order allow,deny
        Allow from all
        LanguagePriority en es de fr
        ForceLanguagePriority Prefer Fallback
   


#    ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
#    ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
#    ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
#    ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
#    ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
#    ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
#    ErrorDocument 410 /error/HTTP_GONE.html.var
#    ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
#    ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
#    ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
#    ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
#    ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var
#    ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
#    ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
#    ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
#    ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
#    ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var


#
# The following directives modify normal HTTP response behavior to
# handle known problems with browser implementations.
#
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0

#
# The following directive disables redirects on non-GET requests for
# a directory that does not include the trailing slash.  This fixes a
# problem with Microsoft WebFolders which does not appropriately handle
# redirects for folders with DAV methods.
# Same deal with Apple's DAV filesystem and Gnome VFS support for DAV.
#
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "MS FrontPage" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully
BrowserMatch "^gnome-vfs/1.0" redirect-carefully
BrowserMatch "^XML Spy" redirect-carefully
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully

#
# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Change the ".example.com" to match your domain to enable.
#
#
#    SetHandler server-status
#    Order deny,allow
#    Deny from all
#    Allow from .example.com
#


#
# Allow remote server configuration reports, with the URL of
#  http://servername/server-info (requires that mod_info.c be loaded).
# Change the ".example.com" to match your domain to enable.
#
#
#    SetHandler server-info
#    Order deny,allow
#    Deny from all
#    Allow from .example.com
#


#
# Proxy Server directives. Uncomment the following lines to
# enable the proxy server:
#
#
#ProxyRequests On
#
#
#    Order deny,allow
#    Deny from all
#    Allow from .example.com
#


#
# Enable/disable the handling of HTTP/1.1 "Via:" headers.
# ("Full" adds the server version; "Block" removes all outgoing Via: headers)
# Set to one of: Off | On | Full | Block
#
#ProxyVia On

#
# To enable a cache of proxied content, uncomment the following lines.
# See http://httpd.apache.org/docs/2.2/mod/mod_cache.html for more details.
#
#
#   CacheEnable disk /
#   CacheRoot "/var/cache/mod_proxy"
#

#

#

# End of proxy directives.

### Section 3: Virtual Hosts
#
# VirtualHost: If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
#
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
#NameVirtualHost *:80
#
# NOTE: NameVirtualHost cannot be used without a port specifier
# (e.g. :80) if mod_ssl is being used, due to the nature of the
# SSL protocol.
#

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
#
#    ServerAdmin webmaster@dummy-host.example.com
#    DocumentRoot /www/docs/dummy-host.example.com
#    ServerName dummy-host.example.com
#    ErrorLog logs/dummy-host.example.com-error_log
#    CustomLog logs/dummy-host.example.com-access_log common
#


        ServerName 207.97.203.95
        ServerAlias 207.97.203.95
        DirectoryIndex index.html index.php
        DocumentRoot /var/www/html
    JkMount /habitat* loadbalancer
    JkMount /core* loadbalancer
    JkMount /jk_status status
    JkMount /ecu* loadbalancer

        AllowOverride All


# Load module

LoadModule jk_module  modules/mod_jk.so

# Specify path to worker configuration file

JkWorkersFile conf/workers.properties

# Configure logging and memory

JkShmFile logs/mod_jk.shm

JkLogFile logs/mod_jk.log

JkLogLevel info

# Configure monitoring

JkMount /jk_status status


        Order deny,allow
        #Deny from all
        Allow from all


# Configure applications

#JkMount /habitat* loadbalancer
#JkMount /core* loadbalancer

Certificado de seguridad SSL con tomcat

Hoy le doy gracias a uno de los arquitectos de aplicaciones mas sencillos, dinamicos, recursivos e inteligentes que conozco. Se preguntarán porque, porque gracias a El en el día de hoy tenemos este contenido para poder montar trabajar con certificados SSL en TOMCAT. bueno, jejeje, despues del lambetazo entonces pasemos al documento que muy gentilmente me proporcionó el compañero Diego.


Como montar un certificado generado para IIS en tomcat





despues de recibir el certificado de nuestra entidad certificadora



hacemos copy paste del mismo y lo guardamos en un archivo .cer certificado.cer



despues de esto se deben bajar los certificados medios de la siguiente pagina (para un certificado tipo secure site)



https://knowledge.verisign.com/support/ssl-certificates-support/index?page=content&id=AR1735



esta pagina puede variar de acuerdo al tipo de certificado comprado, para mayor informacion



aca se puede encontrar o comprobar el tipo de certificado

https://knowledge.verisign.com/support/ssl-certificates-support/index?page=content&actp=CROSSLINK&id=SO13499



aca se encuentran los certificados medios de acuerdo al tipo de certificados

https://knowledge.verisign.com/support/ssl-certificates-support/index?page=content&id=AR657



despues de seleccionar los certificados medios correctos creamos 2 archivos .p7b, primary.pb7 y seconday.p7b



Nota: verificar al hacer copy paste que no queden espacios en blanco en los archivos de los certificados.



ya teniendo nuestros 3 archivos .p7b procedemos a instalar los certificados



para instalar los certificados intermedios vamos al paso 5



https://knowledge.verisign.com/support/ssl-certificates-support/index?page=content&actp=CROSSLINK&id=SO8227



abrimos una consola cmd, ahi digitamos mmc.



seleccionamos add/remove snap in

seleccionamos certificates-> computer account-> local computer -> finish



ahi en intermediate certification authorities en la carpeta certificates hacemos click derecho->all tasks->import



importamos el certificado primary.p7b y secondary.p7b



despues procedemos a importar nuestro certificado firmado en el IIS, para esto vamos a la consola IIS manager,



aca nos paramos en el servidor y seleccionamos la opcion server certificates,



ahi seleccionamos complete certificate request y elegimos el archivo a importar certificado.cer



si sale algun error podemos importar el certificado de la misma forma que los intermedios, luego exportamos el certificado en formato pfx,



despues volvemos a la pestaña server certificates he importamos el archivo punto pfx



en este punto ya el certificado puede ser usado en el IIS y agregado al dominio respectivo.



Ahora procederemos con las transformaciones de los certificados para ser usados en el tomcat



como primera medida exportamos los certificados desde la consola mmc, se debe exportar el certificado firmado en un archivo con su correspondiente llave privada,

en otra se exportara el mismo certificado pero sin la llave privada,

y como 3 archivo se deben exportar los certificados intermedios



para esto selecionamos el certificado damos click derecho y en all tasks->export



despues de realizado tendremos que tener 3 archivos .pfx como se ve a continuacion



certificate.pfx

certificatewithkey.pfx

intermediate.pfx



con estos archivos ahora procederemos ha hacer la conversion de los mismos usando openssl a archivos .pem



openssl pkcs12 -in certificate.pfx -out certificate.pem -nodes

openssl pkcs12 -in intermediate.pfx -out intermediate.pem -nodes



despues generamos la llave privada desde el certificatewithkey.pfx



openssl pkcs12 -in certificatewithkey.pfx -nocerts -out privateKey.pem



removemos la autenticacion de la llave privada



openssl rsa -in privateKey.pem -out privateKeyWithoutPwd.pem



removemos la encripcion de la llave privada



openssl pkcs8 -topk8 -nocrypt -in privateKeyWithoutPwd.pem -inform PEM -out tmp.der -outform DER

openssl pkcs8 -nocrypt -in tmp.der -inform DER -out privateKeyNoEncrypt.pem -outform PEM





despues de generadas las llaves procedemos a configurar el tomcat



para esto agregamos las libreria APR openssl.exe y tcnative-1.dll en la carpeta bin donde esta instalado el tomcat y en el windows/system32



http://tomcat.heanet.ie/native/1.1.10/binaries/win32/



se debe modificar el archivo apache-tomcat-7.0.26-windows-x64\apache-tomcat-7.0.26\conf\server.xml



agregando la siguiente informacion



   
               maxThreads="150" scheme="https" secure="true"

                                                   SSLCACertificateFile="C:\cert\intermediate.pem"

                                                   SSLCertificateFile="C:\cert\certificate.pem"

                           SSLCertificateKeyFile="C:\cert\privateKeyNoEncrypt.pem"

               clientAuth="false" sslProtocol="TLSv1" />





despues de agregada esta informacion es necesario reiniciar el tomcat.

instalar skype x86_64 skype:error

bueno, el día de hoy me desperté con lo que siempre me motiva a hacer las cosas, la curiosidad y los errores diarios jejejeje, hoy comentaré acerca de un programa de uso masivo en las comunicaciones como es el skype.

Al correr skype descargado desde la misma pagina de skype produce multiples errores, pero he encontrado una solucion muy rapida y que está condensada en el siguiente vinculo:

http://fedorasolved.org/Members/dcr226/installing-skype


espero que les sea de ayuda a quienes visiten mi blog, un saludo grande!

martes, 31 de julio de 2012

logrotate RHEL y CENTOS para: kannel sms gateway, apache httpd y tomcat

bueno, en el día de hoy me he visto en la tarea de configurar los log rotate para unos servidores en los cuales tengo que configurarles dicha funcionalidad, en este caso pues me he valido de google y pues el codigo de los log rotate es:


para kannel,
suponiendo que se tiene un usuario llamado kannel:

/home/kannel/logs/*.log {
      daily
      missingok
      rotate 7
      compress
      dateext
      delaycompress
      notifempty
      create 640 kannel adm
      sharedscripts
      postrotate

           killall -HUP bearerbox bearerbox-normal smsbox smsbox-normal || true > /dev/null 2> /dev/null
      endscript
}

para httpd (apache):

/var/log/httpd/*log {
    weekly
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
    create 640 apache apache
    sharedscripts
    postrotate
        /sbin/service httpd reload > /dev/null 2>/dev/null || true
    endscript
}

y para tomcat:


/home/appserver/apache-tomcat-7.0.28/logs/*{
    weekly
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
    create 640 appserver appserver
}

espero les sea de ayuda.... jejeje... y hasta la proxima...


Oracle diccionario de datos data dictionary y consultas utiles

esta son unas consultas bastante utiles para aumentar y rastrear el rendimiento en ORALE como dijo Diego!! ejejejejeje... espero que tambien les sirva, en el centro se encuentra una consiguración de parametros de oracle para aumentar el rendimiento.


select program Aplicacion, count(program) Numero_Sesiones
from v$session
group by program
order by Numero_Sesiones desc
-- agrupadas por maquina
select program Aplicacion,MACHINE, count(program) Numero_Sesiones
from v$session
group by program,MACHINE
order by Numero_Sesiones desc

-- ultimas consultas ejecutadas por un usuario de una maquina especifica
select s.program Aplicacion, s.MACHINE, s.TERMINAL,vs.CPU_TIME , vs.runtime_mem,vs.EXECUTIONS,vs.SQL_FULLTEXT, vs.sharable_mem,
  vs.persistent_mem,  vs.sorts,
  vs.executions, vs.parse_calls, vs.module, 
  vs.buffer_gets, vs.disk_reads, vs.version_count,
  vs.users_opening, vs.loads, 
  to_char(to_date(vs.first_load_time,
  'YYYY-MM-DD/HH24:MI:SS'),'MM/DD  HH24:MI:SS') first_load_time, 
  rawtohex(vs.address) address, vs.hash_value hash_value ,
  rows_processed  , vs.command_type, vs.parsing_user_id  ,
  OPTIMIZER_MODE  , au.USERNAME parseuser 
from v$sqlarea vs , all_users au, v$session s  
where (parsing_user_id != 0)  AND
(au.user_id(+)=vs.parsing_user_id)
AND au.USERNAME like 'HABITATSMS'
AND au.USERNAME like s.USERNAME
AND s.MACHINE like'JUBILO'
and (vs.executions >= 1) order by   vs.CPU_TIME, vs.executions desc

-- modificada menos parametros que la anterior -- ultimas consultas ejecutadas por un usuario de una maquina especifica
select s.program Aplicacion, s.MACHINE, s.TERMINAL,vs.CPU_TIME , vs.runtime_mem,vs.EXECUTIONS,vs.SQL_FULLTEXT||' ||| ',vs.SQL_TEXT||' ||| ', 
  to_char(to_date(vs.first_load_time,
  'YYYY-MM-DD/HH24:MI:SS'),'MM/DD  HH24:MI:SS') first_load_time, 
  rawtohex(vs.address) address, vs.parsing_user_id , au.USERNAME parseuser 
from v$sqlarea vs , all_users au, v$session s  
where (parsing_user_id != 0)  AND
(au.user_id(+)=vs.parsing_user_id)
AND au.USERNAME like 'HABITATSMS'
AND au.USERNAME like s.USERNAME
AND s.MACHINE like'JUBILO'
AND to_char(to_date(vs.first_load_time,
  'YYYY-MM-DD/HH24:MI:SS'),'MM/DD') like '06/28'
and (vs.executions >= 1) order by   first_load_time,vs.CPU_TIME, vs.executions desc

desc v$sqlarea
desc all_users
desc v$session
-- consulta para traza y optimizar .NET


-- pruebas
SELECT  instance_name,
        DECODE(value, NULL, 'PFILE', 'SPFILE') "Init File Type"
FROM    sys.v_$parameter ,
        v$instance
WHERE   name = 'spfile';
-- cantidad maximo de sessiones que se pueden tener activas
SELECT name, value
  FROM v$parameter
 WHERE name = 'sessions'
--
SELECT
  'Currently, '
  || (SELECT COUNT(*) FROM V$SESSION)
  || ' out of '
  || DECODE(VL.SESSIONS_MAX,0,'unlimited',VL.SESSIONS_MAX)
  || ' connections are used.' AS USAGE_MESSAGE
FROM
  V$LICENSE VL

select program Aplicacion, MACHINE, TERMINAL, PROGRAM, PROCESS, OSUSER
from v$session
order by Aplicacion, MACHINE desc
-- RESOURCE_CONSUMER_GROUP, MACHINE, TERMINAL, PROGRAM,
desc v$session

select owner||'.'||OBJECT_NAME as object_list
  from dba_objects
  where owner in ('HABITAT', 'GENERAL_COMMONS')
  order by owner

--aumentar maximo de conexiones ORACLE

alter system set processes = 1000 scope = spfile;
alter system set sessions = 1000 scope = spfile;
alter system set transactions = 1500 scope = spfile;


select TABLE_NAME,TABLE_TYPE, OWNER from SYS.ALL_TABLES where owner in ('HABITAT', 'GENERAL_COMMONS')
   order by OWNER, TABLE_NAME
--consulta que obtiene el nombre de todos los objetos de un usuario en la base de datos
SELECT object_list, OBJECT_TYPE, owner FROM (
select owner||'.'||OBJECT_NAME as object_list, OBJECT_TYPE, owner
  from dba_objects
  where owner in ('HABITAT', 'GENERAL_COMMONS', 'HABITATSMS')
  --order by owner
  UNION
select owner||'.'||SYNONYM_NAME as object_list, 'SYNONYM' OBJECT_TYPE, owner
  from ALL_SYNONYMS
  where owner in ('HABITAT', 'GENERAL_COMMONS', 'HABITATSMS')
  --order by owner
  )
  ORDER BY owner
 

  desc dba_tables
  desc dba_objects
  desc all_tables
desc user_tables
desc ALL_SYNONYMS

desc dba_objects
--propietarios y obajetos
select owner||'.'||OBJECT_NAME as object_list
  from dba_objects
  where owner in ('HABITAT', 'GENERAL_COMMONS')
  order by owner
 
  select * from user_catalog
--cantidad de objetos por usuario
select owner, count(owner) Numero
  from dba_objects
  group by owner
  order by Numero desc
 
 
  ---------------------------------------------------------
  select s.program Aplicacion, s.MACHINE, s.TERMINAL,vs.CPU_TIME , vs.runtime_mem,vs.EXECUTIONS,vs.SQL_FULLTEXT, vs.sharable_mem,
  vs.persistent_mem,  vs.sorts,
  vs.executions, vs.parse_calls, vs.module, 
  vs.buffer_gets, vs.disk_reads, vs.version_count,
  vs.users_opening, vs.loads, 
  to_char(to_date(vs.first_load_time,
  'YYYY-MM-DD/HH24:MI:SS'),'MM/DD  HH24:MI:SS') first_load_time, 
  rawtohex(vs.address) address, vs.hash_value hash_value ,
  rows_processed  , vs.command_type, vs.parsing_user_id  ,
  OPTIMIZER_MODE  , au.USERNAME parseuser 
from v$sqlarea vs , all_users au, v$session s  
where (parsing_user_id != 0)  AND
(au.user_id(+)=vs.parsing_user_id)
AND au.USERNAME IN ('HABITATSMS' , 'GENERAL_COMMONS')
AND au.USERNAME like s.USERNAME
AND s.MACHINE IN('JUBILO','WARPATH')
AND vs.module IN ('HABITATSMS','ROOT-1-%','Axesnet.HabitatEnterprise.WindowsService.Habitat','JDBC Thin Client','QTAgent32.exe')
and (vs.executions >= 1) order by   vs.runtime_mem desc



--selecciona los bloqueos si existen
select used_ublk from v$transaction;

select username, status from v$session where username IN ('HABITATSMS' , 'GENERAL_COMMONS')

select * from v$transaction;



desc v$session
-- selecciona las conexiones y su estado con usuario diferente a oracle
SELECT sid||','||serial# username,
          status,
          MODULE,
          osuser,
          client_info,
          MACHINE,
          TO_CHAR(logon_time,'DD-MON-YY HH:MI:SSSS') loged_on
   FROM v$session where OSUSER!='oracle'
  
   order by MACHINE
  

SELECT sid||','||serial# username,
         
   FROM v$session where OSUSER!='oracle'
   where module like 'JDBC Thin Client'

-- comando para matar las sessiones
alter system kill session '25,1207';
alter system kill session '27,494';
alter system kill session '35,4668';
alter system kill session '771,4703';
alter system kill session '778,4548';
alter system kill session '793,8510';
alter system kill session '796,3188';
alter system kill session '798,618';
--seleccioona los identificadores  de jdbc para poder darles kill
SELECT sid||','||serial# username
         
   FROM v$session where OSUSER!='oracle'
   AND module like 'JDBC Thin Client';



SELECT 'GRANT SELECT, UPDATE, INSERT, DELETE ON GENERAL_COMMONS."'||object_name||'" TO USUARIO_CRUD;' FROM all_objects WHERE owner='DUENO' AND object_type IN ('TABLE','VIEW')
SELECT 'GRANT SELECT, UPDATE, INSERT, DELETE ON DUENO."'||object_name||'" TO USUARIO_CRUD;' FROM all_objects WHERE owner='DUENO' AND object_type IN ('TABLE','VIEW')

SELECT 'GRANT SELECT ON GENERAL_COMMONS."'||object_name||'" TO USUARIO_READ;' FROM all_objects WHERE owner='DUENO' AND object_type IN ('TABLE','VIEW')
SELECT 'GRANT SELECT ON DUENO."'||object_name||'" TO USUARIO_READ;' FROM all_objects WHERE owner='DUENO' AND object_type IN ('TABLE','VIEW')

lunes, 9 de julio de 2012

instalar open-ssh o scp accede a un linux remotamente y maneja archivos

en esta url está bastante explicito el uso y que se debe instalar para poder usar el comando scp.  http://www.techotopia.com/index.php/Configuring_RHEL_6_Remote_Access_using_SSH

comprimir yh descomprimir en CENTOS

algo impresidible que se debe tener a la mano como usar el comando tar, en este enlace se enfocan muy bien en el uso del mismo http://www.pedroventura.com/linux/como-comprimir-una-carpeta-entera-en-linux-desde-consola/


apache en centos y RHEL

en este caso los permisos me han jugado una mala pasada (gracias al compañero Oz), no tuve que hacer nada diferente a asignar los permisos adicionales a la carpeta del usuario en donde se contendrán los archivos, en este caso la guia va a ser la siguiente:


1. crear enlaces simbolicos dentro de /var/www/html/  -> ln -s /home/usuario/recurso recursito
2. chmod apache:apache recursito -> ubicado en /var/www/html/recursito
3. de igual forma con el contenido de recurso cambiar el propietario a apache
4. y por ultimo!!!!.... lo que me demoró 1 día!!!!, cambiar permisos a cada uno de los folder previos, en este caso chmod -R 755 /home/usuario/ chmod -R 755 /home/usuario/recurso/

no ser terco y leer este tramo del texto en el mismo archivo httpd.conf

# The path to the end user account 'public_html' directory must be
# accessible to the webserver userid.  This usually means that ~userid
# must have permissions of 711, ~userid/public_html must have permissions
# of 755, and documents contained therein must be world-readable.
# Otherwise, the client will only receive a "403 Forbidden" message.



ahhhhhhhhhh, no olvidar habilitar las lineas que deben agregarse en el archivo /etc/httpd/conf/httpd.conf

buscar (FollowSymLink) y si no están estas lineas, agregarlas:


    Options FollowSymLinks
    AllowOverride None





#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
    Options Indexes FollowSymLinks


y por ultimo reiniciar el servidor!!!, /sbin/service httpd restart


y no es mas!!!, que carma!!!, por fin saale eso!!!arrrrrrggggggggg, bueno... eso es para quien tenga algun problema eso será sufiente, algo importante tambien es la ubicacion del archivo de log:

vi /var/log/httpd/error_log


y si le dice el error:

Symbolic link not allowed or link target not accessible:

no sea terco, revise la ruta completa de acceso y hag lo que dice el bloque de arriba chmod 755 al directorio y ruta completa, porque es muy probable que esté en la carpeta de un usuario que no deja ingresar a apache a leer o ejecutar dicho archivo...

jueves, 5 de julio de 2012

configurar firewall en linux centos y RHEL

En el día de hoy me encontré en otra de esas sabrosas aventuras con las cuales uno debe aprender a las malas, "es decir buscar en internet" y es hacer que sirva el comando YUM en linux pero con el firelwall algo restrictivo... entonces me encontré con este par de palabras que me alegraron la tarde:

RELATED,ESTABLISHED


Es de recordar que si se hace como la segunda forma entonces se debe tener cuidado se agregar primero el puerto 22 que es SSH sino nos va a desconectar.

pero sin embargo se pueden hacer las cosas de multiples maneras para configurar el firewall como son:

copiar el siguiente contenido en el archivo "vi /etc/sysconfig/iptables" y luego ejecutar "/sbin/service iptables start" entonces aca está el contenido para un JBOSS y un TOMCAT:

# Generated by iptables-save v1.3.5 on Thu Jul  5 16:00:14 2012
*filter
#:INPUT ACCEPT [2:80]
#:FORWARD ACCEPT [0:0]
#:OUTPUT ACCEPT [13:876]
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8080 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -m state --state NEW -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 80 -m state --state NEW -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

-A INPUT -j DROP

COMMIT
# Completed on Thu Jul  5 16:00:14 2012




-----------------------------

pero si se desea tambien se puede dar uno el trabajo de agregar regla por regla como es:

/sbin/iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp -m state --state NEW --sport 80 -j ACCEPT




algo importante o configuraciones un poco mas detalladas las especifico a continuación (las lineas de # son comentarios):

*filter
#:INPUT ACCEPT [2:80]
#:FORWARD ACCEPT [0:0]
#:OUTPUT ACCEPT [13:876]

#acepta todas las reglas de entrada por la interfaz de loopback (127.0.0.1)
-A INPUT -i lo -j ACCEPT

#acepta todas las reglas de salida por la interfaz de loopback (127.0.0.1)
-A OUTPUT -o lo -j ACCEPT
#acepta todas las solicitudes de PING tanto entrada como salida, es util para el monitoreo y fragmentacion de paquetes
-A INPUT -p icmp --icmp-type echo-request -j ACCEPT
-A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
-A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
-A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

#acepta la conexion por el puerto 22 ssh para poder conectarse remotamente
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 14243 -m state --state NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 14244 -m state --state NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 14245 -m state --state NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 42424 -m state --state NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 42425 -m state --state NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 42426 -m state --state NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 42427 -m state --state NEW -j ACCEPT

#acepta conexion por el puerto 3306 usado por mysql
-A INPUT -p tcp -m tcp --dport 3306 -m state --state NEW -j ACCEPT
# se pueden colocar rangos de puertos como en este caso, tiene un rango de puertos abiertos para entrada
-A INPUT -p tcp -m tcp --dport 14243:14499 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 42424:42699 -m state --state NEW -j ACCEPT

#dice que las conexiones que han sido establecidas con OUT se aceptan como seguras
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

#se abre un puerto especifico diferencia sport (source port) dport (destination port)
-A OUTPUT -p tcp -m tcp --dport 12586 -m state --state NEW -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 12586 -m state --state NEW -j ACCEPT

(permite aceptar las conexiones que han salido)
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#elimina todas las conexiones de entrada o solicitudes de puertos que no han sido abiertos
-A INPUT -j DROP

COMMIT
# Completed on Thu Jul  5 16:00:14 2012

miércoles, 4 de julio de 2012

configurar memcached en RHEL o CENTOS acelerar rendimiento de php

bueno, en otra de mis aventuras por el mundo de la infraestructura me encontré con el caso de tener que montar esta extension en un servidor para acelerar el rendiemiento de php, los pasos basicos son los siguientes:


yum install -y php-soap scp php php-mysql php-gd mysql-cli httpd php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mapserver php-mbstring php-mcrypt php-mhash php-mssql php-shout php-snmp php-soap php-tidy memcached memcached-devel zlib-devel zlib

wget http://mirror.nyi.net/apache/tomcat/tomcat-7/v7.0.28/bin/apache-tomcat-7.0.28.tar.gz

/usr/sbin/useradd appserver

passwd appserver

chown appserver:appserver apache-tomcat-7.0.28.tar.gz

mv apache-tomcat-7.0.28.tar.gz  /home/appserver/



rpm -ivh jdk-7u5-linux-x64.rpm
vi /etc/sysconfig/memcached
-> add after to void a file
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="1024"
OPTIONS="-l 127.0.0.1"



/sbin/chkconfig memcached on
/sbin/service memcached start
cd /root/
wget http://pecl.php.net/get/memcache-2.2.6.tgz

tar xvpzf memcache-2.2.6.tgz

cd memcache-2.2.6

phpize

./configure

make

make install

vi /etc/php.ini

-> add in the zone extension
extension = “memcache.so”
/sbin/service httpd restart
php -i | grep memcache -i


su appserver

tar xvpzf apache-tomcat-7.0.28.tar.gz



comandos para arrancar JBOSS en linux:

arrancar jboss y escuchar todas las ips:
sh standalone.sh -b 0.0.0.0 &

Detener jboss:

/home/appServer/jboss-as-7.1.0.Final/bin/jboss-cli.sh --connect command=:shutdown

miércoles, 27 de junio de 2012

haciendo tunning a oracle DB

En esta URL se puede ver la ecuacion que se usa para calcular la cantidad de conexiones a la BD:
http://docs.oracle.com/cd/B28359_01/server.111/b28310/manproc003.htm


Con esta consulta se pueden ver los parametros que se pretenden modificar para aumentar el desempeño de la BD:

select name,value from v$parameter where name in ('processes','sessions','transactions')

Este primero es para establecer el numero de procesos
alter system set processes = 1000 scope = spfile;
Cantidad de sessiones
alter system set sessions = 1000 scope = spfile;
cantidad de transacciones
alter system set transactions = 1500 scope = spfile;

todo lo anterior como se puede notar es en el archivo spfile, pero se puede ahora generar el  pfile con el siguiente comando:

create pfile from spfile

martes, 15 de mayo de 2012

para realizar pruebas el programa sugerido es apache jmeter solo configurar las variables de entorno (
export JMETER_HOME=/home/jvasquezgiraldo/apache-jmeter-2.6/
export JAVA_HOME=/usr/java/jre1.7.0_03/
), pero aca dejo un par de urls que tienen mas opciones:
http://www.webresourcesdepot.com/15-free-functionality-and-load-testing-tools-for-web-applications/

http://sentidoweb.com/2006/10/20/lista-de-herramientas-para-testeo-de-aplicaciones-web.php

espero que les sirva


Firewall linux centos y RHEL

bueno, otra de mis aventuras en el trabajo ... jejejeje, crear reglas en el firewall, entonces para esto es importante tener el firewall abajo y probar que se tenga acceso a lo que se necesita primero, luego si se desea entonces pues primero que todo agregar el puerto 22 si la conexion se está haciendo remotamente por que es el puerto de ssh (ya me pasó que no lo agregué a las reglas del firewall y entonces me desconectó despues de reiniciar el firewall, jejejeje) y despues si agregar las otras reglas necesarias, aca les dejo una muestra de reglas creadas:

/sbin/iptables -A FORWARD -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

  /sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

   /sbin/iptables -A OUTPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

  /sbin/service iptables status

   /sbin/service iptables save

   /sbin/service iptables restart


recomiendo especial cuidado con las palabras FORWARD, OUPUT e INPUT.




algo importante o configuraciones un poco mas detalladas las especifico a continuación (las lineas de # son comentarios):

*filter
#:INPUT ACCEPT [2:80]
#:FORWARD ACCEPT [0:0]
#:OUTPUT ACCEPT [13:876]

#acepta todas las reglas de entrada por la interfaz de loopback (127.0.0.1)
-A INPUT -i lo -j ACCEPT

#acepta todas las reglas de salida por la interfaz de loopback (127.0.0.1)
-A OUTPUT -o lo -j ACCEPT
#acepta todas las solicitudes de PING tanto entrada como salida, es util para el monitoreo y fragmentacion de paquetes
-A INPUT -p icmp --icmp-type echo-request -j ACCEPT
-A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
-A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
-A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

#acepta la conexion por el puerto 22 ssh para poder conectarse remotamente
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 14243 -m state --state NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 14244 -m state --state NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 14245 -m state --state NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 42424 -m state --state NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 42425 -m state --state NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 42426 -m state --state NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 42427 -m state --state NEW -j ACCEPT

#acepta conexion por el puerto 3306 usado por mysql
-A INPUT -p tcp -m tcp --dport 3306 -m state --state NEW -j ACCEPT
# se pueden colocar rangos de puertos como en este caso, tiene un rango de puertos abiertos para entrada
-A INPUT -p tcp -m tcp --dport 14243:14499 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 42424:42699 -m state --state NEW -j ACCEPT

#dice que las conexiones que han sido establecidas con OUT se aceptan como seguras
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

#se abre un puerto especifico diferencia sport (source port) dport (destination port)
-A OUTPUT -p tcp -m tcp --dport 12586 -m state --state NEW -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 12586 -m state --state NEW -j ACCEPT

(permite aceptar las conexiones que han salido)
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#elimina todas las conexiones de entrada o solicitudes de puertos que no han sido abiertos
-A INPUT -j DROP

COMMIT
# Completed on Thu Jul  5 16:00:14 2012