From 87b9df7bf74ff21e205162e46d3e95b4fa43f62f Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 11 Feb 2021 18:29:46 +0300 Subject: [PATCH] initial for legacy-php5 --- app/Dockerfile | 108 ++++++++++++----- app/config.docker.php | 248 +++++++++++++++++++------------------- app/config.php-dist | 272 +++++++++++++++++++++--------------------- app/startup.sh | 16 +-- app/updater.sh | 6 +- docker-compose.yml | 28 ++--- 6 files changed, 368 insertions(+), 310 deletions(-) diff --git a/app/Dockerfile b/app/Dockerfile index 795b8a6..19a53a4 100644 --- a/app/Dockerfile +++ b/app/Dockerfile @@ -1,12 +1,12 @@ -FROM alpine:3.13 +FROM alpine:3.5 EXPOSE 9000/tcp -RUN apk add --no-cache dcron php8 php8-fpm \ - php8-pdo php8-gd php8-pgsql php8-pdo_pgsql php8-mbstring \ - php8-intl php8-xml php8-curl php8-session \ - php8-dom php8-fileinfo php8-json php8-iconv \ - php8-pcntl php8-posix php8-zip php8-openssl \ - git postgresql-client sudo +RUN apk add --no-cache dcron php5 php5-fpm \ + php5-pdo php5-gd php5-pgsql php5-pdo_pgsql \ + php5-intl php5-xml php5-curl \ + php5-dom php5-json php5-iconv \ + php5-pcntl php5-posix php5-zip php5-openssl \ + git postgresql-client sudo php5-ctype ENV SCRIPT_ROOT=/opt/tt-rss @@ -19,13 +19,21 @@ ADD dcron.sh ${SCRIPT_ROOT} ADD backup.sh /etc/periodic/weekly/backup ADD config.docker.php ${SCRIPT_ROOT} -RUN sed -i.bak 's/^listen = 127.0.0.1:9000/listen = 9000/' /etc/php8/php-fpm.d/www.conf -RUN sed -i.bak 's/\(memory_limit =\) 128M/\1 256M/' /etc/php8/php.ini -RUN sed -i.bak 's/;clear_env = .*/clear_env = no/i' /etc/php8/php-fpm.d/www.conf +RUN sed -i.bak 's/^listen = 127.0.0.1:9000/listen = 9000/' /etc/php5/php-fpm.conf +#RUN sed -i.bak 's/\(memory_limit =\) 128M/\1 256M/' /etc/php5/php.ini +RUN sed -i.bak 's/;clear_env = .*/clear_env = no/i' /etc/php5/php-fpm.conf ENV OWNER_UID=1000 ENV OWNER_GID=1000 +#commit b25df544b4d77a3deb43c9968797e5703e1e84f2 (HEAD) +#Author: Andrew Dolgov +#Date: Mon Sep 13 16:10:17 2010 +0400 +# +# release 1.4.3.1 + +ENV TARGET_COMMIT="b25df544b4d77a3deb43c9968797e5703e1e84f2" + ENV TTRSS_DB_TYPE="pgsql" ENV TTRSS_DB_HOST="db" ENV TTRSS_DB_USER="%DB_USER" @@ -34,29 +42,67 @@ ENV TTRSS_DB_PASS="%DB_PASS" ENV TTRSS_DB_PORT="5432" # config.php defaults -ENV TTRSS_MYSQL_CHARSET="UTF8" -ENV TTRSS_SELF_URL_PATH="%SELF_URL_PATH" -ENV TTRSS_SINGLE_USER_MODE="" -ENV TTRSS_SIMPLE_UPDATE_MODE="" -ENV TTRSS_PHP_EXECUTABLE="/usr/bin/php8" -ENV TTRSS_LOCK_DIRECTORY="lock" -ENV TTRSS_CACHE_DIR="cache" -ENV TTRSS_ICONS_DIR="feed-icons" -ENV TTRSS_ICONS_URL="feed-icons" -ENV TTRSS_AUTH_AUTO_CREATE="true" -ENV TTRSS_AUTH_AUTO_LOGIN="true" -ENV TTRSS_FORCE_ARTICLE_PURGE="0" +#ENV TTRSS_MYSQL_CHARSET="UTF8" +#ENV TTRSS_SELF_URL_PATH="%SELF_URL_PATH" +#ENV TTRSS_SINGLE_USER_MODE="" +#ENV TTRSS_SIMPLE_UPDATE_MODE="" +#ENV TTRSS_PHP_EXECUTABLE="/usr/bin/php5" +#ENV TTRSS_LOCK_DIRECTORY="lock" +#ENV TTRSS_CACHE_DIR="cache" +#ENV TTRSS_ICONS_DIR="feed-icons" +#ENV TTRSS_ICONS_URL="feed-icons" +#ENV TTRSS_AUTH_AUTO_CREATE="true" +#ENV TTRSS_AUTH_AUTO_LOGIN="true" +#ENV TTRSS_FORCE_ARTICLE_PURGE="0" +#ENV TTRSS_ENABLE_REGISTRATION="" +#ENV TTRSS_REG_NOTIFY_ADDRESS="user@your.domain.dom" +#ENV TTRSS_REG_MAX_USERS="10" +#ENV TTRSS_SESSION_COOKIE_LIFETIME="86400" +#ENV TTRSS_SMTP_FROM_NAME="Tiny Tiny RSS" +#ENV TTRSS_SMTP_FROM_ADDRESS="noreply@your.domain.dom" +#ENV TTRSS_DIGEST_SUBJECT="[tt-rss] New headlines for last 24 hours" +#ENV TTRSS_CHECK_FOR_UPDATES="true" +#ENV TTRSS_ENABLE_GZIP_OUTPUT="" +#ENV TTRSS_PLUGINS="auth_internal, note, nginx_xaccel" +#ENV TTRSS_LOG_DESTINATION="sql" +#ENV TTRSS_CONFIG_VERSION="26" + +ENV TTRSS_MAGPIE_FETCH_TIME_OUT="60" +ENV TTRSS_MAGPIE_CACHE_DIR="/var/tmp/magpie-ttrss-cache" +ENV TTRSS_MAGPIE_CACHE_AGE="60*30" +ENV TTRSS_ICONS_DIR="icons" +ENV TTRSS_ICONS_URL="icons" +ENV TTRSS_SINGLE_USER_MODE="true" +ENV TTRSS_TMP_DIRECTORY="/tmp" +ENV TTRSS_FEEDS_FRAME_REFRESH="600" +ENV TTRSS_ENABLE_UPDATE_DAEMON="1" +ENV TTRSS_DAEMON_SLEEP_INTERVAL="120" +ENV TTRSS_DATABASE_BACKED_SESSIONS="" +ENV TTRSS_SESSION_CHECK_ADDRESS="true" +ENV TTRSS_SESSION_COOKIE_LIFETIME="0" +ENV TTRSS_SESSION_EXPIRE_TIME="86400" +ENV TTRSS_DAEMON_UPDATE_LOGIN_LIMIT="0" +ENV TTRSS_CHECK_FOR_NEW_VERSION="true" +ENV TTRSS_USE_CURL_FOR_ICONS="" +ENV TTRSS_DIGEST_ENABLE="true" +ENV TTRSS_DIGEST_EMAIL_LIMIT="10" +ENV TTRSS_DAEMON_SENDS_DIGESTS="true" +ENV TTRSS_ENABLE_TRANSLATIONS="true" +ENV TTRSS_DEFAULT_UPDATE_METHOD="0" +ENV TTRSS_SIMPLEPIE_CACHE_IMAGES="" +ENV TTRSS_COUNTERS_MAX_AGE="365" +ENV TTRSS_DIGEST_FROM_NAME="Tiny Tiny RSS" +ENV TTRSS_DIGEST_FROM_ADDRESS="noreply@your.domain.dom" +ENV TTRSS_DIGEST_SUBJECT="[tt-rss] New headlines for last 24 hours" +ENV TTRSS_DAEMON_FEED_LIMIT="100" +ENV TTRSS_ALLOW_REMOTE_USER_AUTH="" +ENV TTRSS_LOCK_DIRECTORY="." +ENV TTRSS_ENABLE_GZIP_OUTPUT="" +ENV TTRSS_PHP_EXECUTABLE="/usr/bin/php" ENV TTRSS_ENABLE_REGISTRATION="" ENV TTRSS_REG_NOTIFY_ADDRESS="user@your.domain.dom" ENV TTRSS_REG_MAX_USERS="10" -ENV TTRSS_SESSION_COOKIE_LIFETIME="86400" -ENV TTRSS_SMTP_FROM_NAME="Tiny Tiny RSS" -ENV TTRSS_SMTP_FROM_ADDRESS="noreply@your.domain.dom" -ENV TTRSS_DIGEST_SUBJECT="[tt-rss] New headlines for last 24 hours" -ENV TTRSS_CHECK_FOR_UPDATES="true" -ENV TTRSS_ENABLE_GZIP_OUTPUT="" -ENV TTRSS_PLUGINS="auth_internal, note, nginx_xaccel" -ENV TTRSS_LOG_DESTINATION="sql" -ENV TTRSS_CONFIG_VERSION="26" +ENV TTRSS_FORCE_ARTICLE_PURGE="0" +ENV TTRSS_CONFIG_VERSION="19" CMD ${SCRIPT_ROOT}/startup.sh diff --git a/app/config.docker.php b/app/config.docker.php index 5b66bcc..d547a1d 100644 --- a/app/config.docker.php +++ b/app/config.docker.php @@ -1,62 +1,26 @@ System), syslog - logs to system log. - // Setting this to blank uses PHP logging (usually to http server - // error.log). - // Note that feed updating daemons don't use this logging facility - // for normal output. + + define('PHP_EXECUTABLE', getenv('TTRSS_PHP_EXECUTABLE')); + // Path to PHP executable + + define('ENABLE_REGISTRATION', getenv('TTRSS_ENABLE_REGISTRATION')); + // Allow users to register themselves. Please be vary that allowing + // random people to access your tt-rss installation is a security risk + // and potentially might lead to data loss or server exploit. Disabled + // by default. + + define('REG_NOTIFY_ADDRESS', getenv('TTRSS_REG_NOTIFY_ADDRESS')); + // Email address to send new user notifications to. + + define('REG_MAX_USERS', getenv('TTRSS_REG_MAX_USERS')); + // Maximum amount of users which will be allowed to register on this + // system. 0 - no limit. + + define('FEEDBACK_URL', getenv('TTRSS_FEEDBACK_URL')); + // Displays an URL for users to provide feedback or comments regarding + // this instance of tt-rss. Can lead to a forum, contact email, etc. + + define('FORCE_ARTICLE_PURGE', getenv('TTRSS_FORCE_ARTICLE_PURGE')); + // When this option is not 0, users ability to control feed purging + // intervals is disabled and all articles (which are not starred) + // older than this amount of days are purged. define('CONFIG_VERSION', getenv('TTRSS_CONFIG_VERSION')); // Expected config version. Please update this option in config.php diff --git a/app/config.php-dist b/app/config.php-dist index eed1a69..deffa7e 100644 --- a/app/config.php-dist +++ b/app/config.php-dist @@ -1,169 +1,173 @@ System), syslog - logs to system log. - // Setting this to blank uses PHP logging (usually to http server - // error.log). - // Note that feed updating daemons don't use this logging facility - // for normal output. - - define('CONFIG_VERSION', 26); + + define('PHP_EXECUTABLE', '/usr/bin/php'); + // Path to PHP executable + + define('ENABLE_REGISTRATION', false); + // Allow users to register themselves. Please be vary that allowing + // random people to access your tt-rss installation is a security risk + // and potentially might lead to data loss or server exploit. Disabled + // by default. + + define('REG_NOTIFY_ADDRESS', 'user@your.domain.dom'); + // Email address to send new user notifications to. + + define('REG_MAX_USERS', 10); + // Maximum amount of users which will be allowed to register on this + // system. 0 - no limit. + + define('FEEDBACK_URL', ''); + // Displays an URL for users to provide feedback or comments regarding + // this instance of tt-rss. Can lead to a forum, contact email, etc. + + define('FORCE_ARTICLE_PURGE', 0); + // When this option is not 0, users ability to control feed purging + // intervals is disabled and all articles (which are not starred) + // older than this amount of days are purged. + + define('CONFIG_VERSION', 19); // Expected config version. Please update this option in config.php // if necessary (after migrating all new options from this file). diff --git a/app/startup.sh b/app/startup.sh index 48f4abd..e249bcb 100755 --- a/app/startup.sh +++ b/app/startup.sh @@ -1,6 +1,6 @@ #!/bin/sh -e -while ! pg_isready -h $TTRSS_DB_HOST -U $TTRSS_DB_USER; do +while ! PGPASSWORD=$TTRSS_DB_PASS psql -h $TTRSS_DB_HOST -U $TTRSS_DB_USER $TTRSS_DB_NAME -c 'select true'; do echo waiting until $TTRSS_DB_HOST is ready... sleep 3 done @@ -29,12 +29,13 @@ if [ ! -d $DST_DIR/.git ]; then mkdir -p $DST_DIR echo cloning tt-rss source from $SRC_REPO to $DST_DIR... git clone $SRC_REPO $DST_DIR || echo error: failed to clone master repository. + git checkout $TARGET_COMMIT || echo error: unable to checkout ${TARGET_COMMIT}. else echo updating tt-rss source in $DST_DIR from $SRC_REPO... cd $DST_DIR && \ git config core.filemode false && \ git config pull.rebase false && \ - git pull origin master || echo error: unable to update master repository. + git checkout $TARGET_COMMIT || echo error: unable to checkout ${TARGET_COMMIT}. fi if [ ! -e $DST_DIR/index.php ]; then @@ -55,9 +56,10 @@ else fi chown -R $OWNER_UID:$OWNER_GID $DST_DIR \ - /var/log/php8 + /var/log/ -for d in cache lock feed-icons; do +for d in lock icons; do + mkdir -p $DST_DIR/$d chmod 777 $DST_DIR/$d find $DST_DIR/$d -type f -exec chmod 666 {} \; done @@ -69,7 +71,7 @@ RESTORE_SCHEMA=${SCRIPT_ROOT}/restore-schema.sql.gz if [ -r $RESTORE_SCHEMA ]; then zcat $RESTORE_SCHEMA | $PSQL elif ! $PSQL -c 'select * from ttrss_version'; then - $PSQL < /var/www/html/tt-rss/schema/ttrss_schema_pgsql.sql + cat /var/www/html/tt-rss/schema/ttrss_schema_pgsql.sql | sed 's/tt-rss.spb.ru/tt-rss.org/g' | $PSQL fi if [ ! -s $DST_DIR/config.php ]; then @@ -85,9 +87,9 @@ fi # this was previously generated rm -f $DST_DIR/config.php.bak -cd $DST_DIR && sudo -E -u app php8 ./update.php --update-schema=force-yes +cd $DST_DIR && sudo -E -u app php ./update.php --update-schema=force-yes touch $DST_DIR/.app_is_ready -sudo -E -u app /usr/sbin/php-fpm8 -F +sudo -E -u app /usr/bin/php-fpm -F diff --git a/app/updater.sh b/app/updater.sh index 60627e7..353d63a 100755 --- a/app/updater.sh +++ b/app/updater.sh @@ -12,7 +12,7 @@ if ! id app; then adduser -D -h /var/www/html -G app -u $OWNER_UID app fi -while ! pg_isready -h $TTRSS_DB_HOST -U $TTRSS_DB_USER; do +while ! PGPASSWORD=$TTRSS_DB_PASS psql -h $TTRSS_DB_HOST -U $TTRSS_DB_USER $TTRSS_DB_NAME -c 'select true'; do echo waiting until $TTRSS_DB_HOST is ready... sleep 3 done @@ -24,4 +24,6 @@ while [ ! -s $DST_DIR/config.php -a -e $DST_DIR/.app_is_ready ]; do sleep 3 done -sudo -E -u app /usr/bin/php8 /var/www/html/tt-rss/update_daemon2.php +cd $DST_DIR + +sudo -E -u app /usr/bin/php /var/www/html/tt-rss/update_daemon2.php diff --git a/docker-compose.yml b/docker-compose.yml index 266807e..fe258cd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ version: '3' services: db: - image: postgres:12-alpine + image: postgres:9 restart: unless-stopped environment: - POSTGRES_USER=${TTRSS_DB_USER} @@ -24,19 +24,19 @@ services: depends_on: - db - backups: - build: - context: - ./app - restart: unless-stopped - env_file: - - .env - volumes: - - backups:/backups - - app:/var/www/html - depends_on: - - db - command: /opt/tt-rss/dcron.sh -f +# backups: +# build: +# context: +# ./app +# restart: unless-stopped +# env_file: +# - .env +# volumes: +# - backups:/backups +# - app:/var/www/html +# depends_on: +# - db +# command: /opt/tt-rss/dcron.sh -f updater: build: