Monthly Archives: October 2010

Administrando MysqlServer en Ubuntu 10.04

En esta mini guia vamos a ver como instalar mysqlserver y dar los primeros pasos para una administracion basica.

Antes que nada vamos a bajarlo.

root@hostname:/var/www/ubuntu# aptitude install mysql-server
Leyendo lista de paquetes… Hecho
Creando árbol de dependencias
Leyendo la información de estado… Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes… Hecho
Se instalarán los siguiente paquetes NUEVOS:
libdbd-mysql-perl{a} libdbi-perl{a} libhtml-template-perl{a} libmysqlclient16{a} libnet-daemon-perl{a}
libplrpc-perl{a} mysql-client-5.1{a} mysql-client-core-5.1{a} mysql-common{a} mysql-server
mysql-server-5.1{a} mysql-server-core-5.1{a}
0 paquetes actualizados, 12 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 23,2MB de archivos. Después de desempaquetar se usarán 54,8MB.
¿Quiere continuar? [Y/n/?]

Seguido de eso le va a pedir la clave de root para mysql asi que le ponen la que quieran.

Archivos de configuracion de mysql:

root@hostname:/var/www/ubuntu# cd /etc/mysql/
root@hostname:/etc/mysql# ls
conf.d  debian.cnf  debian-start  my.cnf
root@hostname:/etc/mysql# 

El archivo my.cnf es el archivo de configuracion basico donde se va a establecer los parametros mas significativo del mysql.

Vamos a mostrar como conectarnos como root

root@hostname:/etc/mysql/conf.d# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 41
Server version: 5.1.41-3ubuntu12.6 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> SELECT VERSION ();
+--------------------+
| VERSION ()         |
+--------------------+
| 5.1.41-3ubuntu12.6 |
+--------------------+
1 row in set (0.00 sec)

mysql> 

Ver las bases:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
+--------------------+
2 rows in set (0.00 sec)

mysql>

Para crear una base de datos:


mysql> CREATE DATABASE `test_database`;
Query OK, 1 row affected (0.00 sec)

mysql>show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test_database      |
+--------------------+
3 rows in set (0.00 sec)

mysql>


Vamos a crear una tabla:


mysql> CREATE TABLE comment_table(
    -> id INT NOT NULL auto_increment,
    -> comment TEXT,
    -> PRIMARY KEY(id));
Query OK, 0 rows affected (0.68 sec)

mysql>
mysql> show tables;
+-------------------------+
| Tables_in_test_database |
+-------------------------+
| comment_table           |
+-------------------------+
1 row in set (0.00 sec)

mysql> describe comment_table;
+---------+---------+------+-----+---------+----------------+
| Field   | Type    | Null | Key | Default | Extra          |
+---------+---------+------+-----+---------+----------------+
| id      | int(11) | NO   | PRI | NULL    | auto_increment |
| comment | text    | YES  |     | NULL    |                |
+---------+---------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql> 

Ahora vamos a darle privilegios a esa base para que el usuario linux pueda utilizarla.


mysql> GRANT ALL PRIVILEGES ON test_database.* TO linux@localhost IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> 

root@hostname:/etc/mysql# mysql -u linux -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 44
Server version: 5.1.41-3ubuntu12.6 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test_database      |
+--------------------+
2 rows in set (0.00 sec)

mysql> 
mysql> use test_database;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+-------------------------+
| Tables_in_test_database |
+-------------------------+
| comment_table           |
+-------------------------+
1 row in set (0.00 sec)

mysql> INSERT INTO comment_table VALUES ('0','Vamos el violeta');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO comment_table VALUES ('0','Viva La Santa Federacion');
Query OK, 1 row affected (0.00 sec)

mysql>


Tambien se le puede dar solo algunos privilegios a ciertos usuarios asi por lo menos tan solo pueden hacer consultas.
Ej:
GRANT SELECT PRIVILEGES ON test_database.* TO dbquery@localhost IDENTIFIED BY ‘123456’;

Haciendo una consulta basica:

mysql> select * from comment_table;
+----+--------------------------+
| id | comment                  |
+----+--------------------------+
|  1 | Vamos el violeta         |
|  2 | Viva La Santa Federacion |
+----+--------------------------+
2 rows in set (0.00 sec)

mysql> 

Ahora si quisieramos hacer un backup
La sintaxis seria asi ->

 mysqldump --add-drop-table -u [username] -p[password] [database] > [backup_file]

Quedaria algo asi:

root@hostname:/etc/mysql# mysqldump --add-drop-table -u linux -p123456 test_database > /tmp/test_databse.sql
root@hostname:/etc/mysql# ls -l /tmp/test_databse.sql
-rw-r--r-- 1 root root 1995 2010-10-31 22:08 /tmp/test_databse.sql
root@hostname:/etc/mysql# file /tmp/test_databse.sql
/tmp/test_databse.sql: ASCII text
root@hostname:/etc/mysql#

Si quisieramos hacer un restore:

La sintaxis seria asi –>

mysql -u [username] -p[password] [database] < [backup_file]

Para hacer un restore de la copia de resguardo.
root@hostname:/etc/mysql# mysql -u linux -p123456 test_database < /tmp/test_databse.sql Si quisiera solo resguardar algunas tablas y no toda la base :


mysql> use forums-db-old;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> SELECT * INTO OUTFILE '/tmp/forums-db-users.sql' FROM phpbb_users;
Query OK, 1042 rows affected (0.03 sec)
 
mysql> SELECT * INTO OUTFILE '/tmp/forums-db-themes.sql' FROM phpbb_themes;
Query OK, 1038 rows affected (0.03 sec)
 
