Configuración del entorno previo
Archery es una plataforma de gestión de SQL que requiere Python 3.7 o superior para su backend. Si tu sistema no incluye una versión adecuada, puedes compilarla desde el código fuente.
# 1. Instalar dependencias necesarias
sudo yum install -y openssl-devel bzip2-devel expat-devel gdbm-devel \
readline-devel sqlite-devel zlib-devel libffi-devel
# 2. Descargar código fuente de Python
wget https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tar.xz
# 3. Extraer y cambiar al directorio
tar -xvf Python-3.7.12.tar.xz
cd Python-3.7.12
# 4. Compilar e instalar en ruta personalizada
./configure --enable-optimizations --prefix=/opt/python37
make -j $(nproc)
sudo make altinstall
# 5. Crear enlaces simbólicos (opcional)
sudo ln -sf /opt/python37/bin/python3.7 /usr/local/bin/python3
sudo ln -sf /opt/python37/bin/pip3.7 /usr/local/bin/pip3
Configuración de Docker y Docker Compose
Eliminación de versiones anteriores
# Desinstalar paquetes obsoletos de Docker
sudo yum remove -y docker docker-client docker-client-latest \
docker-common docker-latest docker-latest-logrotate \
docker-logrotate docker-engine docker-selinux docker-engine-selinux
Configuración del repositorio y la instalación
# Añadir repositorio oficial de Docker CE
sudo yum-config-manager --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# Opcional: configurar mirror para descargas más rápidas
sudo sed -i 's|download.docker.com|mirrors.aliyun.com/docker-ce|g' \
/etc/yum.repos.d/docker-ce.repo
# Instalar Docker CE y componentes
sudo yum install -y docker-ce docker-ce-cli containerd.io
Optimización del daemon de Docker
# Crear directorio de configuración
sudo mkdir -p /etc/docker
# Configurar mirrors para acelerar descargas de imágenes
sudo tee /etc/docker/daemon.json <<'EOF'
{
"registry-mirrors": ["https://your-mirror-address.mirror.aliyuncs.com"]
}
EOF
# Reiniciar el servicio Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker
Instalaicón de Docker Compose
# Descargar binario de Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.17.3/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
# Aplicar permisos de ejecución
sudo chmod +x /usr/local/bin/docker-compose
# Verificar instalación
docker-compose --version
Despliegue de Archery
Preparación del proyecto
# Descargar el código fuente de Archery desde GitHub
wget https://github.com/hhyo/Archery/archive/refs/tags/v1.8.2.tar.gz
tar -xzf v1.8.2.tar.gz
cd Archery-1.8.2/src/docker-compose/
Inicio de los contenedores
# Iniciar servicios con Docker Compose en segundo plano
sudo docker-compose -f docker-compose.yml up -d
# Verificar el estado de los contenedores
sudo docker-compose ps
Inicialización de la base de datos
# Acceder al contenedor principal de Archery
sudo docker exec -it archery /bin/bash
# Dentro del contenedor: activar entorno virtual
cd /opt/archery
source /opt/venv4archery/bin/activate
# Crear y aplicar migraciones
python3 manage.py makemigrations sql
python3 manage.py migrate
# Cargar datos iniciales
python3 manage.py dbshell < sql/fixtures/auth_group.sql
python3 manage.py dbshell < src/init_sql/mysql_slow_query_review.sql
Creación de usuario administrador
# Crear superusuario para el panel de administración
python3 manage.py createsuperuser
# Salir del contenedor
exit
Verificación del despliegue
# Reiniciar el servicio para aplicar cambios
sudo docker restart archery
# Comprobar logs para detectar errores
sudo docker logs archery --tail 20
# Acceder a la interfaz web (por defecto en puerto 9123)
# URL: http://<tu-servidor>:9123/
Comandos de admiinstración comunes
Gestión de servicios
# Detener todos los contenedores
sudo docker-compose -f docker-compose.yml down
# Iniciar contenedores nuevamente
sudo docker-compose -f docker-compose.yml up -d
# Ver logs de un servicio específico
sudo docker-compose logs -f archery
# Acceso a la base de datos MySQL
sudo docker exec -it archery_db mysql -u root -p
Configuración de base de datos externa
Si prefieres usar un servidor MySQL existente en lugar del conteneder incluido:
# Ejecutar contenedor MySQL independiente
sudo docker run -d --name external_mysql -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=SecurePass123! \
-e MYSQL_DATABASE=archery_db \
-v /data/mysql:/var/lib/mysql \
mysql:5.7
# Modificar configuración de conexión en Archery
sudo docker exec -it archery bash
vi /opt/archery/src/docker-compose/archery/settings.py
# Actualizar HOST a la IP del servidor MySQL
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '192.168.1.100', # IP del servidor externo
...
}
}