Migración de su proyecto entre servidores
En esta sección se presentará como migrar un proyecto de un servidor a otro.
Tener en cuenta
-
En el servidor se tiene que revisar que puertos y nombres del contenedor esta disponible para evitar conflictos.
-
Tener un backup de sus datos.
Pasar datos dentro de un servidor a otro
Con los siguientes comandos traslada sus datos al otro servidor.
# Copia los certificados del proyecto
rsync -avzh /root/certs {ip del servidor a migrar}:/root/
# Copia el el datos del proxy del proyecto al servidor
rsync -avzh /root/proxy {ip del servidor a migrar}:/root/
# Copia todo el proyecto al root del servidor
rsync -avzh -q /root/ {ip del servidor a migrar}:/root/
# Copia los volumenes de la base de datos
rsync -avzh -q /var/lib/docker/volumes/ {ip del servidor a migrar}:/var/lib/docker/volumes/
Una vez se haya terminado la transferencia de datos, tiene que dirigrse dentro de cd /var/lib/docker/volumes/
, acá se encontrará las carpetas de mysql y redis.
Se tiene que cambiar los nombre de la carepta respecto a lo que se ha elegido previamente. Con estos comandos se puede cambiar los nombres de la carpeta.
#Se esta usando nombres de ejemplos
# |nombre de carpeta actual | nombre de carpeta modificada |
mv pro6.buho.xyz_mysqldata1 pro6.buho.xyz_mysqldata2
Configurar archivos
Antes de levantar el proyecto, se tiene que configurar algunos archivos.
Editar el archivo de docker-compose
En este ejemplo se tomará como ejemplo que la carpeta tenga el nombre de pro6.buho.xyz.
version: '3'
services:
nginx{numero nuevo}:
image: rash07/nginx
container_name: nginx_pro6_buho_xyz
working_dir: /var/www/html
environment:
VIRTUAL_HOST: pro6.buho.xyz, *.pro6.buho.xyz
volumes:
- ./:/var/www/html
- /root/proxy/fpms/pro6.buho.xyz:/etc/nginx/sites-available
restart: always
fpm{numero nuevo}:
image: rash07/php-fpm:2.0
container_name: fpm_pro6_buho_xyz
working_dir: /var/www/html
volumes:
- ./ssh:/root/.ssh
- ./ssh:/var/www/.ssh
- ./:/var/www/html
restart: always
mariadb{numero nuevo}:
image: mariadb:10.5.6
container_name: mariadb_pro6_buho_xyz
environment:
- MYSQL_USER=\${MYSQL_USER}
- MYSQL_PASSWORD=\${MYSQL_PASSWORD}
- MYSQL_DATABASE=\${MYSQL_DATABASE}
- MYSQL_ROOT_PASSWORD=\${MYSQL_ROOT_PASSWORD}
- MYSQL_PORT_HOST=\${MYSQL_PORT_HOST}
volumes:
- mysqldata{numero nuevo}:/var/lib/mysql
ports:
- "\${MYSQL_PORT_HOST}:3306"
restart: always
redis{numero nuevo}:
image: redis:alpine
container_name: redis_pro6_buho_xyz
volumes:
- redisdata{numero nuevo}:/data
restart: always
scheduling{numero nuevo}:
image: rash07/scheduling
container_name: scheduling_pro6_buho_xyz
working_dir: /var/www/html
volumes:
- ./:/var/www/html
restart: always
supervisor{numero nuevo}:
image: rash07/php7.4-supervisor
container_name: supervisor_pro6_buho_xyz
working_dir: /var/www/html
volumes:
- ./:/var/www/html
- ./supervisor.conf:/etc/supervisor/conf.d/supervisor.conf
restart: always
networks:
default:
external:
name: proxynet
volumes:
redisdata{numero nuevo}:
driver: "local"
mysqldata{numero nuevo}:
driver: "local"
- En el ejemplo de arriba, el texto de "{numero nuevo}", se tiene que cambiar a un nombre disponible (por ejemplo nginx12) que se encunetra dentro de tu servidor. Puedes nombrar los contenedores con
docker ps
.
Cambiar el puerto de FPM dentro del proxy
Tienes que dirigir a cd ~/proxy/fpms/{nombre de tu proyecto}/
, se verá el archivo default, ingresa con nano default
.
server {
listen 80 default_server;
root /var/www/html/public;
index index.html index.htm index.php;
server_name *._;
charset utf-8;
server_tokens off;
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
log_not_found off;
access_log off;
}
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass fpm{numero nuevo}:9000;
fastcgi_read_timeout 3600;
}
error_page 404 /index.php;
location ~ /\.ht {
deny all;
}
}
- En la fastcgi_pass se tiene que cambiar con el nombre que se puso para el fpm dentro del docker-compose.
Cambiar el host de la base de datos en el .env
DB_HOST={nombre del contenedor de la base dedatos}
- En DB_HOST se tiene que colocar el nombre de la base de datos que lo colocaste en el docker-compose.yml.
Después de ello, tiene que buscar lo siguiente
MYSQL_PORT_HOST={puerto libre de tu vps}
- Aquí debes colocar un puerto libre de tu sistema para que la base de datos funcione.
Posibles errores
Identificar posibles errores
Para poder ver si hay errores dentro de los contenedores, primero visualizalos con docker ps
Si encuentras que dentro del rseultado, en uno de los contenedores dentro de us categoría STATUS no aparece levntando (UP), entonces en ese contenedor hubo un error.
Para poder mostrar los logs del contenedor, puede usar el siguiente comando
docker logs --tail 20 {contenedor}
Gracias a esto podemos revisar sus registros e identificar sus posibles errores.