mysql> use forums-db-new;
Database changed
mysql> load data infile '/tmp/forums-db-users.sql' replace  into table forums-db.phpbb_users ;
Query OK, 1042 rows affected (0.06 sec)
Records: 1042  Deleted: 0  Skipped: 0  Warnings: 0
 
mysql> load data infile '/tmp/forums-db-themes.sql' replace into table forums-db.phpbb_themes ;
Query OK, 1038 rows affected (0.04 sec)
Records: 1038  Deleted: 0  Skipped: 0  Warnings: 0
 
mysql>

Hasta aca vimos tareas basicas de administracion muchas de ellas requieren conocimientos basicos de sql.
Ahora vamos a instalar phpmyadmin para poder administrar nuestras base de forma web.

INSTALANDO PHPMYADMIN

root@hostname:/etc/mysql# aptitude install phpmyadmin
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias       
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido       
Inicializando el estado de los paquetes... Hecho
Se instalarán los siguiente paquetes NUEVOS:
  apache2-mpm-prefork{a} dbconfig-common{a} javascript-common{a} libapache2-mod-php5{a} libgd2-xpm{a} 
  libjs-mootools{a} libmcrypt4{a} libt1-5{a} php5-common{a} php5-gd{a} php5-mcrypt{a} php5-mysql{a} phpmyadmin 
  wwwconfig-common{a} 
Se ELIMINARÁN los siguientes paquetes:
  apache2-mpm-worker{a} 
0 paquetes actualizados, 14 nuevos instalados, 1 para eliminar y 0 sin actualizar.
Necesito descargar 8.967kB de archivos. Después de desempaquetar se usarán 31,2MB.
¿Quiere continuar? [Y/n/?] 

Luego van a tener que selecionar el servidor web que estan usando que quieren usar asi lo instala.
Tambien despues leva a pedir la clave del administrador de base de datos para configurar labase para phpmyadmin.

Luego en su navegador ponen esto:
http://172.16.31.148/phpmyadmin/
Van a tener el menu para poder loguearse.

Luego una vez adentro podemos elegir trabajar en aquellas bases donde tengamos privilegios.

Un ejemplo de como quedo cuanod agregue una tabla a la base test_database:

A continuacion vamos a generar un index.php para que nos muestre le contenido de nuestra base:
Nos guiamos con el script hecho en esta pagina [5].

Esto es todo saludos.

Fuentes:
[1] http://www.ajpdsoft.com/modules.php?name=News&file=article&sid=159
[2] http://www.alcancelibre.org/staticpages/index.php/como-mysql-quickstart
[3] http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch34_:_Basic_MySQL_Configuration
[4] http://www.brennan.id.au/17-MySQL_Server.html
[5] http://www.yolinux.com/TUTORIALS/LinuxTutorialMySQL.html
[6] http://www.php.happycodings.com/Miscellaneous/code26.html
[7] http://php.net/manual/en/function.mysql-list-tables.php
[8] http://www.php-mysql-tutorial.com/wikis/mysql-tutorials/connect-to-mysql-database.aspx
[9] http://php.bigresource.com/Display-database-output-in-mutli-column-html-table-toyECbb6.html

Configurando Kickstart con Ubuntu Parte II

En el post anterior vimos como configurar una instalacion por red mediante PXE pero de manera asistida ahora vamos a agregarle la parte para que la instalacion sea desasistida mediante la utilizacion de kickstart.

¿Qué son las instalaciones Kickstart?

Muchos administradores de sistemas preferieren usar un método de instalación automatizado para instalar linux en sus máquinas. Para cubrir esta necesidad, Red Hat creó el método de instalación kickstart. Usando kickstart, un administrador de sistemas puede crear un archivo conteniendo las respuestas a todas las preguntas que normalmente se le preguntarán durante una instalación típica de Linux.

Los archivos kickstart se pueden mantener en un servidor de sistema único y ser leídos por computadores individuales durante la instalación. Este método de instalación puede soportar el uso de un sólo archivo kickstart para instalar Red Hat Linux en múltiples máquinas, haciéndolo ideal para administradores de sistemas y de red.
Kickstart le permite automatizar la instalación de Linux. [2]

Seguimos entonces con la configuracion que teniamos hecha antes para poder continuar con la configuracion de kickstart.

Para ello necesitaremos instalar el siguiente paquete para poder crear el archivo kickstar o sino podriamos crearlo a mano.

root@hostname:/var/lib/tftpboot/webserver# aptitude search kickstart
i system-config-kickstart – graphical tool for creating Kickstart files
root@hostname:/var/lib/tftpboot/webserver#

Vamos a tener que generar el archivo con esa apliacacion seleccionando el tipo de instalacion http , tengan en cuenta que kickstart fue desarrollado para Red Hat asi que para ubuntu tiene ciertas limitaciones.

Aca vemos el programa de configuracion grafica de kickstart

Luego que selecionamos todo guardamos el archivo.

A continuacion su contenido.


root@hostname:~# cat ks.cfg-test 
#Generated by Kickstart Configurator
#platform=x86

#System language
lang es_AR
#Language modules to install
langsupport en_US fr_FR --default=es_AR
#System keyboard
keyboard latam
#System mouse
mouse
#System timezone
timezone America/Argentina/Buenos_Aires
#Root password
rootpw --iscrypted $1$JsM2Ock2$KcPPS2Rda6T29wWgHuyfH0
#Initial user
user rino --fullname "rino" --iscrypted --password $1$lijNsN62$F6iL.4NY9e4no10UZ/bS10
#Reboot after installation
reboot
#Use text mode install
text
#Install OS instead of upgrade
install
#Use Web installation
url --url http://172.16.31.148/ubuntu
#System bootloader configuration
bootloader --location=mbr 
#Clear the Master Boot Record
zerombr yes
#Partition clearing information
clearpart --all --initlabel 
#Disk partitioning information
part /boot --fstype ext2 --size 200 --asprimary 
part swap --size 500 
part / --fstype ext4 --size 1 --grow --asprimary 
#System authorization infomation
auth  --useshadow  --enablemd5 
#Network information
network --bootproto=dhcp --device=eth0
#Firewall configuration
firewall --disabled 
#Do not configure the X Window System
skipx
#Package install information
@ ubuntu-desktop
%pre
#this is my pre installation script
%post
#this is my post installation script
root@hostname:~#

