lunes, 25 de enero de 2010

Freebsd 7/8: Deshabilitar log-bin en mysql 5.1.

Si no estamos ejecutando mysql en modo cluster, estos logs empiezan a llenar nuestro disco sin darnos cuenta, ademas que quitan preciado CPU.

Me ha tocado ver estos logs de mas 1GB x archivo. Pero podemos deshabilitarlos, para ello debemos abri nuestro archivo my.cnf y comentar estos 2 parametros:

# Replication Master Server (default)
# binary logging is required for replication
#log-bin=mysql-bin

# binary logging format - mixed recommended
#binlog_format=mixed

Ya hecho esto, reiniciamos el servidor mysql y listo no mas logeara esto, saludos!!!

Freebsd 7/8: Cambiar password en Mysql 5.1.

Sencillo, ingresamos a la console de mysql y ejecutamos lo siguiente:

set password for 'root'@'127.0.0.1' = password('mi-password');
Query OK, 0 rows affected (0.00 sec)

mysql> set password for 'root'@'bsd8.pheriko.dyndns.org' = password('mi-password');
Query OK, 0 rows affected (0.00 sec)

mysql> set password for 'root'@'localhost' = password('mi-password');
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

Cuando ingresemos debemos hacerlo asi:

mysql -u root -p

Listo, con esto sabemos que debemos logearnos via usuario-password en mysql, saludos!!!

Freebsd 7/8: Eliminar usuarios en mysql 5.1

Bien, acabamos de instalar freebsd o bien ya tenemos un servidor operando. Cuando tenemos los mentados usuarios anonimos, es altamente recomendable los eliminemos o bien les asignemos password.

Yo en lo personal los elimino, por default mysql crea el mismo usuario 3 veces, una por cada conexion de red que tengamos, ejemplo:

@localhost
@127.0.0.1
@hostname

El anonimo aparece sin nombre, si ustedes le hacen un query a la tabla 'users' de mysql:

select User from user;

Van a ver a este usuario con este campo vacio, este es.

Para eliminarlo debemos ejecutar el comando DROP, su sintaxis es muy simple:

DROP USER USERNAME;

Para ya eliminar todas las apariciones del anonimo, debe ejecutar el comando 1 por 1, asi:

drop user ''@'localhost';
drop user 'hostname';
drop user '';

Por cada aparicion de mi query lo hago, recuerden que mysql genera los usuarios de la forma:

username@hostame.

Por ello es necesario especificar esa parte, ya que es parte del username.

Esto mismo aplica a todos los demas usuarios, no solo a los anonimos.

Saludos!!!

domingo, 24 de enero de 2010

Freebsd 8.x: Como instalar apache con php.

Bien vamos hacer esto que es algo comun de encontrar, apache con php.

Aqui nos vamos a ir por apache22 /usr/ports/www/apache22 y /usr/ports/lang/php5.

Para apache cuando les aparezca la pantalla de configuracion para make, elijan las opciones que crean convenientes, existen muchas que el puro nombre nos dice la funcion que van a llevar a cabo, yo en lo personal aun no veo la necesidad de usar IPv6 asi que la desmarco.

Una vez hecho esto dejamos que continue el proceso de instalacion.

Aqui necesitamos hacer 2 cosas:

1; Configurar el archivo httpd.conf.
2; Configurar rc.conf.

httpd.conf esta en? donde instala FreeBSD la configuracion de sus ports?...

/usr/local/etc/

Apache dentro de esta ruta coloca un folder con su nombre "apache22", ahi dentro encontramos todos sus archivos de configuracion.

Abrimos el httpd.conf y editamos estas opciones:

Listen 192.168.50.125:80

Aqui colocamos el IP de nuestro servidor, como podran ver ahi esta el mio.

ServerName hostname.mi dominio:80

Aqui tenemos 2 cosas, si tienen un dns y tienen esta maquina registrada adelante aqui pongan el nombre, yo uso pfsense como fw asi que el tiene esa funcion habilitada por ello la puedo usar. De lo contrario si no tiene registrado el nombre en su red, solo denlo de alta en /etc/hosts y aqui pongan su IP en vez del nombre.

Listo, ahora para que FreeBSD pueda arrancar apache cada que reiniciemos el sistema debemos dar de alta ciertos parametros en /etc/rc.conf, asi:

apache22_enable="YES"

Si abren el archivo /usr/local/etc/rc.d/apache22 van a encontrar en la cabecera mas parametros, si los conocen usenlos, de lo contrario cuando entiendan su funcion ya saben donde deben de usarlos (/etc/rc.conf).

Ya con esto podemos arrancar apache asi:

/usr/local/etc/rc.d/apache22 start

Checamos:

bsd8# sockstat -4 USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS www httpd 2516 3 tcp4 192.168.50.125:80 *:* www httpd 2515 3 tcp4 192.168.50.125:80 *:* www httpd 2514 3 tcp4 192.168.50.125:80 *:* www httpd 2513 3 tcp4 192.168.50.125:80 *:* www httpd 2512 3 tcp4 192.168.50.125:80 *:* www httpd 2511 3 tcp4 192.168.50.125:80 *:* www httpd 2510 3 tcp4 192.168.50.125:80 *:* www httpd 2509 3 tcp4 192.168.50.125:80 *:*
Ahi esta en operacion apache.

Ahora sigue php5, en los ports existe uno de nombre php5-extensions localizado en:

/usr/ports/lang/

Este fue creado para administrar todos los modulos habidos y por haber de phpx (4/5), asi que vamos sobre el.

cd /usr/ports/lang/php5-extensions
make install clean

Lo mismo que apache, cuando les aparezca el menu de opciones activen y desactiven las convenientes, esto puede tardar segun sus elecciones y ademas los ports necesarios pueden tener las propias en especial php5-gd.

Cuando el sistema llegue a la instalacion de php5, no se les vaya a pasar activar la opcion que dice:

[X] APACHE Build Apache module

De lo contrario no se compilara el modulo php para apache.

Una vez que haya terminado todo el proceso, debemos llevar a cabo ciertos pasos, nada es sencillo pero es necesario conocer como opera todo y mas cuando estan en tus manos servidores 7x24.

Ahora nos vamos de nuevo a /usr/local/etc/, ahi tenemos estos archivos:

php.conf
php.ini-recommended php --> directorio php.ini-dist
php.ini-recommended

Necesitamos el php.ini que es la configuracion general de php, para ello la vamos a sacar de php.ini-recommended.

cp
php.ini-recommended php.ini

En este archivo vamos a editar solo 1 parametro el cual nos va a permitir a nosotros codificar nuestros scripts php en la forma:

NOTA:blogger no me permite usar codigo php, ustedes saben como van.

Abran php.ini y coloquen este parametro asi:

short_open_tag = On

Salven el archivo y ahora seguimos con apache, abran de nuevo el archivo httpd.conf y vamos a agregar los siguientes parametros.

1; Busquen esta linea, aqui nos indica si php instalo el modulo para apache:

LoadModule php5_module libexec/apache22/libphp5.so

Si no existe la agregan a el final de todos los modulos aproximadamente linea 104.

2; Busquen el parametro DirectoryIndex y agreguen index.php, algo asi:

DirectoryIndex index.php index.html index.htm

Aproximadamente linea 216.

3; Ahora busquen los mime_modules ya agreguen a el final esto:

AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps

Listo, ahora necesitamos reiniciar apache y probar php. Para probar creamos un archivito de nombre test.php y lo colocamos en nuestro documentroot(/usr/local/www/apache22/data), el archivo solo debe llevar esta funcion:

phpinfo();

NOTA: Entre llaves para codigo php de favor.

Reiniciamos apache y probamos en su navegador el archivo, nos debe arrojar los modulos de php habilitados, algo asi:


Claro que esto es solo parte de la salida.

Si por alguna razon rara no les aparece esto y el navegador se queda en blanco, les recomiendo apagar apache y iniciarlo de nuevo, o sea:

/usr/local/etc/rc.d/apache22 stop
/usr/local/etc/rc.d/apache22 start

Le intentan de nuevo, si aun siguen con problemas.

Abran el log de apache(/var/log/httpd-error.log) para ver si les arroja algun error, aun no tenido errores con esto, pero si ustedes ven algo raro hagamenlo saber, el mio solo dice

[Mon Jan 25 08:11:41 2010] [notice] Apache/2.2.14 (FreeBSD) mod_ssl/2.2.14 OpenSSL/0.9.8k DAV/2 PHP/5.2.12 with Suhosin-Patch configured -- resuming normal operations

Si ustedes tiene el mismo mensaje, bueno como ultimo recurso, que no deberia pero me ha pasado, reinicien su equipo...

Saludos!!!

FreeBSD 8.X: Jails

Hola, ahora seguimos con la seccion de Jails, segun dice el handbook son mas flexibles los Jails que la forma tradicional que se venia utilizando la cual se conoce como chroot.

Con los Jails casi se esta virtualizando, ya que podemos tener varios Jails ejecutandose al mismo tiempo que el sistema host, sin afectarlo, podemos tener una "root" el poderoso usuario, pero solo tendra poder sobre el Jail donde existe, de ahi en fuera no tiene ningun efecto, los mismo el sistema de ports, IP, etc.

En fin muchas ventajas sobre el chroot. Ahora antes de empezar debemes tener cuenta que el arbol de freebsd "src" debe estar completo y al dia, ya que debemos ejecutar un make buildworld en nuestro sistema "host" para darle el resultado a el jail y poder trabajar con el.

El handbook dice asi:

# setenv D /jails/jail1
# mkdir -p $D
# cd /usr/src
# make buildworld
# make installworld DESTDIR=$D
# make distribution DESTDIR=$D
# mount -t devfs devfs $D/dev

En mi caso, el destino es una particion de nombre "jails" ahi dentro voy a colocar cada jail para cada servicio que vamos a crear, voy a ejecutar 2:

jail1 --> apache
jail2 --> bind

Hoy nos vamos quedar en make buildworld, ya que termine continuamos, sale!!!

miércoles, 20 de enero de 2010

FreeBSD 7.x: Enviar correos con SSMTP

Aqui de regreso, esta vez tengo un servidor de respaldo con bacula+mysql, bacula es muy comunicativo, siempre desea hacernos saber que va haciendo, desde un cambio de cinta hasta cuando un cliente no respondio.

Utiliza una utileria de nombre bsmtp, si leen el archivo de configuracion del director(bacula-dir.conf), se daran cuenta de ese comando.

Bien, por default FreeBSD y sus hermanos hacen uso de Sendmail para esto, mas necesitamos acessar el servidor para saber que esta pasando, ya en estos tiempos de la comunicacion no es practico esto, por que mejor no mandar esos correos a nuestra bandeja.

Se puede usar Sendmail, pero para que hacer uso de un software tan pesado para esto, si solo deseamos que nuestro servidor nos comunique todo a nuestro correo, para ello existe una aplicacion muy sencilla y fue hecha para esto, enviar correos no + no -.

Su nombre es: SSMTP.

La encuentras en los ports y en el handbook hablan de ella, vamos a ponerla a funcionar, pero 1ro que nada necesitamos deshabilitar a Sendmail y detenerlo para que nunca mas arranque.

Para ello necesitamos editar /etc/rc.conf y poner a todo "no":

