Grav-plugin-admin: L'interface utilisateur Web indique "Cron non disponible" mais cela fonctionne

Créé le 26 août 2019  ·  4Commentaires  ·  Source: getgrav/grav-plugin-admin

J'ai configuré ma propre image Docker pour exécuter Grav, mais il y a juste un problème que je n'arrive pas à comprendre, et c'est que l'interface utilisateur Web dit que Cron n'est pas disponible, mais pourtant il semble fonctionner juste bien d'après ce que je peux dire.

Voici l'avertissement que j'essaie de corriger :
Grav - Cron not available

J'ai la crontab qui s'exécute sous l'utilisateur nginx, qui semble fonctionner très bien :
Grav - Backups Still Running

À l'aide de la CLI, je peux vérifier que nginx a le bon crontab :
Grav - Crontab installed for nginx

Et juste pour voir si cela ferait une différence, je l'ai également ajouté à l'utilisateur root :
Grav - Crontab installed for root
... Mais il affiche toujours le même avertissement dans l'interface utilisateur Web.

La CLI montre également que les sauvegardes sont exécutées :
Grav Scheduler

Je ne suis pas tout à fait sûr de ce que je peux faire d'autre pour voir si je peux corriger cet avertissement.

Mon fichier Docker :

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"]

Dépôt Git

Merci de votre aide!!

evaluating

Commentaire le plus utile

La première chose à vérifier est l'utilisateur avec lequel le "serveur Web" s'exécute par rapport à lorsque vous êtes dans le terminal. S'il s'agit d'utilisateurs différents, vous allez avoir ce problème. Le serveur Web ne peut vérifier que le crontab de l'utilisateur sous lequel il s'exécute. De plus, la version PHP est une « meilleure estimation » que fait la commande de processus symfony lorsqu'elle essaie de déterminer quel binaire PHP utiliser. Il n'est pas assez intelligent d'utiliser une version spécifique comme celle que vous semblez avoir configurée ( php7 ).

Tous les 4 commentaires

Aussi, petite chose que j'ai remarquée, mais qui ne semble pas faire de différence :

CLI dit d'avoir comme crontab :
(crontab -l; echo "* * * * * cd /var/www;/usr/bin/php7 bin/grav scheduler 1>> /dev/null 2>&1") | crontab -
Alors que l'interface utilisateur Web dit :
(crontab -l; echo "* * * * * cd /var/www;/usr/bin/php bin/grav scheduler 1>> /dev/null 2>&1") | crontab -
(L'un est /usr/bin/php7 , l'autre est /usr/bin/php )

Je ne sais pas si cela aurait une importance pour quoi que ce soit, mais j'ai pensé que je le mentionnerais.

La première chose à vérifier est l'utilisateur avec lequel le "serveur Web" s'exécute par rapport à lorsque vous êtes dans le terminal. S'il s'agit d'utilisateurs différents, vous allez avoir ce problème. Le serveur Web ne peut vérifier que le crontab de l'utilisateur sous lequel il s'exécute. De plus, la version PHP est une « meilleure estimation » que fait la commande de processus symfony lorsqu'elle essaie de déterminer quel binaire PHP utiliser. Il n'est pas assez intelligent d'utiliser une version spécifique comme celle que vous semblez avoir configurée ( php7 ).

Dans mon /etc/nginx/nginx.conf j'ai :
2019-08-27 21_12_52-Rancher - Brave

L'utilisateur du serveur Web semble donc être nginx, qui a défini le crontab.

Quelque part où je pourrais être absent ?

Je reçois également cela sur une installation Debian 10 où ma crontab s'exécute en tant que root et le serveur Web est www-data.

Cette page vous a été utile?
0 / 5 - 0 notes