Este archivo lo copiamos a /var/www/ubuntu con el nombre ks.cfg.

Luego vamos a tener que reconfigurar el menu para la instalacion asi que vamos hacer backup del que existia y generar uno nuevo bien basico.

root@hostname:/var/www/ubuntu# cat /var/lib/tftpboot/webserver/pxelinux.cfg/default

DEFAULT linux

LABEL linux
kernel ubuntu-installer/i386/linux
append ks=http://172.16.31.148/ks.cfg preseed/url=http://172.16.31.148/ubuntu.seed vga=normal initrd=ubuntu-installer/i386/initrd.gz — quiet

prompt 1
timeout 8
root@hostname:/var/www/ubuntu#

Tengan en cuenta que la linea append es toda una linea entera no son dos renglones diferentes.

Aca en la siguiente imagen vamos a ver como arranca por red como lo habiamos realizado antes, nada mas que no tenemos un menu.

Si llegan a tener este error:

Lo solucione de esta manera.

root@hostname:~# cd /var/www/ubuntu/ubuntu/dists/lucid/restricted/binary-i386/
root@hostname:/var/www/ubuntu/ubuntu/dists/lucid/restricted/binary-i386# ls
Packages.gz  Release
root@hostname:/var/www/ubuntu/ubuntu/dists/lucid/restricted/binary-i386# gunzip Packages.gz 
root@hostname:/var/www/ubuntu/ubuntu/dists/lucid/restricted/binary-i386# 

Despues de un rato van a tener su sistema instalado.

Esto que vimosde kickstart es la punta del iceberg… Se pueden lograr configuraciones mucho mas avanzadas y personalizadas tan solo es cuestion de seguir leyendo la documentacion y ver que es lo que necesitamos para ir tras ello.
Si van a querer instalar varios sistemas a la vez tienen que configurar el archivo de dhcp para que apunte a las mac de las pc que necesitan.
Tambien pueden jugar un poco y crearse un menu para que soporte la instalacion de multiples versiones de ubuntu y para eso tendria que jugar un poco con el menu y la estructura de archivos haciendo que apunte al directorio correspondiente.

Saludos 🙂

Fuente:
[1] http://www2.tiendalinux.com/docs/manuales/redhat/rhl-cg-es-7.1/s1-kickstart2-options.html
[2] http://www.hospedajeydominios.com/mambo/documentacion-manual_rh9cg-pagina-s1_kickstart2_startinginstall.html
[3] http://alufis35.uv.es/Kickstart-instalaciones.html
[4] http://yoadminsis.blogspot.com/2010/06/kickstart-creacion-de-un-servidor-de.html

Apuntando mis dominios a mi propio dns con Ubuntu server 10.04

Buenas:

Vamos a realizar algunas practicas con dns.

Para empezar vamos a configurar un dominio para que sea el dns de nuestras webs.

Vamos a crear el archivo que contiene la info que necesita nuestra zona.

root@pc1:~# cd /etc/
root@pc1:/etc# cd bind
root@pc1:/etc/bind# ls
bind.keys  db.127  db.empty  db.root     named.conf.default-zones  named.conf.options  zones.rfc1918
db.0       db.255  db.local  named.conf  named.conf.local          rndc.key
root@pc1:/etc/bind# cp db.empty db.midns.com

Ahora que copiamos ya desde uno por defecto vamos a editarlo para que quede asi.


root@pc1:/etc/bind# cat db.midns.com
; BIND reverse data file for empty rfc1918 zone
;
; DO NOT EDIT THIS FILE - it is used for multiple zones.
; Instead, copy it, edit named.conf, and use that copy.
;
$TTL    86400
@       IN      SOA     ns1.midns.com. root.midns.com. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                          86400 )       ; Negative Cache TTL
;
@       IN      NS      ns1.midns.com.
ns1     IN      A       172.16.31.149
root@pc1:/etc/bind#

Luego tenemos que configurar nuestros archivos de configuracion global del demonio bind.


root@pc1:/etc/bind# ls -l
total 60
-rw-r--r-- 1 root root  601 2010-03-22 16:59 bind.keys
-rw-r--r-- 1 root root  237 2010-03-22 16:59 db.0
-rw-r--r-- 1 root root  271 2010-03-22 16:59 db.127
-rw-r--r-- 1 root root  237 2010-03-22 16:59 db.255
-rw-r--r-- 1 root root  353 2010-03-22 16:59 db.empty
-rw-r--r-- 1 root root  270 2010-03-22 16:59 db.local
-rw-r--r-- 1 root bind  384 2010-10-29 15:52 db.midns
-rw-r--r-- 1 root bind  384 2010-10-29 15:52 db.midns.com
-rw-r--r-- 1 root root 2940 2010-03-22 16:59 db.root
-rw-r--r-- 1 root bind  463 2010-03-22 16:59 named.conf
-rw-r--r-- 1 root bind  490 2010-03-22 16:59 named.conf.default-zones
-rw-r--r-- 1 root bind  239 2010-10-29 15:52 named.conf.local
-rw-r--r-- 1 root bind  572 2010-10-29 15:51 named.conf.options
-rw-r----- 1 bind bind   77 2010-10-29 15:23 rndc.key
-rw-r--r-- 1 root root 1317 2010-03-22 16:59 zones.rfc1918
root@pc1:/etc/bind#

