Ingresar  \/ 
x
 Use Facebook account  Use Google account  Use Microsoft account  Use LinkedIn account
o
Registrarse  \/ 
x
 Use Facebook account  Use Google account  Use Microsoft account  Use LinkedIn account
o

  • Fututel
  • Blog
  • Pasar al Servidor Linux (Parte 3) - Pasos Finales

Pasar al Servidor Linux (Parte 3) - Pasos Finales

                              Pasar al Servidor Linux Pasos Finales

Introducción


Existen muchos escenarios donde es posible que tenga que mover los datos y los requisitos operativos de un servidor a otro. Es posible que deba implementar sus soluciones en un nuevo centro de datos, actualizar a una computadora más grande o realizar la transición a un nuevo hardware a un nuevo proveedor de servidor.

Sean cuales sean sus razones, hay muchas consideraciones diferentes que debe hacer al pasar de un sistema a otro. Conseguir configuraciones funcionalmente equivalentes puede ser difícil si no está operando con una solución de administración de configuración como Chef, Puppet o Ansible. No sólo debe transferir datos, sino también configurar sus servicios para que operen de la misma manera en una computadora nueva.

En nuestro último tutorial, hablamos sobre la transferencia de datos con rsync y migrar su base de datos . Continuaremos con la migración en este tetorial migrando usuarios, grupos, correo, crontabs y otras configuraciones.

Migrar Usuarios y Grupos


Aunque su principal preocupación puede ser por sus servicios y programas, tenemos que prestar atención a los usuarios y grupos también.

La mayoría de los servicios que necesitan usuarios específicos pueden creará estos usuarios y grupos en la instalación. Sin embargo, esto todavía deja a los usuarios y grupos que se han creado manualmente a través de otros métodos.

Afortunadamente, toda la información para usuarios y grupos está contenida en unos pocos archivos. Los archivos principales que necesitamos mirar son:

  • / Etc / passwd : Este archivo define nuestros usuarios y atributos básicos. A pesar de su nombre, este archivo ya no contiene ninguna información de contraseña. En su lugar, se centra en nombre de usuario, usuario y números de grupo principal, directorios de inicio y shells predeterminados.

  • / Etc / shadow : Este archivo contiene la información real sobre las contraseñas de cada usuario. Debe contener una línea para cada uno de los usuarios definidos en el archivo passwd, junto con un hash de su contraseña y alguna información sobre las políticas de contraseñas.

  • / Etc / group : Este archivo define cada grupo disponible en su sistema. Básicamente, esto sólo contiene el nombre del grupo y el número de grupo asociado, junto con los nombres de usuario que usan esto como un grupo suplementario.

  • / Etc / gshadow : Este archivo contiene una línea para cada grupo en el sistema. Básicamente lista el grupo, una contraseña que puede ser utilizada por miembros que no son del grupo para acceder al grupo, una lista de administradores y no administradores.

Si bien puede parecer una buena idea simplemente copiar estos archivos directamente desde el sistema de origen en el nuevo sistema, esto puede causar complicaciones y no se recomienda.

Uno de los principales problemas que pueden surgir es el grupo en conflicto y los números de identificación del usuario. Si el software que crea sus propios usuarios y grupos se instala en un orden diferente entre los sistemas, los números de usuario y de grupo pueden ser diferentes, causando conflictos.

En su lugar es mejor dejar la mayoría de estos archivos solos y sólo ajustar los valores que necesitamos. Podemos hacer esto de varias maneras.

Creación de Archivos de Migración


Independientemente del método que desee utilizar para añadir usuarios a nuestro nuevo sistema, debemos generar una lista de usuarios, grupos, etc. que se deben transferir y agregar.

Un método que ha estado flotando en Internet por un tiempo se menciona a continuación:

Crearemos un archivo asociado con cada uno de los archivos anteriores que debemos modificar. Contendrán toda la información de transferencia apropiada.

