Grav-plugin-admin: La interfaz de usuario web dice "Cron no disponible", pero está funcionando

Creado en 26 ago. 2019  ·  4Comentarios  ·  Fuente: getgrav/grav-plugin-admin

Configuré mi propia imagen de Docker para ejecutar Grav, pero solo hay un problema que parece que no puedo resolver, y es que la interfaz de usuario web dice que Cron no está disponible, pero parece que funciona simplemente bien por lo que puedo decir.

Esta es la advertencia que estoy tratando de solucionar:
Grav - Cron not available

Tengo el crontab ejecutándose bajo el usuario nginx, que parece funcionar bien:
Grav - Backups Still Running

Usando la CLI, puedo verificar que nginx tenga el crontab correcto:
Grav - Crontab installed for nginx

Y solo para ver si haría una diferencia, también lo agregué al usuario root:
Grav - Crontab installed for root
... Pero todavía muestra la misma advertencia en la interfaz de usuario web.

La CLI también muestra que se están ejecutando las copias de seguridad:
Grav Scheduler

No estoy completamente seguro de qué más puedo hacer para ver si puedo solucionar esta advertencia.

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

Repositorio de Git

¡¡Gracias por tu ayuda!!

evaluating

Comentario más útil

Lo primero que debe verificar es con qué usuario se ejecuta el 'servidor web' en comparación con cuando está en la terminal. Si son usuarios diferentes, tendrá este problema. El servidor web solo puede verificar el crontab del usuario con el que se está ejecutando. Además, la versión de PHP es una "mejor suposición" que hace el comando de proceso de Symfony al intentar determinar qué binario de PHP utilizar. No es lo suficientemente inteligente como para usar una versión específica como la que parece tener configurada ( php7 ).

Todos 4 comentarios

Además, noté una pequeña cosa, pero que no parece hacer ninguna diferencia:

CLI dice tener como crontab:
(crontab -l; echo "* * * * * cd /var/www;/usr/bin/php7 bin/grav scheduler 1>> /dev/null 2>&1") | crontab -
Mientras que la interfaz de usuario web dice:
(crontab -l; echo "* * * * * cd /var/www;/usr/bin/php bin/grav scheduler 1>> /dev/null 2>&1") | crontab -
(Uno es /usr/bin/php7 , otro es /usr/bin/php )

No sé si eso importaría a algo, pero pensé que lo mencionaría.

Lo primero que debe verificar es con qué usuario se ejecuta el 'servidor web' en comparación con cuando está en la terminal. Si son usuarios diferentes, tendrá este problema. El servidor web solo puede verificar el crontab del usuario con el que se está ejecutando. Además, la versión de PHP es una "mejor suposición" que hace el comando de proceso de Symfony al intentar determinar qué binario de PHP utilizar. No es lo suficientemente inteligente como para usar una versión específica como la que parece tener configurada ( php7 ).

Dentro de mi /etc/nginx/nginx.conf tengo:
2019-08-27 21_12_52-Rancher - Brave

Entonces, el usuario del servidor web parece ser nginx, que tiene configurado el crontab.

¿En algún lugar donde pueda estar perdiendo?

También obtengo esto en una instalación de Debian 10 donde tengo mi crontab ejecutándose como root y el servidor web es www-data.

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

danzinger picture danzinger  ·  5Comentarios

ritchiedalto picture ritchiedalto  ·  6Comentarios

bgambier picture bgambier  ·  6Comentarios

maciejmatu picture maciejmatu  ·  3Comentarios

coolemur picture coolemur  ·  3Comentarios