lucene 7.7.1 compiled but not compatible with ldt indexation
authorymh <ymh.work@gmail.com>
Tue, 23 Jul 2024 23:18:21 +0200
changeset 129 f6b392c37e10
parent 128 6ec3049096dd
child 130 5eeebcbdee22
lucene 7.7.1 compiled but not compatible with ldt indexation
.env.tmpl
.hgignore
docker-compose.yaml
docker/server/config.py
docker/server/entrypoint.sh
docker/server/requirements.txt
docker/server/server.dockerfile
docker/server/tralalere.yml
docker/web/Caddyfile
docker/web/web.dockerfile
virtualenv/requirements.txt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.env.tmpl	Tue Jul 23 23:18:21 2024 +0200
@@ -0,0 +1,8 @@
+ADMIN_EMAIL=
+POSTGRES_PASSWORD=
+DJANGO_SECRET=
+BROKER_PASSWORD=
+POSTGRES_USER=iri
+DEBUG=True
+ADMIN_EMAIL=admin@mail.com
+
--- a/.hgignore	Mon Jul 22 18:07:43 2024 +0200
+++ b/.hgignore	Tue Jul 23 23:18:21 2024 +0200
@@ -15,4 +15,9 @@
 ^web/\.htaccess$
 ^virtualenv/sync/distribute-0\.6\.24\.tar\.gz$
 ^virtualenv/web/distribute-0\.6\.24\.tar\.gz$
