From 7aa3ec020278b6fdf8cec9b0f0c8741bfc268f4b Mon Sep 17 00:00:00 2001 From: Markos Gogoulos Date: Wed, 28 Jun 2023 15:53:12 +0300 Subject: [PATCH 01/11] upgrade python on Dockerfile --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index aa185579c..8e36aa961 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.8-buster AS compile-image +FROM python:3.11.4-bookworm AS compile-image SHELL ["/bin/bash", "-c"] @@ -24,7 +24,7 @@ RUN wget -q http://zebulon.bok.net/Bento4/binaries/Bento4-SDK-1-6-0-637.x86_64-u rm Bento4-SDK-1-6-0-637.x86_64-unknown-linux.zip ############ RUNTIME IMAGE ############ -FROM python:3.8-slim-buster as runtime-image +FROM python:3.11.4-bookworm as runtime-image ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 From 6e02ba788ab70945b1af2def659edf4dec1d2e55 Mon Sep 17 00:00:00 2001 From: Markos Gogoulos Date: Wed, 28 Jun 2023 17:33:10 +0300 Subject: [PATCH 02/11] pin versions --- requirements.txt | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/requirements.txt b/requirements.txt index be9c4e830..d1fd9838c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,21 +1,21 @@ -Django==3.1.12 -djangorestframework==3.12.2 -django-allauth==0.44.0 -psycopg2-binary==2.8.6 -uwsgi==2.0.19.1 -django-redis==4.12.1 -celery==4.4.7 -drf-yasg==1.20.0 -Pillow==8.2.0 +Django==4.2.2 +djangorestframework==3.14.0 +django-allauth==0.54.0 +psycopg-binary==3.1.9 +uwsgi==2.0.21 +django-redis==5.3.0 +celery==5.3.1 +drf-yasg==1.21.6 +Pillow==9.5.0 django-imagekit==4.1.0 -markdown==3.3.6 -django-filter==21.1 -filetype==1.0.10 -django-mptt==0.13.4 +markdown==3.4.3 +django-filter==23.2 +filetype==1.2.0 +django-mptt==0.14.0 django-crispy-forms==1.13.0 -requests==2.25.0 +requests==2.31.0 django-celery-email==3.0.0 -m3u8==1.0.0 -django-ckeditor==6.2.0 -django-debug-toolbar==3.2.4 -django-login-required-middleware==0.6.1 +m3u8==3.5.0 +django-ckeditor==6.6.1 +django-debug-toolbar==4.1.0 +django-login-required-middleware==0.9.0 From 8e5b5806a231c8b4ffb86975f5120462199cabc7 Mon Sep 17 00:00:00 2001 From: Markos Gogoulos Date: Wed, 28 Jun 2023 17:54:36 +0300 Subject: [PATCH 03/11] fix --- cms/urls.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cms/urls.py b/cms/urls.py index 447000674..bdf038b32 100644 --- a/cms/urls.py +++ b/cms/urls.py @@ -1,7 +1,7 @@ import debug_toolbar -from django.conf.urls import include, re_path +from django.conf.urls import include from django.contrib import admin -from django.urls import path +from django.urls import path, re_path from django.views.generic.base import TemplateView from drf_yasg import openapi from drf_yasg.views import get_schema_view From f5c1b31eb8ae7ab5ecf78b3b0880a54b97af168f Mon Sep 17 00:00:00 2001 From: Markos Gogoulos Date: Wed, 28 Jun 2023 17:56:57 +0300 Subject: [PATCH 04/11] django upgrade --- files/urls.py | 4 ++-- uploader/urls.py | 2 +- users/urls.py | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/files/urls.py b/files/urls.py index d40f2acc1..943b3b735 100644 --- a/files/urls.py +++ b/files/urls.py @@ -1,7 +1,7 @@ from django.conf import settings -from django.conf.urls import include, re_path +from django.conf.urls import include from django.conf.urls.static import static -from django.urls import path +from django.urls import path, re_path from . import management_views, views from .feeds import IndexRSSFeed, SearchRSSFeed diff --git a/uploader/urls.py b/uploader/urls.py index bee976114..71265cf9e 100644 --- a/uploader/urls.py +++ b/uploader/urls.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from django.conf.urls import re_path +from django.urls import re_path from . import views diff --git a/users/urls.py b/users/urls.py index 4676c495a..c66487821 100644 --- a/users/urls.py +++ b/users/urls.py @@ -1,5 +1,4 @@ -from django.conf.urls import re_path -from django.urls import path +from django.urls import path, re_path from . import views From dd7c0f461b0114f2c572a6f46afb77ee34a7bca6 Mon Sep 17 00:00:00 2001 From: Markos Gogoulos Date: Wed, 28 Jun 2023 19:05:02 +0300 Subject: [PATCH 05/11] celery --- files/tasks.py | 10 ++++++---- files/views.py | 4 ++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/files/tasks.py b/files/tasks.py index 005fc80ab..882390897 100644 --- a/files/tasks.py +++ b/files/tasks.py @@ -10,7 +10,8 @@ from celery.decorators import task from celery.exceptions import SoftTimeLimitExceeded from celery.signals import task_revoked -from celery.task.control import revoke + +# from celery.task.control import revoke from celery.utils.log import get_task_logger from django.conf import settings from django.core.cache import cache @@ -460,10 +461,11 @@ def check_running_states(): if (now - encoding.update_date).seconds > settings.RUNNING_STATE_STALE: media = encoding.media profile = encoding.profile - task_id = encoding.task_id + # task_id = encoding.task_id # terminate task - if task_id: - revoke(task_id, terminate=True) + # TODO: not imported + # if task_id: + # revoke(task_id, terminate=True) encoding.delete() media.encode(profiles=[profile]) # TODO: allign with new code + chunksize... diff --git a/files/views.py b/files/views.py index ae08c417e..ce90196d0 100644 --- a/files/views.py +++ b/files/views.py @@ -1,6 +1,5 @@ from datetime import datetime, timedelta -from celery.task.control import revoke from django.conf import settings from django.contrib import messages from django.contrib.auth.decorators import login_required @@ -1396,5 +1395,6 @@ class TaskDetail(APIView): permission_classes = (permissions.IsAdminUser,) def delete(self, request, uid, format=None): - revoke(uid, terminate=True) + # This is not imported! + # revoke(uid, terminate=True) return Response(status=status.HTTP_204_NO_CONTENT) From f86580b01756b4005b17ce1e601269d169844c5d Mon Sep 17 00:00:00 2001 From: Markos Gogoulos Date: Wed, 28 Jun 2023 19:09:31 +0300 Subject: [PATCH 06/11] celeryu --- files/tasks.py | 2 +- requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/files/tasks.py b/files/tasks.py index 882390897..aee5b6727 100644 --- a/files/tasks.py +++ b/files/tasks.py @@ -7,7 +7,7 @@ from datetime import datetime, timedelta from celery import Task -from celery.decorators import task +from celery import shared_task as task from celery.exceptions import SoftTimeLimitExceeded from celery.signals import task_revoked diff --git a/requirements.txt b/requirements.txt index d1fd9838c..acbb677a8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ Django==4.2.2 djangorestframework==3.14.0 django-allauth==0.54.0 -psycopg-binary==3.1.9 +psycopg==3.1.9 uwsgi==2.0.21 django-redis==5.3.0 celery==5.3.1 From 0ccc982fe20e014e4d6e558644e657d0474ad6a6 Mon Sep 17 00:00:00 2001 From: Markos Gogoulos Date: Wed, 28 Jun 2023 19:31:31 +0300 Subject: [PATCH 07/11] migrations --- cms/settings.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cms/settings.py b/cms/settings.py index 8fe4e01b1..79452156d 100644 --- a/cms/settings.py +++ b/cms/settings.py @@ -485,3 +485,5 @@ r'/accounts/confirm-email/.*/$', r'/api/v[0-9]+/', ] + +DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' From ed6424ddf824a1472fa83051763709cb26afd0fa Mon Sep 17 00:00:00 2001 From: Markos Gogoulos Date: Wed, 28 Jun 2023 20:14:31 +0300 Subject: [PATCH 08/11] docker dev --- Dockerfile-dev | 59 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/Dockerfile-dev b/Dockerfile-dev index 2547fc1bd..af64610b6 100644 --- a/Dockerfile-dev +++ b/Dockerfile-dev @@ -1,4 +1,4 @@ -FROM mediacms/mediacms:latest +FROM python:3.11.4-bookworm AS compile-image SHELL ["/bin/bash", "-c"] @@ -7,10 +7,65 @@ ENV VIRTUAL_ENV=/home/mediacms.io ENV PATH="$VIRTUAL_ENV/bin:$PATH" ENV PIP_NO_CACHE_DIR=1 -RUN cd /home/mediacms.io && python3 -m venv $VIRTUAL_ENV +RUN mkdir -p /home/mediacms.io/mediacms/{logs} && cd /home/mediacms.io && python3 -m venv $VIRTUAL_ENV +# Install dependencies: COPY requirements.txt . COPY requirements-dev.txt . RUN pip install -r requirements-dev.txt + +COPY . /home/mediacms.io/mediacms WORKDIR /home/mediacms.io/mediacms + +RUN wget -q http://zebulon.bok.net/Bento4/binaries/Bento4-SDK-1-6-0-637.x86_64-unknown-linux.zip && \ + unzip Bento4-SDK-1-6-0-637.x86_64-unknown-linux.zip -d ../bento4 && \ + mv ../bento4/Bento4-SDK-1-6-0-637.x86_64-unknown-linux/* ../bento4/ && \ + rm -rf ../bento4/Bento4-SDK-1-6-0-637.x86_64-unknown-linux && \ + rm -rf ../bento4/docs && \ + rm Bento4-SDK-1-6-0-637.x86_64-unknown-linux.zip + +############ RUNTIME IMAGE ############ +FROM python:3.11.4-bookworm as runtime-image + +ENV PYTHONUNBUFFERED=1 +ENV PYTHONDONTWRITEBYTECODE=1 + +# See: https://github.com/celery/celery/issues/6285#issuecomment-715316219 +ENV CELERY_APP='cms' + +# Use these to toggle which processes supervisord should run +ENV ENABLE_UWSGI='yes' +ENV ENABLE_NGINX='yes' +ENV ENABLE_CELERY_BEAT='yes' +ENV ENABLE_CELERY_SHORT='yes' +ENV ENABLE_CELERY_LONG='yes' +ENV ENABLE_MIGRATIONS='yes' + +# Set up virtualenv +ENV VIRTUAL_ENV=/home/mediacms.io +ENV PATH="$VIRTUAL_ENV/bin:$PATH" + +COPY --chown=www-data:www-data --from=compile-image /home/mediacms.io /home/mediacms.io + +RUN apt-get update -y && apt-get -y upgrade && apt-get install --no-install-recommends \ + supervisor nginx imagemagick procps wget xz-utils -y && \ + rm -rf /var/lib/apt/lists/* && \ + apt-get purge --auto-remove && \ + apt-get clean + +RUN wget -q https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz && \ + mkdir -p ffmpeg-tmp && \ + tar -xf ffmpeg-release-amd64-static.tar.xz --strip-components 1 -C ffmpeg-tmp && \ + cp -v ffmpeg-tmp/ffmpeg ffmpeg-tmp/ffprobe ffmpeg-tmp/qt-faststart /usr/local/bin && \ + rm -rf ffmpeg-tmp ffmpeg-release-amd64-static.tar.xz + +WORKDIR /home/mediacms.io/mediacms + +EXPOSE 9000 80 + +RUN chmod +x ./deploy/docker/entrypoint.sh + +ENTRYPOINT ["./deploy/docker/entrypoint.sh"] + +CMD ["./deploy/docker/start.sh"] From 0a8681531bf761023961f64792da2e70f3bd1963 Mon Sep 17 00:00:00 2001 From: Markos Gogoulos Date: Thu, 29 Jun 2023 13:22:59 +0300 Subject: [PATCH 09/11] updates --- HISTORY.md | 19 +++++++++++++++++++ deploy/local_install/celery_beat.service | 6 ++---- deploy/local_install/celery_long.service | 10 ++++------ deploy/local_install/celery_short.service | 10 ++++------ docs/admins_docs.md | 8 ++++---- install.sh | 6 +++--- version.py | 2 +- 7 files changed, 37 insertions(+), 24 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 797407129..3dd69669c 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,24 @@ # History +## 2.2.0 + +### Features +- Updates Python/Django requirements and Dockerfile to use latest 3.11 Python. This update requires some manual steps, for existing (not new) installations. +For Docker installation, make sure you follow the instructions on how to update, on the admin docs page, under the Docker section. + +For single server installation, + +```bash +cd /home/mediacms.io/mediacms # enter mediacms directory +source /home/mediacms.io/bin/activate # use virtualenv +git pull # update code +pip install -r requirements.txt # install new requirements +python manage.py migrate # run Django migrations +cp deploy/local_install/celery_* /etc/systemd/system/ # copy celery services +systemctl daemon-reload # reload supervisor daemon +systemctl restart mediacms celery_long celery_short # restart services +``` + ## 2.1.0 ### Fixes diff --git a/deploy/local_install/celery_beat.service b/deploy/local_install/celery_beat.service index 63a13336a..be1065b8d 100644 --- a/deploy/local_install/celery_beat.service +++ b/deploy/local_install/celery_beat.service @@ -8,15 +8,13 @@ User=www-data Group=www-data Restart=always RestartSec=10 -Environment=APP_DIR="/home/mediacms.io/mediacms" +WorkingDirectory=/home/mediacms.io/mediacms Environment=CELERY_BIN="/home/mediacms.io/bin/celery" -Environment=CELERY_APP="cms" Environment=CELERYD_PID_FILE="/home/mediacms.io/mediacms/pids/beat%n.pid" Environment=CELERYD_LOG_FILE="/home/mediacms.io/mediacms/logs/beat%N.log" Environment=CELERYD_LOG_LEVEL="INFO" -Environment=APP_DIR="/home/mediacms.io/mediacms" -ExecStart=/bin/sh -c '${CELERY_BIN} beat -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS} --workdir=${APP_DIR}' +ExecStart=/bin/sh -c '${CELERY_BIN} -A cms beat --pidfile=${CELERYD_PID_FILE} --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL}' ExecStop=/bin/kill -s TERM $MAINPID [Install] diff --git a/deploy/local_install/celery_long.service b/deploy/local_install/celery_long.service index ab8ab8ad7..c5c9cf4f3 100644 --- a/deploy/local_install/celery_long.service +++ b/deploy/local_install/celery_long.service @@ -8,23 +8,21 @@ User=www-data Group=www-data Restart=always RestartSec=10 -Environment=APP_DIR="/home/mediacms.io/mediacms" +WorkingDirectory=/home/mediacms.io/mediacms Environment=CELERYD_NODES="long1" Environment=CELERY_QUEUE="long_tasks" Environment=CELERY_BIN="/home/mediacms.io/bin/celery" -Environment=CELERY_APP="cms" Environment=CELERYD_MULTI="multi" Environment=CELERYD_OPTS="-Ofair --prefetch-multiplier=1" Environment=CELERYD_PID_FILE="/home/mediacms.io/mediacms/pids/%n.pid" Environment=CELERYD_LOG_FILE="/home/mediacms.io/mediacms/logs/%N.log" Environment=CELERYD_LOG_LEVEL="INFO" -Environment=APP_DIR="/home/mediacms.io/mediacms" -ExecStart=/bin/sh -c '${CELERY_BIN} multi start ${CELERYD_NODES} -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS} --workdir=${APP_DIR} -Q ${CELERY_QUEUE}' +ExecStart=/bin/sh -c '${CELERY_BIN} -A cms multi start ${CELERYD_NODES} --pidfile=${CELERYD_PID_FILE} --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS} -Q ${CELERY_QUEUE}' -ExecStop=/bin/sh -c '${CELERY_BIN} multi stopwait ${CELERYD_NODES} --pidfile=${CELERYD_PID_FILE}' +ExecStop=/bin/sh -c '${CELERY_BIN} -A cms multi stopwait ${CELERYD_NODES} --pidfile=${CELERYD_PID_FILE}' -ExecReload=/bin/sh -c '${CELERY_BIN} multi restart ${CELERYD_NODES} -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS} --workdir=${APP_DIR} -Q ${CELERY_QUEUE}' +ExecReload=/bin/sh -c '${CELERY_BIN} -A cms multi restart ${CELERYD_NODES} --pidfile=${CELERYD_PID_FILE} --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS} -Q ${CELERY_QUEUE}' [Install] WantedBy=multi-user.target diff --git a/deploy/local_install/celery_short.service b/deploy/local_install/celery_short.service index 0ac108b42..c46d0090f 100644 --- a/deploy/local_install/celery_short.service +++ b/deploy/local_install/celery_short.service @@ -8,14 +8,13 @@ User=www-data Group=www-data Restart=always RestartSec=10 -Environment=APP_DIR="/home/mediacms.io/mediacms" +WorkingDirectory=/home/mediacms.io/mediacms Environment=CELERYD_NODES="short1 short2" Environment=CELERY_QUEUE="short_tasks" # Absolute or relative path to the 'celery' command: Environment=CELERY_BIN="/home/mediacms.io/bin/celery" # App instance to use # comment out this line if you don't use an app -Environment=CELERY_APP="cms" # or fully qualified: #CELERY_APP="proj.tasks:app" # How to call manage.py @@ -28,13 +27,12 @@ Environment=CELERYD_OPTS="--soft-time-limit=300 -c10" Environment=CELERYD_PID_FILE="/home/mediacms.io/mediacms/pids/%n.pid" Environment=CELERYD_LOG_FILE="/home/mediacms.io/mediacms/logs/%N.log" Environment=CELERYD_LOG_LEVEL="INFO" -Environment=APP_DIR="/home/mediacms.io/mediacms" -ExecStart=/bin/sh -c '${CELERY_BIN} multi start ${CELERYD_NODES} -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS} --workdir=${APP_DIR} -Q ${CELERY_QUEUE}' +ExecStart=/bin/sh -c '${CELERY_BIN} -A cms multi start ${CELERYD_NODES} --pidfile=${CELERYD_PID_FILE} --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS} -Q ${CELERY_QUEUE}' -ExecStop=/bin/sh -c '${CELERY_BIN} multi stopwait ${CELERYD_NODES} --pidfile=${CELERYD_PID_FILE}' +ExecStop=/bin/sh -c '${CELERY_BIN} -A cms multi stopwait ${CELERYD_NODES} --pidfile=${CELERYD_PID_FILE}' -ExecReload=/bin/sh -c '${CELERY_BIN} multi restart ${CELERYD_NODES} -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS} --workdir=${APP_DIR} -Q ${CELERY_QUEUE}' +ExecReload=/bin/sh -c '${CELERY_BIN} -A cms multi restart ${CELERYD_NODES} --pidfile=${CELERYD_PID_FILE} --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS} -Q ${CELERY_QUEUE}' [Install] WantedBy=multi-user.target diff --git a/docs/admins_docs.md b/docs/admins_docs.md index e89d0e804..022a31a10 100644 --- a/docs/admins_docs.md +++ b/docs/admins_docs.md @@ -25,12 +25,12 @@ This page is created for MediaCMS administrators that are responsible for settin ## 2. Server Installation -The core dependencies are Python3, Django3, Celery, PostgreSQL, Redis, ffmpeg. Any system that can have these dependencies installed, can run MediaCMS. But we strongly suggest installing on Linux Ubuntu 18 or 20 versions. +The core dependencies are Python3, Django3, Celery, PostgreSQL, Redis, ffmpeg. Any system that can have these dependencies installed, can run MediaCMS. But we strongly suggest installing on Linux Ubuntu (tested on versions 20, 22). -Installation on a Ubuntu 18 or 20 system with git utility installed should be completed in a few minutes with the following steps. +Installation on an Ubuntu system with git utility installed should be completed in a few minutes with the following steps. Make sure you run it as user root, on a clear system, since the automatic script will install and configure the following services: Celery/PostgreSQL/Redis/Nginx and will override any existing settings. -Automated script - tested on Ubuntu 18, Ubuntu 20, and Debian Buster +Automated script - tested on Ubuntu 20, Ubuntu 22 and Debian Buster ```bash mkdir /home/mediacms.io && cd /home/mediacms.io/ @@ -66,7 +66,7 @@ Database can be backed up with pg_dump and media_files on /home/mediacms.io/medi ## Installation Install a recent version of [Docker](https://docs.docker.com/get-docker/), and [Docker Compose](https://docs.docker.com/compose/install/). -For Ubuntu 18/20 systems this is: +For Ubuntu 20/22 systems this is: ```bash curl -fsSL https://get.docker.com -o get-docker.sh diff --git a/install.sh b/install.sh index 71430736f..9aedaba5a 100644 --- a/install.sh +++ b/install.sh @@ -1,5 +1,5 @@ #!/bin/bash -# should be run as root and only on Ubuntu 18/20, Debian 10/11 (Buster/Bullseye) versions! +# should be run as root and only on Ubuntu 20/22, Debian 10/11 (Buster/Bullseye) versions! echo "Welcome to the MediacMS installation!"; if [ `id -u` -ne 0 ] @@ -22,11 +22,11 @@ done osVersion=$(lsb_release -d) -if [[ $osVersion == *"Ubuntu 20"* ]] || [[ $osVersion == *"Ubuntu 18"* ]] || [[ $osVersion == *"buster"* ]] || [[ $osVersion == *"bullseye"* ]]; then +if [[ $osVersion == *"Ubuntu 20"* ]] || [[ $osVersion == *"Ubuntu 22"* ]] || [[ $osVersion == *"buster"* ]] || [[ $osVersion == *"bullseye"* ]]; then echo 'Performing system update and dependency installation, this will take a few minutes' apt-get update && apt-get -y upgrade && apt-get install python3-venv python3-dev virtualenv redis-server postgresql nginx git gcc vim unzip imagemagick python3-certbot-nginx certbot wget xz-utils -y else - echo "This script is tested for Ubuntu 18 and 20 versions only, if you want to try MediaCMS on another system you have to perform the manual installation" + echo "This script is tested for Ubuntu 20/22 versions only, if you want to try MediaCMS on another system you have to perform the manual installation" exit fi diff --git a/version.py b/version.py index 210140902..3c00bb49a 100644 --- a/version.py +++ b/version.py @@ -1 +1 @@ -VERSION = "2.0.0" +VERSION = "2.2.0" From bf6be6750209335bfe99a7fd7fe70b64f71c70ea Mon Sep 17 00:00:00 2001 From: Markos Gogoulos Date: Mon, 3 Jul 2023 13:15:38 +0300 Subject: [PATCH 10/11] docs --- docs/admins_docs.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/admins_docs.md b/docs/admins_docs.md index 022a31a10..c8f54290d 100644 --- a/docs/admins_docs.md +++ b/docs/admins_docs.md @@ -49,10 +49,16 @@ If you've used the above way to install MediaCMS, update with the following: cd /home/mediacms.io/mediacms # enter mediacms directory source /home/mediacms.io/bin/activate # use virtualenv git pull # update code +pip install -r requirements.txt -U # run pip install to update python manage.py migrate # run Django migrations sudo systemctl restart mediacms celery_long celery_short # restart services ``` +### Update from version 2 to version 3 +Version 3 is using Django 4 and Celery 5, and needs a recent Python 3.x version. If you are updating from an older version, make sure Python is updated first. Version 2 could run on Python 3.6, but version 3 needs Python3.8 and higher. + + + ### Configuration Checkout the configuration section here. @@ -112,6 +118,18 @@ docker-compose down docker-compose up ``` +### Update from version 2 to version 3 +Version 3 is using Python 3.11 and PostgreSQL 15. If you are updating from an older version, that was using PostgreSQL 13, the automatic update will not work, as you will receive the following message when the PostgreSQL container starts: + +``` +db_1 | 2023-06-27 11:07:42.959 UTC [1] FATAL: database files are incompatible with server +db_1 | 2023-06-27 11:07:42.959 UTC [1] DETAIL: The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 15.2. +``` + +At this point there are two options: either edit the Docker Compose file and make use of the existing postgres:13 image, or otherwise you have to perform the migration from postgresql 13 to version 15. More notes on https://github.com/mediacms-io/mediacms/pull/749 + + + ## Configuration Checkout the configuration docs here. From e0d08f932a10dc67bced0544a9caf9bed2982085 Mon Sep 17 00:00:00 2001 From: Markos Gogoulos Date: Mon, 3 Jul 2023 13:37:36 +0300 Subject: [PATCH 11/11] docs --- HISTORY.md | 21 ++++++--------------- version.py | 2 +- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 3dd69669c..427d3a803 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,23 +1,14 @@ # History -## 2.2.0 +## 3.0.0 ### Features -- Updates Python/Django requirements and Dockerfile to use latest 3.11 Python. This update requires some manual steps, for existing (not new) installations. -For Docker installation, make sure you follow the instructions on how to update, on the admin docs page, under the Docker section. +- Updates Python/Django requirements and Dockerfile to use latest 3.11 Python - https://github.com/mediacms-io/mediacms/pull/826/files. This update requires some manual steps, for existing (not new) installations. Check the update section under the [Admin docs](https://github.com/mediacms-io/mediacms/blob/main/docs/admins_docs.md#2-server-installation), either for single server or for Docker Compose installations +- Upgrade postgres on Docker Compose - https://github.com/mediacms-io/mediacms/pull/749 -For single server installation, - -```bash -cd /home/mediacms.io/mediacms # enter mediacms directory -source /home/mediacms.io/bin/activate # use virtualenv -git pull # update code -pip install -r requirements.txt # install new requirements -python manage.py migrate # run Django migrations -cp deploy/local_install/celery_* /etc/systemd/system/ # copy celery services -systemctl daemon-reload # reload supervisor daemon -systemctl restart mediacms celery_long celery_short # restart services -``` +### Fixes +- video player options for HLS - https://github.com/mediacms-io/mediacms/pull/832 +- AVI videos not correctly recognised as videos - https://github.com/mediacms-io/mediacms/pull/833 ## 2.1.0 diff --git a/version.py b/version.py index 3c00bb49a..ea9d6945b 100644 --- a/version.py +++ b/version.py @@ -1 +1 @@ -VERSION = "2.2.0" +VERSION = "3.0.0"