De todos esos tenemos que tocar nada mas el named.conf.local que es el que vamos a ir agregando nuestras zonas a administrar.


root@pc1:/etc/bind# cat named.conf.local
//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "midns.com" {
        type master;
        file "/etc/bind/db.midns.com";
};
root@pc1:/etc/bind#

Corroboramos que no halla errores de sintaxis en los archivos que modificamos.

root@pc1:/etc/bind# named-checkconf named.conf
root@pc1:/etc/bind# named-checkconf named.conf.local
root@pc1:/etc/bind#
root@pc1:/etc/bind# named-checkzone midns.com db.midns.com
zone midns.com/IN: loaded serial 1
OK
root@pc1:/etc/bind#

Luego restarteamos el servicio y vemos si esta andando todo.


root@pc1:/etc/bind# invoke-rc.d bind9 restart
 * Stopping domain name service... bind9                                                                                          [ OK ]
 * Starting domain name service... bind9                                                                                          [ OK ]
root@pc1:/etc/bind#
No se olviden de esto -->
root@pc1:/etc/bind# cat /etc/resolv.conf
nameserver 172.16.31.2  --> lo tengo apuntado a la interface nat que me da ip .
domain localdomain
search localdomain
root@pc1:/etc/bind# vi /etc/resolv.conf
root@pc1:/etc/bind# cat /etc/resolv.conf
nameserver 172.16.31.149 --> apuntemoslo a nuestro dns (nuestra ip)
domain localdomain
search localdomain
root@pc1:/etc/bind#
Aca una bateria de utilidades de bind.
root@pc1:/etc/bind# host ns1.midns.com
ns1.midns.com has address 172.16.31.149
root@pc1:/etc/bind# nslookup ns1.midns.com
Server:         172.16.31.149
Address:        172.16.31.149#53

Name:   ns1.midns.com
Address: 172.16.31.149

root@pc1:/etc/bind# dig ns1.midns.com

; <<>> DiG 9.7.0-P1 <<>> ns1.midns.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3432
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;ns1.midns.com.                 IN      A

;; ANSWER SECTION:
ns1.midns.com.          86400   IN      A       172.16.31.149

;; AUTHORITY SECTION:
midns.com.              86400   IN      NS      ns1.midns.com.

;; Query time: 1 msec
;; SERVER: 172.16.31.149#53(172.16.31.149)
;; WHEN: Fri Oct 29 17:33:08 2010
;; MSG SIZE  rcvd: 61

root@pc1:/etc/bind#

Ahora lo que vamos hacer es suponer que tenemos dos sitios webs …
www.villadalmine.com.ar
www.santafederacion.com.ar
Y queremos que utilize el dns que configuramos arriba.


Creamos el primer archivo de nuestra zona
root@pc1:/etc/bind# cp db.empty  db.villadalmine.com.ar
root@pc1:/etc/bind#

Lo editamos

root@pc1:/etc/bind# cat db.villadalmine.com.ar
; BIND reverse data file for empty rfc1918 zone
;
; DO NOT EDIT THIS FILE - it is used for multiple zones.
; Instead, copy it, edit named.conf, and use that copy.
;
$TTL    86400
@       IN      SOA     ns1.midns.com.       ns1.midns.com. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                          86400 )       ; Negative Cache TTL
;
@       IN      NS      ns1.midns.com.
www     IN      A       172.16.31.149
root@pc1:/etc/bind#
Luego editamos el named.conf.local
root@pc1:/etc/bind# cat named.conf.local
//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "midns.com" {
        type master;
        file "/etc/bind/db.midns.com";
};

zone "villadalmine.com.ar" {
        type master;
        file "/etc/bind/db.villadalmine.com.ar";
};
root@pc1:/etc/bind#

Ahora vamos hacer lo mismo para el otro sitio.

root@pc1:/etc/bind# cp db.empty db.santafederacion.com.ar
root@pc1:/etc/bind# vi db.santafederacion.com.ar
root@pc1:/etc/bind# vi named.conf.local
root@pc1:/etc/bind# named-checkzone santafederacion.com.ar db.santafederacion.com.ar
zone santafederacion.com.ar/IN: loaded serial 1
OK
root@pc1:/etc/bind#

Los archivos quedaron asi:

root@pc1:/etc/bind# cat db.santafederacion.com.ar
; BIND reverse data file for empty rfc1918 zone
;
; DO NOT EDIT THIS FILE – it is used for multiple zones.
; Instead, copy it, edit named.conf, and use that copy.
;
$TTL 86400
@ IN SOA ns1.midns.com. ns1.midns.com. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
@ IN NS ns1.midns.com.
www IN A 172.16.31.149
root@pc1:/etc/bind#

root@pc1:/etc/bind# cat named.conf.local
//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include “/etc/bind/zones.rfc1918”;
zone “midns.com” {
type master;
file “/etc/bind/db.midns.com”;
};

zone “villadalmine.com.ar” {
type master;
file “/etc/bind/db.villadalmine.com.ar”;
};

zone “santafederacion.com.ar” {
type master;
file “/etc/bind/db.santafederacion.com.ar”;
};
root@pc1:/etc/bind#

Bueno ahora reiniciamos y testeamos que ande con las herramientas de bind.


root@pc1:/etc/bind# dig www.santafederacion.com.ar

; <<>> DiG 9.7.0-P1 <<>> www.santafederacion.com.ar
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50174
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.santafederacion.com.ar.    IN      A

;; ANSWER SECTION:
www.santafederacion.com.ar. 86400 IN    A       172.16.31.149