En primer lugar, averiguar cuál es el límite de ID entre usuarios regulares y del sistema en su computadora. Esto es típicamente 500 o 1000 dependiendo de su sistema. Si tiene un usuario normal, una manera fácil de averiguar es inspeccionar el /etc/passwd y ver dónde comienzan las cuentas de usuario regulares:

less /etc/passwd

Posteriormente, podemos usar este número (el primer número de ID de usuario regular, en la tercera columna) para establecer el límite en nuestro comando. No vamos a exportar usuarios o grupos por debajo de este límite. También se excluirá la cuenta "nobody" a la que se le da el identificador de usuario "65534".

Podemos crear un archivo de sincronización para nuestro archivo /etc/passwd escribiendo esto. Sustituya el número de límite # por el número de usuario regular más bajo que haya encontrado en el /etc/passwd :

awk -v LIMIT=limit# -F: '($3>=LIMIT) && ($3!=65534)' /etc/passwd > /root/passwd.sync

Después, podemos hacer lo mismo para crear un archivo de sincronización de grupo:

awk -v LIMIT=limit# -F: '($3>=LIMIT) && ($3!=65534)' /etc/group > /root/group.sync

Podemos usar los nombres de usuario dentro del rango que nos interesa desde nuestro /etc/passwd para obtener los valores que queremos de nuestro archivo de sombra:

awk -v LIMIT=limit# -F: '($3>=LIMIT) && ($3!=35534) {print $1}' /etc/passwd | tee - | egrep -f - /etc/shadow > /root/shadow.sync

Para el /etc/gshadow , haremos una operación similar:

awk -v LIMIT=limit# -F: '($3>=LIMIT) && ($3!=65534) {print $1}' /etc/group | tee - | egrep -f - /etc/gshadow > /root/gshadow.sync

Una vez que conozcamos los comandos que queremos ejecutar, podemos agregarlos a nuestro script después de un comando SSH regular y luego rsync ellos, así:

ssh 111.222.333.444 "awk -v LIMIT=limit# -F: '($3>=LIMIT) && ($3!=65534)' /etc/passwd > /root/passwd.sync"
ssh 111.222.333.444 "awk -v LIMIT=limit# -F: '($3>=LIMIT) && ($3!=65534)' /etc/group > /root/group.sync"
ssh 111.222.333.444 "awk -v LIMIT=limit# -F: '($3>=LIMIT) && ($3!=35534) {print $1}' /etc/passwd | tee - | egrep -f - /etc/shadow > /root/shadow.sync"
ssh 111.222.333.444 "awk -v LIMIT=limit# -F: '($3>=LIMIT) && ($3!=65534) {print $1}' /etc/group | tee - | egrep -f - /etc/gshadow > /root/gshadow.sync"
rsync 111.222.333.444:/root/passwd.sync /root/
rsync 111.222.333.444:/root/group.sync /root/
rsync 111.222.333.444:/root/shadow.sync /root/
rsync 111.222.333.444:/root/gshadow.sync /root/

Agregar Usuarios Manualmente


Si queremos simplemente agregar un comentario a nuestro archivo de script y hacerlo manualmente, se recomiendan los comandos vipw y vigr , porque bloquean los archivos mientras se edita y protegen contra la corrupción. Puede editar los archivos manualmente escribiendo:

vipw

Pasar el indicador -s modifica el fichero shadow asociado y pasar el indicador -g edita el fichero de grupo.

Usted puede ser tentado a añadir las líneas de los archivos directamente en el final del archivo asociado en el nuevo sistema como este:

cat /root/passwd.sync >> /etc/passwd

Si decide ir a esta ruta, debe tener en cuenta que puede haber conflictos de ID si el ID ya lo ha tomado otro usuario en el nuevo sistema.

También puede agregar cada nombre de usuario utilizando las herramientas disponibles en el sistema después de obtener una lista del equipo de origen. El comando useradd puede permitirle crear rápidamente cuentas de usuario para que coincidan con el equipo de origen:

useradd -s /path/to/shell -m -d /home/username -p password -G supplementary_groups 

Puede utilizar los archivos *.sync como referencia y agregarlos de esta manera.

