DjangoEnVpsMateria - ucseiw-team/catedra GitHub Wiki
Deploy de proyectos django en el vps
Cada grupo dispone de un usuario en el servidor provisto por la cátedra (credenciales de acceso enviadas por mail). Al tener un usuario, disponen también de una home
, es decir, de un directorio en el cual trabajar y almacenar sus datos.
Entornos virtuales
Para evitar conflictos de dependencias de python vamos a utilizar virtualenv. Cada grupo posee un virtualenv de python creado dentro de su home, en un directorio llamado env
. Cada vez que accedan al servidor es recomendable que activen el virtualenv y trabajen siempre con el mismo activado, lo que les permite instalar y desinstalar dependencias sin requerir ser superusuarios, ni interferir con las dependencias de los demás grupos.
Para activar el virtualenv, se debe ejecutar:
source path_al_virtualenv/bin/activate
Por ejemplo, si están posicionados en su home, ejecutarían:
source env/bin/activate
Deploy de proyecto
Para deployar el código del proyecto, simplemente clonen su proyecto dentro de algún directorio en sus homes, de la misma forma que lo harían en una máquina normal. Y a medida que vayan realizando cambios en sus pcs personales y pusheando los cambios a sus repos, pueden conectarse al servidor y hacer pull dentro del mismo para recibir los cambios desde el repo.
Es decir, el esquema es algo como esto:
- [solo 1 vez] clono el repositorio en el servidor
- [diariamente] trabajo en mi notebook o pc, y pusheo los cambios al repo de código
- [cuando quiero actualizar el servidor] me conecto al servidor, entro al directorio del repo, y pulleo los cambios del repositorio
NO trabajen editando y commiteando en el servidor, no es la forma correcta de hacerlo, y probablemente terminen generando problemas (conflictos en el repo por no pullear antes, olvidos de commitear lo que cambiaron en el servidor, etc.). Recuerden: se trabaja en sus máquinas personales, en el servidor solo se hacen pull.
Control del servidor
Cada grupo puede correr su proyecto en modo "produccion" dentro del servidor. Para ello, en su home disponen de un ejecutable llamado control
. Con el mismo puede iniciar el servidor web, detenerlo, o reiniciarlo. La forma de uso de este ejecutable es la siguiente:
(estando en la home)
./control PATH_AL_RAIZ_DEL_PROYECTO NOMBRE_PROYECTO ACCION
Donde:
PATH_AL_RAIZ_DEL_PROYECTO
es la ruta a donde se encuentra elmanage.py
, sin incluir ese archivo. Por ejemplo:repo/proyecto_noticias
.NOMBRE_PROYECTO
es el nombre del proyecto django, por ejemplo:proyecto_noticias
.ACCION
es lo que desean realizar con el servidor, y puede ser alguna de estas tres acciones:start
,stop
orestart
.
Un ejemplo completo de uso, en el que se reinicia un servidor:
./control repo/proyecto_noticias proyecto_noticias restart
Recuerden que cada vez que bajen cambios en el servidor, tienen que reiniciarlo para que esos cambios sean visibles.
Log de errores
Si por alguna razón el servidor tira errores antes de siquiera poder iniciar django, no van a ver la página de información de error de django (precisamente porque ni django llegó a iniciarse correctamente). En esos casos, probablemente el error quede logueado en un archivo llamado error.log
dentro del directorio del proyecto.