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:
Tengo el crontab ejecutándose bajo el usuario nginx, que parece funcionar bien:
Usando la CLI, puedo verificar que nginx
tenga el crontab correcto:
Y solo para ver si haría una diferencia, también lo agregué al usuario 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:
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"]
¡¡Gracias por tu ayuda!!
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:
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.
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
).