# HG changeset patch # User ymh # Date 1721769501 -7200 # Node ID f6b392c37e10659415ea246fb3b4f5d6943ba6b0 # Parent 6ec3049096dda509ca0ad60665ec647bffe80dda lucene 7.7.1 compiled but not compatible with ldt indexation diff -r 6ec3049096dd -r f6b392c37e10 .env.tmpl --- /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 + diff -r 6ec3049096dd -r f6b392c37e10 .hgignore --- 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 diff -r 6ec3049096dd -r f6b392c37e10 docker-compose.yaml --- /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" diff -r 6ec3049096dd -r f6b392c37e10 docker/server/config.py --- /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"] diff -r 6ec3049096dd -r f6b392c37e10 docker/server/entrypoint.sh --- /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 diff -r 6ec3049096dd -r f6b392c37e10 docker/server/requirements.txt --- /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 diff -r 6ec3049096dd -r f6b392c37e10 docker/server/server.dockerfile --- /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 diff -r 6ec3049096dd -r f6b392c37e10 docker/server/tralalere.yml --- /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 diff -r 6ec3049096dd -r f6b392c37e10 docker/web/Caddyfile --- /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 diff -r 6ec3049096dd -r f6b392c37e10 docker/web/web.dockerfile --- /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 + diff -r 6ec3049096dd -r f6b392c37e10 virtualenv/requirements.txt --- /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 +