Agregar Usuarios Automáticamente


Si en cambio queremos guiar las adiciones de usuarios y grupos dentro de nuestro archivo, también podemos hacerlo fácilmente. Sin embargo, queremos comentar esto después de la primera ejecución exitosa, porque el script intentará crear usuarios / grupos varias veces de lo contrario.

Hay un comando llamado newusers que puede agregar usuarios a granel de un archivo. Esto es perfecto para nosotros, pero queremos modificar nuestros archivos primero para eliminar los ID de usuario y de grupo. El comando generará los siguientes usuarios y grupos disponibles para el nuevo sistema.

Podemos quitar el grupo y los ID de usuario del archivo passwd como esto:

awk 'BEGIN { OFS=FS=":"; } {$3=""; $4=""; } { print; }' /root/passwd.sync > /root/passwd.sync.mod

Podemos aplicar este nuevo archivo modificado como este:

newusers /root/passwd.sync.mod

Esto agregará todos los usuarios del archivo al archivo local /etc/passwd . También creará automáticamente el grupo de usuarios asociado. Tendrá que agregar manualmente grupos adicionales que no estén asociados con un usuario al /etc/group . Utilice sus archivos de migración para editar los archivos apropiados.

Para el /etc/shadow , puede copiar la segunda columna del archivo shadow.sync en la segunda columna de la cuenta asociada en el nuevo sistema. Esto transferirá las contraseñas de sus cuentas al nuevo sistema.

Puede intentar realizar una secuencia de comandos de estos cambios, pero este puede ser un caso en el que es más fácil hacerlo a mano. Recuerde comentar cualquier línea de usuario o grupo después de configurar los usuarios y grupos.

Transferencia de Correo y Trabajos a un Nuevo Sistema


Ahora que los usuarios se transfieren desde el sistema anterior y tienen los directorios de inicio del usuario llenos por los comandos rsync que se han ejecutado, también puede migrar el correo de cada usuario. Queremos replicar los trabajos cron también.

Podemos empezar haciendo otro comando rsync para el directorio spool. En el directorio de spool de nuestro sistema de origen, normalmente podemos ver algunos archivos importantes:

ls /var/spool

anacron   cron   mail   plymouth   rsyslog

Queremos transferir el directorio de correo a nuestro servidor de destino, por lo que podemos agregar una línea rsync que se vea así a nuestro script de migración:

rsync -avz --progress 111.222.333.444:/var/spool/mail/* /var/spool/mail/

Otro directorio dentro del directorio /var/spool que queremos prestar atención es el directorio cron . Este directorio mantiene cron y en los trabajos, que se utilizan para la programación. El directorio crontabs contiene el crontab del usuario individual se utiliza para programar trabajos.

Queremos preservar las tareas automatizadas que nuestros usuarios han asignado. Podemos hacer esto con otro comando rsync:

rsync -avz --progress 111.222.333.444:/var/spool/cron/crontabs/* /var/spool/cron/crontabs/*

Esto obtendrá crontabs de usuario individual en nuestro nuevo sistema. Sin embargo, hay otros crontabs que necesitamos mover. Dentro del directorio /etc , hay un crontab y un número de otros directorios que contienen cron info.

ls /etc | grep cron

anacrontab
cron.d
cron.daily
cron.hourly
cron.monthly
crontab
cron.weekly

El archivo crontab contiene detalles de cron en todo el sistema. Los otros elementos son directorios que contienen otra información de cron. Mire en ellos y decida si contienen cualquier información que usted necesita.

Una vez más, utilice rsync para transferir la información cron relevante al nuevo sistema.

rsync -avz --progress 111.222.333.444:/etc/crontab /etc/crontab

Una vez que tenga su información cron en su nuevo sistema, debe verificar que funciona. Este es un paso manual, por lo que tendrá que hacer esto al final.

La única manera de hacerlo correctamente es iniciar sesión como cada usuario individual y ejecutar los comandos en la crontab de cada usuario manualmente. Esto se asegurará de que no hay problemas de permisos o rutas de archivo que faltan que impiden que estos comandos silenciosamente fallan cuando se ejecuta automáticamente.

Servicios de Reinicio


Al final de la secuencia de comandos de migración, debe asegurarse de que todos los servicios apropiados se reinician, se vuelven a cargar, se enjuagan, etc. Debe hacer esto utilizando los mecanismos apropiados para el sistema operativo que está utilizando.

Por ejemplo, si estamos migrando un paquete LAMP en Ubuntu, podemos reiniciar los procesos importantes escribiendo:

service mysql restart
service apache2 restart
service php5-fpm restart

Puede agregarlos al final de su script de migración tal como está, y deben funcionar como se esperaba.

Sitios y Servicios de Prueba


Una vez que haya terminado el script de migración y lo haya ejecutado con todas las sincronizaciones y modificaciones, además de haber realizado todos los pasos manuales necesarios, debe probar el nuevo sistema.

Hay bastantes áreas que usted querrá comprobar. Preste atención a cualquier archivo de registro asociado mientras prueba para ver si aparecen problemas.

En primer lugar, desee probar los tamaños de directorio después de que haya transferido. Por ejemplo, si tiene una partición de /data que ha sincronizado, deseará ir a ese directorio tanto en los equipos de origen como de destino y ejecutar el comando du :

cd /data
du -hs

471M    .

Compruebe que los tamaños están cerca de la misma. Puede haber pequeñas diferencias entre el original y el nuevo sistema, pero deben estar cerca. Si hay una gran disparidad, debe investigar por qué.

A continuación, puede comprobar los procesos que se ejecutan en cada servidor. Puede hacerlo buscando información importante en la salida ps :

ps auxw

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  27024  2844 ?        Ss   Feb26   0:00 /sbin/init
root         2  0.0  0.0      0     0 ?        S    Feb26   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Feb26   0:00 [ksoftirqd/0]
root         4  0.0  0.0      0     0 ?        S    Feb26   0:00 [kworker/0:0]
root         5  0.0  0.0      0     0 ?        S<   Feb26   0:00 [kworker/0:0H]
. . .

También puede replicar algunas de las comprobaciones que hizo inicialmente en su computadora de origen para ver si ha emulado el entorno en la nueva computadora:

netstat -nlp

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1564/dnsmasq    
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      2886/cupsd      
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      752/smbd        
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      752/
. . .

Una vez más, otra opción es:

lsof -nPi

COMMAND     PID        USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
smbd        752        root   26u  IPv6    9705      0t0  TCP *:445 (LISTEN)
smbd        752        root   27u  IPv6    9706      0t0  TCP *:139 (LISTEN)
smbd        752        root   28u  IPv4    9707      0t0  TCP *:445 (LISTEN)
smbd        752        root   29u  IPv4    9708      0t0  TCP *:139 (LISTEN)
. . .

Debería revisar las versiones de sus servicios importantes, como lo hicimos en el primer artículo, para verificar si coincidía con la versión de paquetes importantes. La forma de hacerlo dependerá del sistema.

Si transfirió un servidor web o un paquete LAMP, debería probar definitivamente sus sitios en el nuevo servidor.

Puede hacerlo fácilmente modificando su archivo hosts (en su computadora local) para apuntar a su nuevo servidor en lugar del antiguo. A continuación, puede comprobar si su servidor acepta correctamente las solicitudes y si todos los componentes funcionan de forma correcta.

La forma en que modifica el archivo de los local hosts varía en función del sistema operativo que esté utilizando. Si está utilizando un sistema operativo con diseño basado en * nix, como OS X o Linux, puede modificar el archivo hosts en su sistema local de la siguiente manera:

sudo nano /etc/hosts

En el interior, es necesario agregar una entrada para señalar su nombre de dominio a la dirección IP de su nuevo servidor, para que el equipo intercepte la solicitud y lo enruta a la nueva ubicación para la prueba.

Las líneas que puede agregar pueden verse algo como esto:

111.222.333.444     www.domain.com
111.222.333.444     domain.com 

Agregue también cualquier subdominio que se utilice en la configuración de su sitio (images.domain.com, files.domain.com, etc.). Una vez que haya agregado las líneas de host, guarde y cierre el archivo.

Si está en OS X, tendrá que vaciar el archivo hosts de su computadora para ver el nuevo contenido:

sudo lookupd -flushcache

En Linux, esto debería funcionar automáticamente.

En Windows, tendrá que editar el archivo C:\Windows\Wystem32\Drivers\etc\hosts como administrador. Agregue las líneas de la misma manera que hicimos anteriormente para las versiones * nix.

Después de que su archivo de hosts se edite en su estación de trabajo local, debería poder acceder al servidor de prueba dirigiéndose a su nombre de dominio. Pruebe todo lo que pueda y asegúrese de que todos los componentes puedan comunicarse entre sí y responder de la manera correcta.

Una vez que haya completado la prueba, recuerde volver a abrir el archivo hosts y eliminar las líneas que agregó.

Migrar Reglas de Firewall


Recuerde que necesita migrar sus reglas de Firewall a su nuevo servidor. Para aprender a hacer esto, siga este tutorial: migrar reglas de Firewall de Iptables a un servidor nuevo .

Tenga en cuenta que, antes de cargar las reglas en su nuevo servidor, tendrá que revisarlas para cualquier cosa que deba actualizarse, como direcciones IP modificadas o rangos.

Cambiar la Configuración de DNS


Cuando hayas probado a fondo tu nuevo servidor, mira a través de tu script de migración y asegúrate de que ninguna parte del mismo va a revertir las modificaciones que hayas hecho.

Después, ejecute el script una vez más para obtener los datos más recientes de su servidor de origen.

Una vez que tenga todos los datos más recientes en su servidor de destino, puede modificar los servidores DNS de su dominio para que apunten a su nuevo servidor. Asegúrese de que cada referencia a la IP del servidor antiguo se reemplaza con la información del nuevo servidor.

 

Los servidores DNS tardarán algún tiempo en actualizarse. Después de que todos los servidores DNS hayan recibido sus nuevos cambios, es posible que deba ejecutar el script de migración una última vez para asegurarse de que se transfieran las solicitudes extravagantes que todavía estaban en su servidor original.

Mire atentamente sus comandos de MySQL para asegurarse de que no está tirando o sobrescribiendo datos que se han escrito en los servidores antiguos o nuevos.

Conclusión


Si todo ha ido bien, su nuevo servidor ahora debe estar en funcionamiento, aceptando solicitudes y manejando todos los datos que estaban en su servidor anterior. Usted debe seguir vigilando de cerca la situación y estar pendiente sobre cualquier anomalía que pueda surgir.

Las migraciones, cuando se hace correctamente, no son triviales, y muchos problemas pueden surgir. La mejor oportunidad de migrar con éxito un servidor en vivo es entender su sistema lo mejor que pueda antes de comenzar. Cada sistema es diferente y cada vez, usted tendrá que trabajar alrededor de nuevas ediciones. No intente migrar si no tiene tiempo para solucionar problemas que puedan surgir.

Fuente. Artículo traducido y con muy ligeras modificaciones de: https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-debian

Sobre el Autor
Pipe Peña
Author: Pipe Peña
Soy un loco enamorado de la vida. Licenciado en Ciencias Sociales y Humanas, amante de la tecnología e informática y la astrofísica. Me gusta crear e investigar proyectos que enriquezcan la construcción y desarrollo del conocimiento individual y colectivo. Me encantan los videojuegos, el cine, la química, matemáticas, la física cuántica y la música, en donde actualmente soy compositor. Me baso en la idea que toma Baruch Spinoza sobre Dios.

ImprimirCorreo electrónico

Donaciones - Tutoriales y VideoTutoriales Fututel

Dona si crees que lo merecemos. Ésto nos ayudará para seguir publicando y hacerte la vida más fácil :)

Cantidad: