Instalación básica de GeoNode¶
Descripción general¶
Las siguientes son las formas más fáciles y recomendadas de implementar un servidor GeoNode de pila completa en su host.
Primer paso: Implementar GeoNode en un servidor local, ejecutándolo como servicio
http://localhost/.:guilabel:GeoServer también estará disponible enhttp://localhost/geoserver/Segundo paso: Implementar GeoNode en un servidor de producción, ejecutándose como servicio
https://my_geonode.geonode.org/.:guilabel:GeoServer también estará disponible enhttps://my_geonode.geonode.org/geoserver/Tercer paso: Personaliza .env para que se ajuste a tus necesidades
Cuarto paso: Asegure su implementación de producción;cambiar las contraseñas admin y las claves OAUth2
Más mejoras en la producción
Primer paso: implementar GeoNode en un servidor local¶
Configuración de Docker para Ubuntu (22.04)¶
# install OS level packages..
sudo add-apt-repository universe
sudo apt-get update -y
sudo apt-get install -y git-core git-buildpackage debhelper devscripts python3.10-dev python3.10-venv virtualenvwrapper
sudo apt-get install -y apt-transport-https ca-certificates curl lsb-release gnupg gnupg-agent software-properties-common vim
# add docker repo and packages...
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update -y
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose
sudo apt autoremove --purge
# add your user to the docker group...
sudo usermod -aG docker ${USER}
su ${USER}
Crea una instancia de tu geonode-proyecto¶
Digamos que su proyecto se llama my_geonode realice los siguientes pasos:
git clone https://github.com/GeoNode/geonode-project.git
# Checkout the desired branch. For example, 4.2.2 to generate a project for GeoNode 4.2.2
git checkout -b 4.2.2
# Ubuntu
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
mkvirtualenv --python=/usr/bin/python3 my_geonode
Alterantively you can also create the virtual env like below
python3.8 -m venv /home/geonode/dev/.venvs/my_geonode
source /home/geonode/dev/.venvs/my_geonode/bin/activate
pip install Django==3.2.13
# CentOS
virtualenv -p python3 my_geonode
source my_geonode/bin/activate
django-admin startproject --template=./geonode-project -e py,sh,md,rst,json,yml,ini,env,sample,properties -n monitoring-cron -n Dockerfile my_geonode
# If the previous command does not work for some reason, try the following one
python -m django startproject --template=./geonode-project -e py,sh,md,rst,json,yml,ini,env,sample,properties -n monitoring-cron -n Dockerfile my_geonode
Prepare el archivo .env¶
GeoNode utiliza un .env donde se deben configurar las variables de entorno requeridas por Docker y el propio GeoNode.Una forma sencilla de generar un .env básico es usar el comando de utilidad create-envfile.py.Si se ejecuta sin argumentos, generará un .env válido para una implementación local.
El comando acepta los siguientes argumentos:
–https: Habilitar SSL.Está deshabilitado por defecto.
- –env_type:
Cuando se establece en prod, DEBUG está deshabilitado y se solicita la creación de un SSL válido al servidor ACME de Letsencrypt.
Cuando se establece en «prueba», «DEBUG» está deshabilitado y se genera un certificado de prueba «SSL» para pruebas locales.
Cuando se establece en dev, DEBUG está habilitado y no se genera ningún certificado SSL
–hostname: La URL que servirá a GeoNode (localhost por defecto)
–email: El correo electrónico del administrador.Tenga en cuenta que se requiere un correo electrónico real y configuraciones SMPT válidas si –env_type está configurado en prod.Letsencrypt utiliza el correo electrónico para emitir el certificado SSL
–geonodepwd: contraseña de administrador de GeoNode.Se establece un valor aleatorio si se deja vacío
–geoservpwd: contraseña de administrador de GeoNode.Se establece un valor aleatorio si se deja vacío
–pgpwd: Contraseña de administrador de PostgreSQL.Se establece un valor aleatorio si se deja vacío
–dbpwd: contraseña del rol de usuario de GeoNode DB.Se establece un valor aleatorio si se deja vacío
–geodbpwd: Contraseña del rol de usuario de la base de datos de datos GeoNode.Se establece un valor aleatorio si se deja vacío
–clientid: ID del cliente GeoNode Oauth2 de Geoserver.Se establece un valor aleatorio si se deja vacío
–clientsecret: Secreto del cliente GeoNode Oauth2 de Geoserver.Se establece un valor aleatorio si se deja vacío
Construir y ejecutar¶
docker compose build
docker compose up -d
Puede seguir el inicio de los contenedores ejecutando los siguientes comandos desde la carpeta raíz
my_geonode:# GeoNode Container docker-compose logs -f django # GeoServer Container docker-compose logs -f geoserver # DB Container docker-compose logs -f db # NGINX Container docker-compose logs -f geonode
Si se produce algún error, intente detectar el seguimiento de pila del error ejecutando los siguientes comandos desde la carpeta raíz
my_geonode:# GeoNode “entrypoint.sh” Logs tail -F -n 300 invoke.log
Conéctese a http://localhost/¶
El inicio suele tardar algún tiempo, así que tenga paciencia…
Si todo va bien, deberías poder ver en los registros de inicio del geonode una línea similar a la siguiente:
<some date> [UWSGI] Uwsgi running...
Conéctese a http://localhost/
Las credenciales predeterminadas son:
GeoNode (http://localhost/) admin:
username: adminpassword: adminGeoServer (http://localhost/geoserver/) admin:
nombre de usuario: admincontraseña: geoserver
Segundo paso: implementar GeoNode en un servidor de producción¶
En el caso de que desee implementar en, digamos, https://my_geonode.geonode.org/, deberá cambiar .env de la siguiente manera:
DOCKER_ENV=production
SITEURL=https://my_geonode.geonode.org/
NGINX_BASE_URL=https://my_geonode.geonode.org/
ALLOWED_HOSTS=['django',]
GEOSERVER_WEB_UI_LOCATION=https://my_geonode.geonode.org/geoserver/
GEOSERVER_PUBLIC_LOCATION=https://my_geonode.geonode.org/geoserver/
HTTP_HOST=
HTTPS_HOST=my_geonode.geonode.org
HTTP_PORT=80
HTTPS_PORT=443
LETSENCRYPT_MODE=production # This will use Letsencrypt and the ACME server to generate valid SSL certificates
Estas variables son configuradas automáticamente por el script create-envfile.py si se utilizan las variables --https y --hostname.
Advertencia
Cuando LETSENCRYPT MODE está configurado en producción, se requiere un correo electrónico válido y un servidor SMTP de correo electrónico para que el sistema genere un certificado válido.
Reiniciar los contenedores¶
Siempre que cambie algo en el archivo .env, necesitará reconstruir el contenedor
Advertencia
Observe que el siguiente comando descarta cualquier cambio que haya realizado manualmente dentro de los contenedores, excepto los volúmenes estáticos.
docker-compose up -d
Solución de problemas¶
Si por alguna razón no puede acceder al servidor en el canal HTTPS, verifique los archivos de configuración NGINX a continuación:
Ingrese el contenedor NGINX
docker-compose exec geonode sh
Instalar un editor si no está presente
apk add nano
Verifique que el enlace
nginx.https.enabled.confse haya creado correctamentels -lah
Si la lista no coincide exactamente con la figura anterior, ejecute los siguientes comandos y verifique nuevamente
rm nginx.https.enabled.conf ln -s nginx.https.available.conf nginx.https.enabled.conf
Inspeccionar el contenido de
nginx.https.enabled.confnano nginx.https.enabled.confAsegúrese de que el contenido coincida con lo siguiente
Advertencia
Cambiar el Hostname en consecuencia. ¡Esto es sólo un ejemplo!
# NOTE : $VARIABLES are env variables replaced by entrypoint.sh using envsubst # not to be mistaken for nginx variables (also starting with $, but usually lowercase) # This file is to be included in the main nginx.conf configuration if HTTPS_HOST is set ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; # this is the actual HTTPS host server { listen 443 ssl; server_name my_geonode.geonode.org; keepalive_timeout 70; ssl_certificate /certificate_symlink/fullchain.pem; ssl_certificate_key /certificate_symlink/privkey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; include sites-enabled/*.conf; } # if we try to connect from http, we redirect to https server { listen 80; server_name my_geonode.geonode.org; # TODO : once geoserver supports relative urls, we should allow access though both HTTP and HTTPS at the same time and hence remove HTTP_HOST from this line # Except for let's encrypt challenge location /.well-known { alias /geonode-certificates/.well-known; include /etc/nginx/mime.types; } # Redirect to https location / { return 302 https://my_geonode.geonode.org/$request_uri; # TODO : we should use 301 (permanent redirect, but not practical for debug) } }
Advertencia
¡Guarde los cambios, si los hay, y salga!
Vuelva a cargar la configuración de NGINX
nginx -s reload 2020/06/24 10:00:11 [notice] 112#112: signal process started /etc/nginx# exit
Puede resultar útil desactivar https para aislar el origen de los errores.Después de revertir los cambios relacionados con HTTPS en el archivo .env, repita los pasos anteriores y asegúrese de que el enlace
nginx.http.enabled.confse haya creado correctamente.ln -s nginx.conf nginx.http.enabled.conf nano nginx.http.enabled.conf
Personalice .env para que se ajuste a sus necesidades¶
En el caso de que desee modificar el comportamiento del GeoNode, utilice siempre el archivo .env para actualizar settings.
Si necesita cambiar una configuración que no existe en .env, puede forzar los valores dentro de my_geonode/settings.py
Consulte la sección: configuración
Puede agregar aquí cualquier propiedad referida como
Env:PROPERTY_NAME
Reiniciar los contenedores¶
Siempre que cambie algo en el archivo .env, necesitará reconstruir los contenedores.
Advertencia
¡Tenga cuidado! El siguiente comando descarta cualquier cambio que haya realizado manualmente dentro de los contenedores, excepto los volúmenes estáticos.
docker-compose up -d django
[Opcional] Configure sus certificados SSL¶
En el modo de implementación de producción, GeoNode utiliza por defecto Let’s Encrypt certificados
Es posible que desee proporcionar sus propios certificados a GeoNode
docker exec -it nginx4my_geonode_geonode sh -c 'mkdir /geonode-certificates/my_geonode'
wget --no-check-certificate 'http://<url_to_your_chain.crt>' \
-O chain.crt
wget --no-check-certificate 'http://<url_to_your_key.key>' \
-O my_geonode.key
docker cp chain.crt nginx4my_geonode_geonode:/geonode-certificates/my_geonode
docker cp my_geonode.key nginx4my_geonode_geonode:/geonode-certificates/my_geonode
docker-compose exec geonode sh
apk add vim
vim nginx.https.enabled.conf
-ssl_certificate /certificate_symlink/fullchain.pem;
-ssl_certificate_key /certificate_symlink/privkey.pem;
+ssl_certificate /geonode-certificates/my_geonode/chain.crt;
+ssl_certificate_key /geonode-certificates/my_geonode/my_geonode.key;
nginx -s reload
exit