Grav-plugin-admin: Web-UI sagt "Cron nicht verfügbar", aber es funktioniert

Erstellt am 26. Aug. 2019  ·  4Kommentare  ·  Quelle: getgrav/grav-plugin-admin

Ich habe mein eigenes Docker-Image zum Ausführen von Grav eingerichtet, aber es gibt nur ein Problem, das ich anscheinend nicht herausfinden kann, und zwar sagt die Web-Benutzeroberfläche, dass Cron nicht verfügbar ist, aber dennoch scheint es einfach zu funktionieren gut soweit ich das beurteilen kann.

Dies ist die Warnung, die ich zu beheben versuche:
Grav - Cron not available

Ich habe die crontab unter dem nginx-Benutzer laufen, was gut zu funktionieren scheint:
Grav - Backups Still Running

Mit der CLI kann ich überprüfen, ob nginx die richtige crontab hat:
Grav - Crontab installed for nginx

Und nur um zu sehen, ob es einen Unterschied machen würde, habe ich es auch dem Root-Benutzer hinzugefügt:
Grav - Crontab installed for root
... Aber es zeigt immer noch dieselbe Warnung in der Web-Benutzeroberfläche an.

Die CLI zeigt auch an, dass die Backups ausgeführt werden:
Grav Scheduler

Ich bin mir nicht ganz sicher, was ich noch tun kann, um zu sehen, ob ich diese Warnung beheben kann.

Mein Dockerfile:

FROM nginx:stable-alpine
LABEL maintainer="William Miceli <[email protected]>"
USER root

ARG GRAV_VERSION

# Install Dependencies Needed For Grav, With Optional Modules To Help With Performance
RUN apk update && apk add --no-cache \
    dcron \
    php7 \
    php7-curl \
    php7-dom \
    php7-fpm \
    php7-gd \
    php7-json \
    php7-mbstring \
    php7-openssl \
    php7-pecl-apcu \
    php7-pecl-yaml \
    php7-session \
    php7-simplexml \
    php7-xml \
    php7-zip

# Configure NGINX For Grav
ADD https://raw.githubusercontent.com/getgrav/grav/c381bc83040e00c9a8ebe91ac3bda5fe0c217197/webserver-configs/nginx.conf /etc/nginx/conf.d/default.conf
RUN sed -i 's/root \/home\/USER\/www\/html/root \/var\/www/g' /etc/nginx/conf.d/default.conf \
    && sed -i 's/fastcgi_pass unix:\/var\/run\/php\/php7.2-fpm.sock;/fastcgi_pass unix:\/var\/run\/php-fpm.sock;/g' /etc/nginx/conf.d/default.conf \
    && sed -i 's/#listen 80;/listen 80;/g' /etc/nginx/conf.d/default.conf \
    && sed -i '23cuser = nginx' /etc/php7/php-fpm.d/www.conf \
    && sed -i '24cgroup = nginx' /etc/php7/php-fpm.d/www.conf \
    && sed -i '47clisten.owner = nginx' /etc/php7/php-fpm.d/www.conf \
    && sed -i '48clisten.group = nginx' /etc/php7/php-fpm.d/www.conf \
    && sed -i '49clisten.mode = 0660' /etc/php7/php-fpm.d/www.conf \
    && sed -i 's/listen = 127.0.0.1:9000/listen = \/var\/run\/php-fpm.sock/g' /etc/php7/php-fpm.d/www.conf

# Setup Cron
RUN (crontab -u nginx -l; echo "* * * * * cd /var/www;/usr/bin/php bin/grav scheduler 1>> /dev/null 2>&1") | crontab -u nginx -

# Prepare Grav Files
RUN mkdir -p /var/www /usr/src/grav/user \
    && apk add --no-cache ca-certificates \
    && apk add --no-cache --virtual .install-dependencies unzip wget \
    && wget -P /var/www https://github.com/getgrav/grav/releases/download/${GRAV_VERSION}/grav-admin-v${GRAV_VERSION}.zip \
    && unzip -q /var/www/grav-admin-v${GRAV_VERSION}.zip -d /var/www \
    && rm /var/www/grav-admin-v${GRAV_VERSION}.zip \
    && mv -v /var/www/grav-admin/* /var/www \
    && rm -rfv /var/www/grav-admin \
    && apk del .install-dependencies \
    && chown -R nginx:nginx /var/www \
    && mv -v /var/www/user/* /usr/src/grav/user

COPY /entrypoint.sh /

EXPOSE 80
CMD ["/bin/sh", "/entrypoint.sh"]

Git-Repository

Danke für deine Hilfe!!

evaluating

Hilfreichster Kommentar

Das erste, was Sie überprüfen müssen, ist, mit welchem ​​Benutzer der 'Webserver' läuft, verglichen mit dem, wenn Sie sich im Terminal befinden. Wenn es sich um verschiedene Benutzer handelt, werden Sie dieses Problem haben. Der Webserver kann nur die Crontab des Benutzers überprüfen, unter dem er läuft. Außerdem ist die PHP-Version eine "beste Vermutung", die der symfony-Prozessbefehl macht, wenn er versucht, die zu verwendende PHP-Binärdatei zu bestimmen. Es ist nicht schlau genug, eine bestimmte Version zu verwenden, wie Sie sie anscheinend eingerichtet haben ( php7 ).

Alle 4 Kommentare

Außerdem ist mir eine kleine Sache aufgefallen, die aber keinen Unterschied zu machen scheint:

CLI sagt als crontab zu haben:
(crontab -l; echo "* * * * * cd /var/www;/usr/bin/php7 bin/grav scheduler 1>> /dev/null 2>&1") | crontab -
Während die Web-Benutzeroberfläche sagt:
(crontab -l; echo "* * * * * cd /var/www;/usr/bin/php bin/grav scheduler 1>> /dev/null 2>&1") | crontab -
(Einer ist /usr/bin/php7 , der andere ist /usr/bin/php )

Ich weiß nicht, ob das etwas bedeuten würde, aber ich dachte, ich würde es erwähnen.

Das erste, was Sie überprüfen müssen, ist, mit welchem ​​Benutzer der 'Webserver' läuft, verglichen mit dem, wenn Sie sich im Terminal befinden. Wenn es sich um verschiedene Benutzer handelt, werden Sie dieses Problem haben. Der Webserver kann nur die Crontab des Benutzers überprüfen, unter dem er läuft. Außerdem ist die PHP-Version eine "beste Vermutung", die der symfony-Prozessbefehl macht, wenn er versucht, die zu verwendende PHP-Binärdatei zu bestimmen. Es ist nicht schlau genug, eine bestimmte Version zu verwenden, wie Sie sie anscheinend eingerichtet haben ( php7 ).

In meinem /etc/nginx/nginx.conf ich:
2019-08-27 21_12_52-Rancher - Brave

Der Webserver-Benutzer scheint also nginx zu sein, das die crontab eingestellt hat.

Irgendwo könnte ich fehlen?

Ich bekomme dies auch bei einer Debian 10-Installation, bei der meine Crontab als Root ausgeführt wird und der Webserver www-data ist.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen