Git para Administradores
- Instalación de Moodle
- Inicio Rápido de Instalación
- Cron
- Nginx
- Apache
- Internet Information Services
- Instalar plugins
- Instalación FAQ
- Actualización
- Visión general de actualización
- Implementar actualizaciones automáticas
- Git para Administradores
- Administración por línea de comando
- Actualización FAQ
- Migración de Moodle
- Tamaño de archivo subido
- Crear archivo .htaccess
- Moodle en una netbook sin internet
Nota: Esta es una traducción de una página de la documentación en idioma Inglés (Docs), que se considera particularmente importante, y que en su versión original se actualiza frecuentemente. Por ello, se le recomienda que revise la página original en idioma inglés: Git for Administrators.
Esta página describe como mantener una copia de Moodle en un servidor de producción, que pueda ser actualizada fácilmente usando Git. Si hay personalizaciones del código del núcleo (core) de Moodle, se recomienda seguir las instrucciones de Guia de Git para desarrolladores (en inglés).
Para obtener el mayor provecho de Git, vale la pena el esfuerzo para entender sus conceptos básicos (ver también la sección inferior). Aunque la curva de aprendizaje puede ser difícil al principio, especialmente si estás acostumbrado a usar CVS o Subversion.
Obtención de Git (Windows, OSX, Linux y otros)
El soporte para Git estaba originalmente limitado a Linux, pero actualmente está disponible para los sistemas operativos más populares.
- Lista de descargas de Git - https://git-scm.com/download
Una vez hayas descargado e instalado la versión de Git para tu sistema operativo, las instrucciones (comandos) git de éste documento deberían de funcionar con tu sistema operativo.
Nombres de las ramas de Moodle
Nota: Desde 2022 se recomienda utilizar main en lugar de master para denominar la rama común de Git. Mas información (en inglés): [1] |
Las principales versiones de Moodle tienen cada una su propia rama en Git. Por ejemplo, MOODLE_38_STABLE (3.8), MOODLE_405_STABLE (4.5). El desarrollo generalmente se hace en la rama 'main'. Toda la vida de esa versión se conservará en esa rama. Cada versión de Moodle liberada es designada al añadir una etiqueta (tag), como por ejemplo v4.5.0-beta, v4.5.0-rc1, v4.5.0.
Desde la versión 4.0, los códigos de versión utilizan 3 dígitos: 400, 401, 402, ..., 405
Importante: Aun cuando el nombre de la rama incluya la palabra STABLE ('ESTABLE') en su nombre, esto no significa que el código en esa rama sea realmente estable. Poco tiempo después de que se haya creado la rama, contendrá versiones 'beta' y RC, o 'release candidate' (candidato-de versión), de la nueva versión de Moodle. Es importante revisar que el estado actual de la rama cumpla con tus necesidades. Generalmente, la forma más fácil es examinar los contenidos actuales del fichero version.php (sustituye la rama en esta URL para ver cualquier otra versión), https://github.com/moodle/moodle/blob/MOODLE_405_STABLE/version.php
NO USES versiones alfa, beta ni candidatos-de versión (alpha, beta, release-candidates o RC) ni tampoco código de la rama principal (main) para sitios en producción, ya que podrían tener problemas significativos en el código.
Obtención del código desde Git
Aquí se muestra el uso de Git a través de la línea de comando. Los clientes gráficos son poco menos que envoltorios alrededor de la versión para línea de comandos o CLI, por lo que deberías de poder deducir los parámetros correctos muy fácilmente.
Para inicializar un repositorio local, usa los siguientes comandos en el terminal de tu servidor:
$ cd /ruta/hacia/tu/servidor $ git clone https://github.com/moodle/moodle.git (1) $ cd moodle $ git branch -a (2) $ git branch --track MOODLE_405_STABLE origin/MOODLE_405_STABLE (3) $ git checkout MOODLE_405_STABLE (4)
- El comando (1) inicializa el nuevo repositorio local como una copia del repositorio remoto moodle.git desde GitHub. Se recomienda utilizar este repositorio de GitHub, ya que es el repositorio público de Moodle, y una copia espejo del utilizado en desarrollo. El repositorio remoto se llama por defecto origin. Este comando creará un nuevo directorio local llamado moodle, en donde se descargan todos los archivos. Esta operación puede tomar un tiempo, porque de hecho está obteniendo toda la historia completa de todas las versiones de Moodle.
- El comando (2) lista todas las ramas disponibles. Ahí se puede comprobar si la rama que queremos instalar en el repositorio local existe en el remoto de Moodle
- El comando (3) selecciona la rama local, en este caso MOODLE_405_STABLE, y la configura para que sincronice con la rama MOODLE_405_STABLE del repositorio remoto.
- El comando (4) cambia hacia la rama local recientemente creada. Al finalizar, se puede comprobar la versión utilizada en nuestro repositorio local abriendo el archivo version.php
Git tras un cortafuegos
Git utiliza un protocolo de sólo lectura que puede estar bloqueado por un cortafuegos (puerto 9418). Si esto es un problema, puedes utilizar la versión http de GitHub https://github.com/moodle/moodle.git. Utilizar http es algo más lento, pero es más seguro sobre todo si hay problemas de conectividad.
Actualizando la instalación a una versión menor
El equipo de desarrolladores de Moodle realiza la integración y prueba de problemas resueltos todos los lunes y martes. El miércoles, puedes instalar todos los parches para actualizar tu código. Revisa la bitácora shortlog para ver si el repositorio oficial ha sido actualizado o no.
Para actualizar el código a la versión más reciente (la rama MOODLE_405_STABLE) todo lo que tienes que hacer es:
$ cd /ruta/a/la/carpeta/de/moodle $ git pull
Nota: la ruta hacia moodle usualmente es /var/www/html o /var/www/html/moodle en servidores Linux |
Si es un sitio en producción, debes considerar las instrucciones acerca de la Actualización_de_moodle, y especialmente hacer una copia de seguridad previa a la actualización.
Actualizando tu instalación a una versión mayor
Cuando quieras actualizar a una versión mayor más reciente, necesitarás decirle a tu instalación que siga la versión más reciente en lugar de la versión que actualmente tiene instalada. Debes asegurarte que ha actualizado la instalación con la última versión menor de la versión de Moodle que tienes actualmente instalada (como se describe en la sección anterior). Esto también descargará los cambios para las nuevas versiones de Moodle (pero no hará uso de ellos).
Lo primero que debes hacer es poner el sitio en modo de mantenimiento, o desactivar el sitio web, antes de iniciar la actualización.
$ cd /ruta/a/la/carpeta/de/moodle # Comprueba la rama que sigues $ git branch -a # Crea una rama local para la nueva versión desde el repositorio remoto $ git branch --track MOODLE_405_STABLE origin/MOODLE_405_STABLE # Cambia el seguimiento de la rama $ git checkout MOODLE_405_STABLE
La carpeta de tu sitio contendrá ahora los archivos de la nueva versión de Moodle, pero para completar la actualización, necesitarás realizar la Actualización de Moodle via web o la Actualización de Moodle via CLI
Instalar una extensión de terceros desde su repositorio Git
Esta es una manera de añadir extensiones de terceros desde otros repositorios Git a tu repositorio Moodle. Otra forma sería también usar Submódulos Git. Sin embargo, esta es una de las características más complejas de Git y debería ser considerada como una opción avanzada.
Por ejemplo, queremos instalar el [módulo de Certificado personalizado] desde su repositorio Git en nuestro Moodle 4.5
$ cd /ruta/a/la/carpeta/de/moodle $ cd mod (1) $ git clone https://github.com/mdjnelson/moodle-mod_customcert.git customcert (2) $ cd customcert $ git checkout -b MOODLE_405_STABLE origin/MOODLE_405_STABLE (3) $ git branch -d main (4)
El comando (1) cambia el directorio actual al directorio mod de la instalación de Moodle. El comando (2) crea un nuevo directorio llamado customcert y realiza un clon local del repositorio del módulo Custom Certificate (Certificado personalizado). El comando (3) crea una rama local que seguirá la rama remota con la versión del módulo Custom Certificate para Moodle 4.5. El comando (4) elimina la rama main que fue creada automáticamente por git clone en (2) y no es necesaria en la instalación.
Nota: Debes comprobar primero la compatibilidad del módulo con tu versión de Moodle. Puedes hacerlo ejecutando el siguiente comando antes de ejecutar el comando (3), para verificar que está disponible entre las ramas:
$ git branch -a * MOODLE_405_STABLE master remotes/origin/HEAD -> origin/master remotes/origin/MOODLE_13_STABLE remotes/origin/MOODLE_14_STABLE remotes/origin/MOODLE_15_STABLE remotes/origin/MOODLE_16_STABLE remotes/origin/MOODLE_17_STABLE remotes/origin/MOODLE_18_STABLE remotes/origin/MOODLE_19_STABLE remotes/origin/MOODLE_20_STABLE remotes/origin/MOODLE_21_STABLE remotes/origin/MOODLE_22_STABLE remotes/origin/MOODLE_23_STABLE remotes/origin/MOODLE_24_STABLE remotes/origin/MOODLE_25_STABLE remotes/origin/MOODLE_26_STABLE remotes/origin/MOODLE_27_STABLE remotes/origin/MOODLE_28_STABLE remotes/origin/MOODLE_29_STABLE remotes/origin/MOODLE_30_STABLE remotes/origin/MOODLE_310_STABLE remotes/origin/MOODLE_311_STABLE remotes/origin/MOODLE_31_STABLE remotes/origin/MOODLE_32_STABLE remotes/origin/MOODLE_33_STABLE remotes/origin/MOODLE_34_STABLE remotes/origin/MOODLE_35_STABLE remotes/origin/MOODLE_36_STABLE remotes/origin/MOODLE_37_STABLE remotes/origin/MOODLE_38_STABLE remotes/origin/MOODLE_39_STABLE remotes/origin/MOODLE_400_STABLE remotes/origin/MOODLE_401_STABLE remotes/origin/MOODLE_402_STABLE remotes/origin/MOODLE_403_STABLE remotes/origin/MOODLE_403_STABLE remotes/origin/MOODLE_403_STABLE remotes/origin/MOODLE_404_STABLE remotes/origin/MOODLE_405_STABLE remotes/origin/master
Esto evitará un mensaje de error cuando ejecutes el comando (3) contra una rama no existente. Por ejemplo:
$ git checkout -b MOODLE_405_STABLE origin/MOODLE_405_STABLE fatal: git checkout: updating paths is incompatible with switching branches. Did you intend to checkout 'origin/MOODLE_405_STABLE' which can not be resolved as commit?
Nota: Para solucionar el error, usa "git fetch"
$ git fetch origin MOODLE_405_STABLE:LOCAL_MOODLE_405_STABLE
Es buena idea añadir el nuevo directorio mod/customcert/ a la lista de archivos ignorados situado en la carpeta raíz de Moodle, si no, aparecerá un aviso recordándote que hay nuevo código sin actualizar.
$ cd /ruta/hacia/tu/servidor $ echo /mod/customcert/ >> .git/info/exclude
Para actualizar ahora tu instalación Moodle, debes entrar a ambos repositorios y hacer "git pull" para actualizar.
$ cd /ruta/hacia/tu/servidor $ git pull $ cd mod/customcert $ git pull
Escribir un script del shell con estas líneas en el directorio raíz de tu instalación es una buena idea. Si no, es fácil de olvidar que repositorios están dentro del directorio de Moodle.
Instalando y manteniendo extensiones de terceros usando los submódulos de Git
Como se ha indicado anteriormente, este apartado es para usuarios avanzados.
Por tanto, es importante que tengas conocimientos previos de Git y de sus comandos. A continuación se indican los pasos a seguir. Es importante conocer lo que hacen los siguiientes comandos.
Las opciones avanzadas y los comandos pueden encontrarse en [Git book]. Si tienes dudas sobre los submódulos Git, visita este sitio primero.
Instalando una nueva extensión usando submódulos Git en un sitio Moodle ya existente
Como ejemplo, vamos a usar el Módulo customcert mostrado en la sección anterior.
$ cd /ruta/a/la/carpeta/de/moodle $ git submodule add https://github.com/mdjnelson/moodle-mod_customcert.git mod/customcert
Nota que Git está mostrando dos archivos nuevos en el repositorio:
$ git status On branch MOODLE_29_STABLE Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: .gitmodules new file: mod/customcert
El archivo .gitmodules contiene la ruta local y la URL de todos los submódulos.
Tiene que ser publicado (commited) si lo quieres clonar después (ver la página [2])
Antes de publicarlo, asegúrate de comprobar la configuración de los repositoris Git de las extensiones, ya que la configuración generada automáticamente puede no ser suficiente.
Ayudará en futuras actualizaciones a rastrear la rama remota, que corresponda con la versión de Moodle de tu repositorio.
$ cd mod/customcert $ git branch -avv * MOODLE_404_STABLE 7431bd6 [origin/MOODLE_404_STABLE] Bumped version remotes/origin/HEAD -> origin/MOODLE_404_STABLE remotes/origin/MOODLE_29_STABLE a98a860 Bumped version remotes/origin/MOODLE_30_STABLE a98a860 Bumped version remotes/origin/MOODLE_310_STABLE 3a47bf0 Bump version remotes/origin/MOODLE_311_STABLE 8c4f3a3 Improve SQL for displaying custom profile fields remotes/origin/MOODLE_31_STABLE 64a1842 #192 Fixed report fields for download remotes/origin/MOODLE_32_STABLE 6c21cd4 #192 Fixed report fields for download remotes/origin/MOODLE_33_STABLE 8598927 Bumped version remotes/origin/MOODLE_34_STABLE cc0d7c3 Add vertical spacing after certificate download button remotes/origin/MOODLE_35_STABLE e25ebd6 Fixed size of 'Changed' in CHANGES.md remotes/origin/MOODLE_36_STABLE be34b27 Fixed size of 'Changed' in CHANGES.md remotes/origin/MOODLE_37_STABLE 86322e0 Fix PHPDocs for the method get_course_field_value() remotes/origin/MOODLE_38_STABLE 1f63287 Bump version remotes/origin/MOODLE_39_STABLE 436ae10 Stop using deprecated pipe coreToLocaleString remotes/origin/MOODLE_400_STABLE 0212fa3 Use phpcbf to add trailing commas to multiple arrays remotes/origin/MOODLE_401_STABLE bd931f5 Bumped version remotes/origin/MOODLE_402_STABLE 27b64a3 Bumped version remotes/origin/MOODLE_403_STABLE 35b62d0 Bumped version remotes/origin/MOODLE_404_STABLE 7431bd6 Bumped version remotes/origin/develop bac2969 Make new setting description more detailed (#531)
Git creó la rama principal, en este caso develop que rastrea origin/develop automáticamente, porqué el repositorio remoto ha comprobado develop. Entonces, crea una nueva rama, que rastree la rama remota correspondiente. Obviamente, esto es posible siempre que el repositorio disponga de las ramas solicitadas.
$ git checkout -b MOODLE_405_STABLE origin/MOODLE_405_STABLE Branch MOODLE_405_STABLE set up to track remote branch MOODLE_405_STABLE from origin. Switched to a new branch 'MOODLE_405_STABLE' $ git branch -D develop Deleted branch develop (was 345f5b1).
No es necesario eliminar la rama develop, pero es innecesario mantenerla. De hecho, esta configración no necesita ser cambiada posteriomente.
El paso final es publicar los cambios en el repositorio principal.
$ cd /ruta/a/la/carpeta/de/moodle $ git commit -a -m "Instalada la nueva versión de mod_customcert"
Tienes que asegurarte que la publicación (commit) solo incluye del nuevo submódulo Git (ya que -a publica todos los cambios pendientes).
Manteniendo submódules Git
Mantener un grupo de submódulos Git es muy fácil.
Considera el repositorio Moodle con diferentes submódulos instalados. Ten en cuenta que la extensión mod_mylittleextension es una extensión falsa, creada para las pruebas de este ejemplo. Este no es un módulo oficial de Moodle. Para actualizar todos los submódulos a la vez, introduce:
$ cd cd /ruta/hacia/tu/servidor $ git submodule foreach git pull Entering 'block/coursefeedback' Already up-to-date. Entering 'mod/customcert' Already up-to-date. Entering 'mod/mylittleextension' remote: Counting objects: 6, done. remote: Compressing objects: 100% (4/4), done. remote: Total 4 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (4/4), done. From /local/repositories/mle 89d9eae..64c122d master -> origin/master Updating 89d9eae..64c122d Fast-forward index.html | 9 +++++++++ version.php | 6 +++--- 2 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 index.html $ git status # On branch MOODLE_405_STABLE # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: mod/mylittleextension (new commits) #
El comando git submodule foreach [otro comando] actúa sobre todos los repositorios de los submódulos y ejecuta lo indicado en [otro comando]. En este caso es git pull. Por tanto, el módulo mylittleextension se actualizó y el repositorio principal no se elimina más hasta que los cambios son publicados (commited):
$ git commit -a -m "Actualización de extensiones"
Mantener las extensiones con submódulos Git tiene también simplifica el proceso de actualización. A mayor escala, puede ser usado para mantener un proyecto Moodle, donde multiples desarrolladores necesitan tener una copia exacta de los módulos sin organizar las extensiones externas manualmente. Puedes leer más sobre este tema en [3].
Ver también
- Moodle Docs
- Instalación en Windows usando Git (en inglés)
- Git para Mac
- Versiones de Moodle
- Para solucionar un problema del tracker (MDL) / Hacer una bifurcación (fork) de Moodle / CONTRIButing al código ... [User:Sam_Hemelryk/My_Moodle_Git_workflow]
- Documentación Moodle antigua
- Para algunas capturas de pantalla User:Frank_Ralf/Git (still work in progress)
- Caso práctico Git + Moodle por la Technical University Berlin
- Discusiones del foro de Moodle (en inglés)
- Github and Moodle deployment for production
- GIT help needed
- Clear git guide for Admins (not developers)
- Enlaces externos
- Instalación de Git en diferentes sistemas operativos
- Git Pro - Libro con toda la información sobre Git
- Descargas de Git para diversos sistemas operativos
- Ayuda para novatos en Git
[[4]] [[5]] [for Administrators]