;; AUTHORITY SECTION:
santafederacion.com.ar. 86400   IN      NS      ns1.midns.com.

;; ADDITIONAL SECTION:
ns1.midns.com.          86400   IN      A       172.16.31.149

;; Query time: 1 msec
;; SERVER: 172.16.31.149#53(172.16.31.149)
;; WHEN: Fri Oct 29 21:16:07 2010
;; MSG SIZE  rcvd: 103

root@pc1:/etc/bind# dig www.villadalmine.com.ar

; <<>> DiG 9.7.0-P1 <<>> www.villadalmine.com.ar
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9142
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.villadalmine.com.ar.       IN      A

;; ANSWER SECTION:
www.villadalmine.com.ar. 86400  IN      A       172.16.31.149

;; AUTHORITY SECTION:
villadalmine.com.ar.    86400   IN      NS      ns1.midns.com.

;; ADDITIONAL SECTION:
ns1.midns.com.          86400   IN      A       172.16.31.149

;; Query time: 0 msec
;; SERVER: 172.16.31.149#53(172.16.31.149)
;; WHEN: Fri Oct 29 21:16:15 2010
;; MSG SIZE  rcvd: 100

Bueno ya tenemos andando nuestras zonas ahora vamos a hostear los sitios en otro equipo haciendo que utilize nuestro dns.

Miren la salida de la configuracion del equipo externo


rino ~ # ls -la /var/www/
total 20
drwxr-xr-x  5 apache root 4096 Oct 29 21:29 .
drwxr-xr-x 14 root   root 4096 Oct 29 16:10 ..
drwxr-xr-x  3 root   root 4096 Oct 29 16:16 localhost
drwxr-xr-x  2 root   root 4096 Oct 29 21:30 santafederacion.com.ar
drwxr-xr-x  2 root   root 4096 Oct 29 21:30 villadalmine.com.ar
rino ~ # ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0c:29:b2:ff:f8
          inet addr:172.16.31.147  Bcast:172.16.31.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:feb2:fff8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24010 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12282 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:35338831 (33.7 MiB)  TX bytes:686110 (670.0 KiB)
          Interrupt:19 Base address:0x2000 

rino ~ #

Ahora vemos el apache 🙂

rino vhosts.d # ls -l
total 28
-rw-r–r– 1 root root 7628 Oct 29 16:16 00_default_ssl_vhost.conf
-rw-r–r– 1 root root 1518 Oct 29 16:16 00_default_vhost.conf
-rw-r–r– 1 root root 398 Oct 29 21:26 default.include
-rw-r–r– 1 root root 2830 Oct 29 16:16 default_vhost.include
-rw-r–r– 1 root root 398 Oct 29 21:40 santafederacion.com.ar.conf
-rw-r–r– 1 root root 389 Oct 29 21:36 villadalmine.com.ar.conf
rino vhosts.d # uname -r
2.6.34-gentoo-r6

rino vhosts.d # uname -a

rino vhosts.d # cat /etc/resolv.conf
# Generated by dhcpcd from eth0
# /etc/resolv.conf.head can replace this line
search localdomain
nameserver 172.16.31.149
# /etc/resolv.conf.tail can replace this line
rino vhosts.d #

Como ven es otro equipo que apunta a nuestro dns 🙂

Esto funciona claramente para un uso interno si quieren hacer su propio dns para apuntarle sus webs lo mas practico es usar el servicio de –>
http://freedns.afraid.org/
http://www.everydns.com

Para hacerlo mas didactico por lo menos algo..
Me voy agregar esta entrada en mi /etc/hosts porque no voy a cambiar mi dns 🙂

172.16.31.147 www.villadalmine.com.ar www.santafederacion.com.ar

Y ahora la prueba de que esta andando 🙂



Como ven del lado derecho una pagina y del lado izquierdo otra

Resumiendo, configuramos dns, y dos zonas que utilizan ese dns para que luego las paginas sean hospedadas en otra web.. Pero para eso tuvimos que cambiar los archivos de las zonas para que el registro que contiene a donde esta el subdominio www apunte a la ip donde esta hospedada la pagina.

Aca estan los archivos, en negrita lo que se cambio
root@pc1:/etc/bind# cat db.villadalmine.com.ar
; BIND reverse data file for empty rfc1918 zone
;
; DO NOT EDIT THIS FILE – it is used for multiple zones.
; Instead, copy it, edit named.conf, and use that copy.
;
$TTL 86400
@ IN SOA ns1.midns.com. ns1.midns.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
@ IN NS ns1.midns.com.
www IN A 172.16.31.147
root@pc1:/etc/bind#

root@pc1:/etc/bind# cat db.santafederacion.com.ar
; BIND reverse data file for empty rfc1918 zone
;
; DO NOT EDIT THIS FILE – it is used for multiple zones.
; Instead, copy it, edit named.conf, and use that copy.
;
$TTL 86400
@ IN SOA ns1.midns.com. ns1.midns.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
@ IN NS ns1.midns.com.
www IN A 172.16.31.147
root@pc1:/etc/bind#

Bueno esto es todo 🙂

Saludos

Preparando LPIC-1 104.7 Encontrar archivos de sistema y colocar archivos en su correcta ubicación

En este topico vamos a ver un poco el tema de la estructura de archivos del sistema y algunos comando basicos para poder encontrar archivos.