-^virtualenv/sync/project-boot\.py$
\ No newline at end of file
+^virtualenv/sync/project-boot\.py$
+^data_docker
+^.env$
+^.envrc$
+^.etchosts$
+^data/backup_db_tralalere_2024-07-23.sql.gz$
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docker-compose.yaml	Tue Jul 23 23:18:21 2024 +0200
@@ -0,0 +1,41 @@
+services:
+  server:
+    build:
+      context: .
+      dockerfile: docker/server/server.dockerfile
+    environment:
+      - DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST:-db}:${POSTGRES_PORT:-5432}/tralalere
+      - DEBUG=${DEBUG}
+    depends_on:
+      db:
+        condition: service_healthy
+    volumes:
+      - ./data_docker/static:/static
+      - ./data_docker/index:/index
+
+  db:
+    image: postgres
+    restart: always
+    volumes:
+      - ./data_docker/db:/var/lib/postgresql/data
+    environment:
+      POSTGRES_DB: "tralalere"
+      POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
+      POSTGRES_USER: "${POSTGRES_USER}"
+      POSTGRES_HOST_AUTH_METHOD: "md5"
+      POSTGRES_INITDB_ARGS: "--auth-local=md5"
+    healthcheck:
+      test: [ "CMD", "pg_isready", "-U", "${POSTGRES_USER}"]
+      interval: 10s
+      timeout: 5s
+      retries: 5
+
+  caddy:
+    build:
+      context: docker/web
+      dockerfile: web.dockerfile
+    volumes:
+      - ./data_docker/static:/static
+    ports:
+      - "80:80"
+      - "443:443"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docker/server/config.py	Tue Jul 23 23:18:21 2024 +0200
@@ -0,0 +1,110 @@
+# -*- coding: utf-8 -*-
+import os, logging
+import tralalere
+
+from environs import Env 
+
+env = Env()
+# Read .env into os.environ
+env.read_env()
+
+SITE_ID = 1
+
+#BASE_DIR = os.path.dirname(os.path.abspath(__file__)).rstrip("/")+"/"
+BASE_DIR = '/code/tralalere/'
+BASE_URL = '/'
+WEB_URL = 'http://tralalere.iri-research.org'
+
+
+STREAM_SRC_PREFIX = ""
+
+BASE_STATIC_URL = BASE_URL + 'static/' 
+BASE_STATIC_ROOT = "/static/"
+
+#STREAM_URL = "rtmp://media.iri.centrepompidou.fr/ddc_player/"
+STREAM_URL = 'rtmp://media.iri.centrepompidou.fr/ddc_player/'
+
+
+# Absolute path to the directory that holds media.
+# Example: "/home/media/media.lawrence.com/"
+MEDIA_ROOT = BASE_STATIC_ROOT + "media/"
+
+
+STATIC_URL = BASE_STATIC_URL + 'site/'
+# Absolute path to the directory that static files (js, css, swf...)
+# DO NOT forget to do command line ./manage.py collectstatic to gather static media into the web/static folder
+STATIC_ROOT = BASE_STATIC_ROOT + "site/"
+
+# PATH to the ffmpeg executable, used to know automatically the media file duration 
+FFMPEG_PATH = ""
+
+# URL that handles the media served from MEDIA_ROOT. Make sure to use a
+# trailing slash if there is a path component (optional in other cases).
+# Examples: "http://media.lawrence.com", "http://example.com/media/"
+MEDIA_URL = BASE_STATIC_URL + "media/"
+
+CONTENT_ROOT = MEDIA_ROOT + "/content/"
+
+STREAM_PATH = CONTENT_ROOT
+
+# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
+# trailing slash.
+# Examples: "http://foo.com/media/", "/media/".
+ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'
+LDT_MEDIA_PREFIX = STATIC_URL + 'ldt/'
+
+#DATABASES = {
+#    'default': {
+#        'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
+#        'NAME': 'tralalere',                      # Or path to database file if using sqlite3.
+#        'USER': 'iri',                      # Not used with sqlite3.
+#        'PASSWORD': 'iri',                  # Not used with sqlite3.
+#        'HOST': 'localhost',                      # Set to empty string for localhost. Not used with sqlite3.
+#        'PORT': '5432',                      # Set to empty string for default. Not used with sqlite3.
+#    }
+#}
+
+DATABASES = {
+    'default': env.dj_db_url("DATABASE_URL"),
+}
+
+
+DEBUG = True
+TEMPLATE_DEBUG = DEBUG
+LOG_LEVEL = logging.DEBUG
+
+#INDEX_PATH = os.path.abspath(BASE_DIR + "../index/")
+INDEX_PATH = '/index/'
+
+ADMINS = (
+    # ('Your Name', 'your_email@domain.com'),
+)
+
+MANAGERS = ADMINS
+
+GOOGLE_ANALYTICS_CODE = ''
+
+#EMAIL_USE_TLS = True
+#EMAIL_HOST = 'smtp.gmail.com'
+#EMAIL_HOST_USER = 'iri.ddc@gmail.com'
+#EMAIL_HOST_PASSWORD = ''
+#EMAIL_PORT = 587 
+
+EMAIL_USE_TLS = True
+EMAIL_HOST = ''
+EMAIL_HOST_USER = ''
+EMAIL_HOST_PASSWORD = ''
+EMAIL_PORT = 0 
+
+
+ACCOUNT_ACTIVATION_DAYS = 7
+REGISTRATION_OPEN = False
+
+LDT_MAX_SEARCH_NUMBER = 50
+LDT_JSON_DEFAULT_INDENT = 2
+
+EMPTY_MEDIA_EXTERNALID = None
+
+AUTO_INDEX_AFTER_SAVE = True
+
+FRONT_TAG_LIST = [u"Enmi 2011", u"film", u"conférence"]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docker/server/entrypoint.sh	Tue Jul 23 23:18:21 2024 +0200
@@ -0,0 +1,43 @@
+#!/usr/bin/env bash
+
+set -Eeuo pipefail
+
+# from https://stackoverflow.com/a/45977232
+# Following regex is based on https://www.rfc-editor.org/rfc/rfc3986#appendix-B with
+# additional sub-expressions to split authority into userinfo, host and port
+#
+readonly URI_REGEX='^(([^:/?#]+):)?(//((([^/?#]+)@)?([^:/?#]+)(:([0-9]+))?))?(/([^?#]*))(\?([^#]*))?(#(.*))?'
+#                    ↑↑            ↑  ↑↑↑            ↑         ↑ ↑            ↑ ↑        ↑  ↑        ↑ ↑
+#                    |2 scheme     |  ||6 userinfo   7 host    | 9 port       | 11 rpath |  13 query | 15 fragment
+#                    1 scheme:     |  |5 userinfo@             8 :…           10 path    12 ?…       14 #…
+#                                  |  4 authority
+#                                  3 //…
+
+parse_host () {
+    [[ "$@" =~ $URI_REGEX ]] && echo "${BASH_REMATCH[7]}"
+}
+
+parse_port () {
+    [[ "$@" =~ $URI_REGEX ]] && echo "${BASH_REMATCH[9]}"
+}
+
+dbhost=$(parse_host "${DATABASE_URL}")
+dbport=$(parse_port "${DATABASE_URL}")
+
+cd ${BASEDIR}
+
+if [[ "$*" =~ 'uwsgi' ]]; then
+    echo "Waiting for postgres on ${dbhost}:${dbport}..."
+
+    while ! nc -z ${dbhost} ${dbport}; do
+        sleep 0.1
+    done
+
+    echo "PostgreSQL started"
+    
+    python manage.py syncdb --migrate
+    python manage.py collectstatic --noinput --clear
+
+fi
+
+exec "$@"
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docker/server/requirements.txt	Tue Jul 23 23:18:21 2024 +0200
@@ -0,0 +1,27 @@
+Django==1.4
+django-extensions==0.8
+django-guardian==1.0.3
+django-oauth==1.1
+django-openid-consumer @ git+https://github.com/jjanssen/django-openid-consumer.git@master
+django-piston==0.2.3
+django-registration==0.8
+django-social-auth==0.3.10
+django-tagging==0.3.1
+httplib2
+#JCC==2.13
+#ldt==1.11
+# lucene==3.6.0 @ file:///code/pylucene-3.6.0-2-src.tar.gz
+lxml==4.4.2
+oauth2==1.5.210
+Pillow
+psycopg2==2.8.4
+python-memcached==1.59
+python-openid==2.2.5
+pytz
+setuptools-hg==0.4
+six==1.14.0
+sorl-thumbnail==11.12
+South==0.7.5
+uWSGI
+dj-database-url==0.5.0
+environs [django]==4.2.0
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docker/server/server.dockerfile	Tue Jul 23 23:18:21 2024 +0200
@@ -0,0 +1,87 @@
+# set base image (host OS)
+FROM docker.io/python:2.7-alpine as builder
+
+ENV VIRTUALENV=/opt/venv
+
+# set the working directory in the container
+WORKDIR /code
+
+RUN \
+    pip install virtualenv && \
+    virtualenv $VIRTUALENV
+
+ENV PATH="$VIRTUALENV/bin:$PATH"
+
+# copy the dependencies file to the working directory
+COPY docker/server/requirements.txt .
+
+ENV JCC_JDK=/usr/lib/jvm/java-11-openjdk
+ENV JCC_LFLAGS="-L/usr/lib/jvm/java-11-openjdk/jre/lib -ljava -L/usr/lib/jvm/java-11-openjdk/jre/lib/server -ljvm"
+ENV PATH="/usr/lib/jvm/java-11-openjdk/jre/bin:$PATH"
+ENV LD_LIBRARY_PATH="/usr/lib/jvm/java-11-openjdk/jre/lib:/usr/lib/jvm/java-11-openjdk/jre/lib/server"
+# ENV JCC_LFLAGS=-L/usr/lib/jvm/java-8-openjdk/jre/lib/amd64
+
+
+RUN \
+ apk add --no-cache postgresql-client postgresql-libs libxml2 libxslt libmemcached openjdk11 apache-ant bash jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev && \
+ apk add --no-cache --virtual .build-deps build-base postgresql-dev libxml2-dev libxslt-dev linux-headers sed wget patchelf git jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev && \
+ wget https://dlcdn.apache.org/lucene/pylucene/pylucene-7.7.1-src.tar.gz && \
+ tar zxvf pylucene-7.7.1-src.tar.gz && \
+ cd pylucene-7.7.1 && \
+ cd jcc && \
+ python setup.py install && \
+ cd .. && \
+ sed -i '1s/^/PREFIX_PYTHON=\/opt\/venv\nANT=JAVA_HOME=\/usr\/lib\/jvm\/java-11-openjdk \/usr\/bin\/ant\nPYTHON=$(PREFIX_PYTHON)\/bin\/python\nJCC=$(PYTHON) -m jcc --shared\nNUM_FILES=8\n/' Makefile && \
+ sed -i 's/http:\/\/repo1\.maven\.org\/maven2/https:\/\/repo1.maven.org\/maven2/' lucene-java-7.7.1/lucene/common-build.xml && \
+ patchelf --add-needed libjvm.so /opt/venv/lib/python2.7/site-packages/JCC-3.5-py2.7-linux-x86_64.egg/jcc/_jcc2.so && \
+ patchelf --add-needed libjvm.so /opt/venv/lib/python2.7/site-packages/JCC-3.5-py2.7-linux-x86_64.egg/libjcc2.so && \
+ make && \
+ make install && \
+ cd /code && \
+ wget https://hg.dev.iri-research.org/platform/archive/V01.11.tar.gz && \
+ tar zxvf V01.11.tar.gz && \
+ cd platform-V01.11/src/ldt && \
+ python setup.py sdist && \
+ pip install dist/ldt-1.11.tar.gz && \
+ cd /code && \
+ pip install -r requirements.txt
+
+
+FROM docker.io/python:2.7-alpine 
+
+COPY --from=builder /opt/venv /opt/venv
+COPY web/tralalere /code/tralalere
+COPY web/manage.py /code/
+
+
+
+ENV BASEDIR="/code"
+ENV PATH="/opt/venv/bin:$BASEDIR:$PATH"
+
+WORKDIR $BASEDIR
+
+RUN \
+  apk add --no-cache postgresql-client postgresql-libs libxml2 libxslt libmemcached openjdk11 apache-ant bash jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev bash && \
+  mkdir -p /static
+
+
+COPY docker/server/config.py ./tralalere/
+
+COPY docker/server/tralalere.yml .
+COPY --chmod=0755 docker/server/entrypoint.sh /
+
+ENV PYTHONPATH "/code/"
+ENV DJANGO_SETTINGS_MODULE tralalere.settings
+ENV DEBUG "False"
+ENV DATABASE_URL ""
+ENV DJANGO_SECRET ""
+
+ENV PATH="/usr/lib/jvm/java-11-openjdk/jre/bin:$PATH"
+ENV LD_LIBRARY_PATH="/usr/lib/jvm/java-11-openjdk/jre/lib:/usr/lib/jvm/java-11-openjdk/jre/lib/server"
+
+EXPOSE 8000
+
+ENTRYPOINT ["/entrypoint.sh"]
+
+# # command to run on container start
+CMD [ "/opt/venv/bin/uwsgi", "--yaml", "/code/tralalere.yml"]
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docker/server/tralalere.yml	Tue Jul 23 23:18:21 2024 +0200
@@ -0,0 +1,8 @@
+uwsgi:
+  master: true
+  socket: :8000
+  processes: 4
+  chdir: /code
+  module: tralalere.wsgi
+  pythonpath: "/code"
+  log-master: true
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docker/web/Caddyfile	Tue Jul 23 23:18:21 2024 +0200
@@ -0,0 +1,17 @@
+tralalere.iri-research.org {
+    tls internal
+
+    handle_path /static/* {
+        root * /static
+        file_server
+    }
+    
+    handle /* {
+        reverse_proxy server:8000 {
+            transport uwsgi {
+                uwsgi_param SCRIPT_NAME /tralalere
+                uwsgi_param UWSGI_SCHEME https
+            }
+        }
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docker/web/web.dockerfile	Tue Jul 23 23:18:21 2024 +0200
@@ -0,0 +1,10 @@
+FROM docker.io/caddy:builder AS builder
+
+RUN xcaddy build \
+    --with github.com/BadAimWeeb/caddy-uwsgi-transport
+
+FROM docker.io/caddy:latest
+
+COPY --from=builder /usr/bin/caddy /usr/bin/caddy
+COPY Caddyfile /etc/caddy/Caddyfile
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/virtualenv/requirements.txt	Tue Jul 23 23:18:21 2024 +0200
@@ -0,0 +1,26 @@
+Django==1.4
+django-extensions==0.8
+django-guardian==1.0.3
+django-oauth==1.1
+django-openid-consumer==0.1.1
+django-piston==0.2.3
+django-registration==0.8
+django-social-auth==0.3.10
+django-tagging==0.3.1
+httplib2==0.7.4
+JCC==2.13
+ldt==1.11
+lucene==3.6.0
+lxml==4.4.2
+oauth2==1.5.210
+PIL==1.1.7
+psycopg2==2.8.4
+python-memcached==1.59
+python-openid==2.2.5
+pytz==2019.3
+setuptools-hg==0.4
+six==1.14.0
+sorl-thumbnail==11.12
+South==0.7.5
+uWSGI==2.0.18
+