mta_start_script="/etc/rc.sendmail"
sendmail_enable="NO" # Run the sendmail inbound daemon (YES/NO).
sendmail_submit_enable="NO" # Start a localhost-only MTA for mail submission
sendmail_outbound_enable="NO" # Dequeue stuck mail (YES/NO).
sendmail_msp_queue_enable="NO" # Dequeue stuck clientmqueue mail (YES/NO).
sendmail_rebuild_aliases="NO" # Run newaliases if necessary (YES/NO).

Si en realidad no hacen uso de el, pueden eliminarlo del sistema pero necesitan crear un nuevo kernel y hacer ciertas a modificaciones a el sistema para que no lo vuelva a incluir, pero esta es otra historia.

Bien, una vez que ya editaron este archivo, necesitamos tronarlo:

/etc/rc.d/sendmail stop

Despues buscar todo indicio de este servicio y eliminarlo, ya saben: ps -ax | grep sendmail y matar todos los PID que se encuentren, ya deben saber como hacer esto :-).

Bien ya que sendmail ha desaparecido seguimos con la instalacion de ssmtp, el cual se localiza en:

/usr/ports/mail/ssmtp

Nos vamos hacia haya y:

make install replace clean
rehash

Listo, ahora vamos a ver cual es la informacion de nuestro dominio de correo:

Domain: mycorreo.com
smtp port: 25

Necesitamos saber esta informacion para configurar ssmtp, el cual almacena su informacion en...? /usr/local/etc/ssmtp, dentro encontraran 2 archivos base:

revaliases.sample ssmtp.conf
ssmtp.conf.sample

Los cambia por nombre-archivo.conf

En mi caso queda ssmtp.conf asi:

# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=root@mycorreo.com

# The place where the mail goes. The actual machine name is required
# no MX records are consulted. Commonly mailhosts are named mail.domain.com
# The example will fit if you are in domain.com and your mailhub is so named.
mailhub=mail.mycorreo.com

# Example for SMTP port number 2525
# mailhub=mail.your.domain:2525
# Example for SMTP port number 25 (Standard/RFC)
# mailhub=mail.your.domain
# Example for SSL encrypted connection
# mailhub=mail.your.domain:465

# Where will the mail seem to come from?
rewriteDomain=mycorreo.com

# The full hostname
hostname=bacula

# Set this to never rewrite the "From:" line (unless not given) and to
# use that address in the "from line" of the envelope.
FromLineOverride=YES

# Use SSL/TLS to send secure messages to server.
#UseTLS=YES

# Use SSL/TLS certificate to authenticate against smtp host.
#UseTLSCert=YES

# Use this RSA certificate.
#TLSCert=/usr/local/etc/ssmtp/ssmtp.pem

# Get enhanced (*really* enhanced) debugging information in the logs
# If you want to have debugging of the config file parsing, move this option
# to the top of the config file and uncomment
#Debug=YES

El revaliases aun no le he encontrado uso, asi que lo omitimos. Ahora aqui tenemos que nuestro dns esta funcional, pero si no tienen alguno puede hacer uso de /etc/hosts o bien poner el IP de sus servidor en el parametro mailhub.

Aqui ya tenemos el sistema funcional, ahora solo unas pruebas para ver si es cierto:

ssmtp -s usuario@mydominio.com root@midominio.com

CTRL+D +

Nos debe caer el correo a nuestra bandeja.

Ahora en el caso de bacula, debemos cambiar ciertos parametros para que "bsmtp" pueda funcionar, quedaria asi:

mailcommand = "/usr/local/sbin/bsmtp -h 192.168.1.7:25 -f \"\(Bacula\) %r\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/usr/local/sbin/bsmtp -h 192.168.1.7:25 -f \"\(Bacula\) %r\" -s \"Bacula: Necesito un Pariente Para %j\" %r"

Si observan que ahora necesitamos decirle a "bsmtp" que IP tiene nuestro server de correo o nombre si su dns esta operable, con esto bacula podra enviarme los correos a mi bandeja de entrada, asi de simple, y ademas su servdidor podra enviar todo lo que quiera a su bandeja de entrada, saludos!!!