Antes de empezar a explicar algo hay que introducir un termino que es FHS (Filesystem Hierarchy standard –>http://www.pathname.com/fhs/ ) un estandar a seguir para las distribuciones de Linux en lo referente a lo que es la forma en que se utiliza el sistema de archivos en Linux en donde menciona la forma en que se tendria que utilizar este.
Vamos a mencionar algunas partes de FHS pero para mas informacion leer el link mencionado.

Dos formas para el uso de datos:

Data Sharing:
Aca vamos a definir la forma en que se puede utilizar en un ambiente de redes.

Shareable:
Los datos que pueden ser usados por multiples sistemas en una red. Los archivos que se pueden compartir que son informacion de proposito general en donde existe ninguna atadura en ningun host.
Un ejemplo de estos archivos podrian ser archivos de datos, archivos de programas ejecutables y documentacion del sistema.

Non-Shareable:

Aquella informacion que no se puede compartir dada que esta atada a un equipo en particular como por ejemplo archivos de configuracion.

Data-Modification:
Esta categoria especifica como se cambian los datos

Variable:

Los datos son considerados variables cuando estos cambian de forma natural.
Ejemplo de estos podrian ser archivos de usuarios, log del sistema. Ejemplo /var/log/syslog, /var/log/messages.

Static:
Son aquellos archivos que no interactuan con nadie y permanecen siempre iguales durante el dia a dia o años enteros. Un ejemplo de estos podrian ser los binarios de determinados comandos (ls,bash) en donde solo cambian cuando se actualiza el sistema.

Algunos directorios en el sistema de ficheros de Linux estan destinados a contener los tipos específicos de datos.
Por ejemplo, los archivos ejecutables en / usr rara vez se han cambiado, por lo que podría definirse
como algo estático, ya que son necesarios para todos los usuarios en una red. Antes de que los discos eran tan grandes como lo son hoy, los archivos que se encuentran comúnmente en / usr se montaban a menudo desde servidores remotos para conservar espacio en el disco local. Así, además de ser estático, / usr se dice que es compartible. Mantener los archivos organizados con respecto a estos atributos se puede simplificar el intercambio de archivos, administración de sistemas, y la complejidad de copia de seguridad, así como reducir los requerimientos de almacenamiento.
El FHS organiza las categorías de datos anteriores en una matriz de 2 × 2.

Shareable Non-Shareable
Static /usr /etc
/usr/local /boot
Variable /var/mail /var/log
/home /proc

En muchas redes, / usr y /usr/local se montan por las estaciones de trabajo individuales de
un servidor NFS. Esto puede ahorrar una cantidad considerable de almacenamiento local en las estaciones de trabajo. Más importante aún, la colocación de estos directorios en otro sistema puede hacer que las
actualizaciones y upgrades sean mucho más simples. Estos directorios suelen ser compartido como sistemas de archivo de solo lectura porque no son modificados por la mayoría de usuarios finales. El directorio /var/mail
y directorios /home, por el contrario, se comparten pero sonn cambiados regularmente por los usuarios. El directorio /etc y /boot contienen archivos que son estáticos en el sentido de que
sólo el administrador puede cambiarlo, pero el uso compartido de ellos no es necesario o aconsejado,
porque son archivos de configuración local. El directorio /var /log y /proc son directorios muy
dinámicos, pero también es solo de interés local.


El sistema de archivos Root /

El FHS ofrece un significativo nivel de detalle que describe la localización exacta de los archivos, utilizando lógica derivada de la definicion static / variable y shareable / nonsharable. Sin embargo, el conocimiento de la ubicación de cada archivo no es necesario o requerido para el examen 101. Esta sección trata sobre las partes más importantes de la jerarquía de directorios FHS.El sistema de archivos raíz se encuentra en la parte superior de la jerarquía de directorios . El FHS define los objetivos para el sistema de archivos raíz:

* Debe contener los archivos de los servicios públicos y archivos suficiente para arrancar el sistema operativo, incluyendo la capacidad de montar otros sistemas de archivos. Esto incluye servicios públicos, archivos de dispostivos, configuración, información del gestor de arranque, y otros datos esenciales para iniciar el sistema.

* Debe contener las utilidades que necesita el administrador del sistema para reparar o restaurar un sistema dañado.

* Debería ser relativamente pequeño.Particiones pequeñas son menos propensas a ser dañadas por
una caída del sistema . Además, la particion raiz debe contener los datos non-sharable para maximizar el espacio de disco restante para los datos compartibles (shareable).

* El software no debería crear archivos o directorios en el sistema de ficheros raíz.

Aunque un sistema Linux con todo en una sola partición raíz se puede crear, el hacerlo asi no cumpliria con estos objetivos. En cambio, el sistema de archivos raíz debe contener sólo los esenciales directorios del sistema, junto con los puntos de montaje para otros sistemas de archivos.
Los ssenciales directorios del sistema de archivos raíz incluyen:

/bin
/dev
/etc
/lib
/mnt
/root
/sbin
El resto de directorios de nivel superior en el sistema de archivos raíz se consideran no esenciales para los procedimientos de emergencia:
/boot
/home
/opt
/tmp
/usr
/var

El sistema de archivos /usr

El sistema de archivos /usr / contiene utilidades de sistema y programas que no aparecen en la partición raíz. Por ejemplo, los programas de usuario, tales como less y la tail se encuentra en /usr/bin. /Usr/ sbin contiene comandos de administración del sistema, tales como adduser y traceroute, y una serie de demonios sólo necesarios cuando el sistema funciona normalmente. No hay datos específicos del host o datos varibles que se almacenen en /usr. También es rechazada la colocación de directorios directamente en /usr para los paquetes de software grandes. Una excepción a esta regla está hecha para X11.

Los siguientes subdiretorios se pueden encontrar en /usr:

/usr/X11R6
/usr/bin
/usr/include
/usr/lib
/usr/local
/usr/sbin
/usr/share
/usr/src

El sistmade archivos /var:
El sistema de archivos /var contiene datos tales como el de la cola de impresion y los archivos de registro de bitacoras que varían con el tiempo. Puesto que los datos variables siempre están cambiando y creciendo, /var es por lo general contenida en una partición separada para evitar el llenado de la partcion raiz.

Los siguientes sub-directorios se pueden encontrar en / var:

/var/account
/var/cache
/var/crash
/var/games
/var/lock
/var/log
/var/mail
/var/opt
/var/run
/var/spool
/var/state
/var/tmp
/var/yp

Busqueda de binarios:

Archivos compilado ejecutables, llamados archivos binarios, simplemente binarios, puede estar ubicado en un
diferentes lugares en un sistema de archivos FHS. Sin embargo, es fácil convertirse esto un poco confuso dado que encontrar un archivo ejecutable en nuestro sistema FSH puede tornarse dificil.
Esto es particularmente cierto para los directorios bin y sbin, que aparecen en ubicaciones múltiples.
En esta tabla se enumeran estos directorios y muestra cómo se usa cada uno.

Tipo de archivo Comandos de Usuario Comandos de administrador de sistema
Vender-Supplied- Esenciales (root filesystem) /bin /sbin
Vender-Supplied- No Esenciales (/usr filesystem)row 2, cell 1 /usr/bin /usr/sbin
Locally Supplied- No Esenciales (/usr filesystem) /usr/local/bin /usr/local/sbin

Ubicando los archivos:

FHS ofrece a la comunidad Linux un excelente recurso que asegura la coherenciaentre las distintas distribuciones y otros sistemas operativos. En la práctica, sin embargo, la ubicación del archivo puede ser frustrante, y surge la necesidad de buscar archivos en el sistema rápidamente.
Estas herramientas de localización de archivos son necesarias para el examen 101: which, find, locate, whereis, y type.
Which utiliza la variable PATH para localizar los archivos ejecutables.
Find realiza busqueda en áreas especificadas en el sistema de archivos.
Whereis busca en un pequeño subconjunto de directorios comunes.
locate ofrece una alternativa rápida para encontrar por de nombre de archivo y es adecuado para la localización de los archivos que no se mueven en el sistema de archivos. Sin una base de datos actualizada para la búsqueda, locate no es adecuado para archivos recién creados o que han cambiado de nombre.

Which

Sintaxis

which comando

Determina la ubicación del comando y muestra la ruta completa del programa ejecutable que
la shell lanzaría para ejecutarlo.Este sólo busca la ruta del usuario (usa el PATH).

[root@restauracion kernels]# which bash
/bin/bash
[root@restauracion kernels]#

which es pequeño y tiene sólo una cosa: determina qué programa ejecutable se encuentra y
que es ejecutado por la shell. Esta búsqueda es particularmente útil si tienes problemas con la configuración
de la variable de entorno PATH o si estás creando una nueva versión de una utilidad actual y
quieres estar seguro de que está ejecutando la versión experimental.

Find

Sintaxis

find ruta expresion

Determina los archivos que coinciden con una expresión a partir de las rutas y continua de forma recursiva. El comando find dispone de un amplio conjunto de directrices de expresión para localizar cualquier cosa en el
sistema de archivos.

Acontinuacion un ejemplo de una busqueda:

[root@restauracion kernels]# find /home/rino/scripts/ -name *sh*
/home/rino/scripts/testing/env.sh
/home/rino/scripts/educacionit/dialog2.sh
/home/rino/scripts/educacionit/dialog1.sh
/home/rino/scripts/educacionit/zip_unzip.sh
/home/rino/scripts/educacionit/signal.sh
/home/rino/scripts/educacionit/dialog.sh
/home/rino/scripts/ssh2
/home/rino/scripts/vpn.sh
/home/rino/scripts/irssi_notify.sh
/home/rino/scripts/url.sh
/home/rino/scripts/expect/ss.sh
/home/rino/scripts/expect/s.sh
/home/rino/scripts/expect/ssh1.sh
/home/rino/scripts/rino.sh
/home/rino/scripts/tunel.sh
/home/rino/scripts/tunel.sh.bkp
[root@restauracion kernels]#

Locate

Sintaxis
locate patron

Busqeuda de los archivos cuyos nombres coincidan con uno o más patrones mediante la búsqueda de un índice de archivos que hayan creado anteriormente con updatedb.

Buscar el patron sh:

[root@restauracion kernels]# locate csh
/bin/csh
/bin/tcsh
/etc/csh.cshrc
/etc/csh.login
/etc/profile.d/bug-buddy.csh
/etc/profile.d/c4eb-install.csh
/etc/profile.d/c4eb-paths.csh
/etc/profile.d/colorls.csh
/etc/profile.d/glib2.csh
/etc/profile.d/gnome-ssh-askpass.csh
/etc/profile.d/ipm-confidenti
...
..
..
lista larga..

El comando locate debe tener una reciente base de datos para la búsqueda, y la base de datos debe ser actualizada periódicamente para incorporar los cambios en el sistema de archivos. Si la base de datos está demasiado desactualizada podremos tener una advertencia.

# locate tcsh
locate: warning: database /var/lib/slocate/slocate.db' is more \
                                          than 8 days old

Updatedb

Sintaxis
updatedb [opciones]

Actualizar (o crear) la base de datos slocate en /var/lib/slocate/slocate.db.

Ejemplo de como actualizaria mi base.

[root@restauracion kernels]# updatedb -e "/dev /proc /home"

Hay parametros especiales en donde podemos hacer que realize la busquea por red tambien o que no busque en determinados filesystem.

[root@restauracion kernels]# cat /etc/updatedb.conf 
PRUNEFS = "auto afs gfs gfs2 iso9660 sfs udf"
PRUNEPATHS = "/afs /media /net /sfs /tmp /udev /var/spool/cups /var/spool/squid /var/tmp"
[root@restauracion kernels]#


Whereis

Sintaxis

whereis [options] nombre de archivo

whereis localiza source/binarios y manuales para los archivos especificados.

Un ejemplo:

[root@restauracion kernels]# whereis ls
ls: /bin/ls /usr/share/man/man1p/ls.1p.gz /usr/share/man/man1/ls.1.gz
[root@restauracion kernels]# 

Type

Sintaxis

type [options] nombre de archivo

Type no es realmente un programa independiente, sino una parte integrada de la shell bash. Type le dirá
como un nombre de archivo se interpretaría si se usa como un nombre de comando.

Ejemplo:

[root@restauracion kernels]# type ls
ls is aliased to `ls --color=tty'
[root@restauracion kernels]# 
[root@restauracion kernels]# type grep
grep is /bin/grep
[root@restauracion kernels]# 

Bueno esto fue todo 🙂

Configurando Kickstart con Ubuntu Parte I

Vamos a ver como configurar un servidor kickstart con ubuntu server 10.04
Link alternativo –> www.restauradordeleyes.com.ar/dokuwiki/doku.php/linux:redes:kickstart

Para eso antes tendremos que instalar estos paquetes:

openbsd-inetd
tftpd-hpa
apache2
dhcp3-server
unattended-upgrades

Agregamos esta linea a /etc/inetd.conf
tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot

Ahora vamos a configurar nuestro dhcp.
Hay que tener en cuenta varios aspectos en este archivo.
Voy a detallar cada uno delos parametros que hay que tener en cuenta..

option domain-name-servers
option routers

En mi caso esta todo en el mismo servidor.
log-facility
Tengo que configurar el rsyslog y crear el archivo para que empieze a escribir el log en donde le indique.
next-server
Le indico a donde va a buscar el tftp
Despues esta la seccion de la subred y la seccion donde le digo que asigne una ip fija buscando por mac y ahi es donde uso el parametro que indca en donde busca el archivo pxelinux.0


oot@hostname:/etc/init.d# cat /etc/dhcp3/dhcpd.conf
# global options
option domain-name-servers 192.186.2.87;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
#specify the TFTP server address
next-server 192.168.2.87;
# Subnet for workstations
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.150 192.168.2.200;
option broadcast-address 192.168.2.255;
option routers 192.168.2.87;
}

host web1 {
hardware ethernet 00:0C:29:DF:F0:C3;
option host-name "web1";
option routers 192.168.2.87;
option domain-name-servers 192.168.2.87;
fixed-address 192.168.2.10;
filename "/webserver/pxelinux.0";
}

host web2 {
hardware ethernet asdasd;
option host-name "web2";
fixed-address 172.16.31.11;
filename "/webserver/pxelinux.0";
}
root@hostname:/etc/init.d#


Configuramos el apache para que apunte a /var/www/ubuntu (es mi caso lo pueden dejar en /var/www )

Bueno hasta aca lo que hicimos fue :
* instalar paquetes
* configurar dhcpd
* Configurar apache
* Configurar /etc/inetd.conf

Los proximos pasos serian bajarse el iso de ubuntu-alternate y el ubuntu-server

Una vez que se bajen las imagenes vamos a proceder a montar esas imagenes para luego copiar el contenido adentro del directorio que creamos de para el apache y otros archivos.

Montamos:
root@hostname:/etc/init.d# mount -o loop /home/linux/ubuntu-10.04.1-alternate-i386.iso /mnt/
Copiamos el archivo ubuntu.seed 
root@hostname:/etc/init.d# cp /mnt/preseed/ubuntu.seed /var/www/ubuntu
Copiamos el contendio del cd :
root@hostname:/etc/init.d#mkdir /var/www/ubuntu/ubuntu
root@hostname:/etc/init.d#cp -av /mnt/* /var/www/ubuntu/ubuntu

Ahora vamos a configurar el TFTP

Vamos al directorio de trabajo del tftp:
root@hostname:/etc/init.d# cd /var/lib/tftpboot/
Creamos el directorio como lo declaramos en dhcp:
root@hostname:/etc/init.d# mkdir webserver
Copiamos los archivos necesarios para poder hacer que arranque por red :
root@hostname:/etc/init.d#cp -av /mnt/install/netboot/* .

Reiniciamos los servicios instalados y chequeamos que no se encuentren errores mirando los logs o el output del servicio.

Si todo salio bien veremos esta imagen cuando intentemos iniciar alguna pc por la red en donde muestra que el servidor dhcp que configuramos con ubuntu detecto la mac que le pusimos y esta intentando arrancar con la imagen de linux que tiene el pxe.

Una vez que nos respondio nuestro dhcp luego nos va a intentar responder nuestro tftp y va a cargar la imagen de arranque de linux que le configuramos.

Luego de que carga todo vamos a tener un menu, el menu depende de como lo configuremos ahora vamos a ver el menu nuestro:

Si llegaron hasta aca y pudieron hacer que una maquina arranque por red con el menu de instalacion tipico que usamos cuando instalamos ubuntu podemos seguir para configurar la instalacion de forma automatica dado que hasta aca nos quedo un servidor que permite hacer instalaciones remotas pero atendidas y la idea es utilizar kickstart para hacerlas desatentidas pero eso lo dejamos para la parte 2.

Fuentes:
http://observatorio.cnice.mec.es/modules.php?op=modload&name=News&file=article&sid=520
https://help.ubuntu.com/community/PXEInstallServer
http://flyingunix.blogspot.com/2010/08/automated-kickstart-install-of-ubuntu.html
http://terrarum.net/administration/automating-an-ubuntu-server-install.html