Grav-plugin-admin: Web UI 显示“Cron 不可用”但它正在工作

创建于 2019-08-26  ·  4评论  ·  资料来源: getgrav/grav-plugin-admin

我已经为运行 Grav 设置了自己的 Docker 映像,但是我似乎无法弄清楚一个问题,即 Web UI 显示 Cron 不可用,但它似乎只是在工作据我所知,很好。

这是我正在尝试修复的警告:
Grav - Cron not available

我在 nginx 用户下运行了 crontab,这似乎工作得很好:
Grav - Backups Still Running

使用 CLI,我可以验证nginx是否具有正确的 crontab:
Grav - Crontab installed for nginx

只是为了看看它是否会有所作为,我也将它添加到 root 用户:
Grav - Crontab installed for root
...但它仍然在 Web UI 中显示相同的警告。

CLI 还显示正在运行备份:
Grav Scheduler

我不完全确定我还能做些什么来查看是否可以修复此警告。

我的 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 仓库

感谢您的帮助!!

evaluating

最有用的评论

首先要检查的是“网络服务器”与您在终端中时运行的用户相比。 如果他们是不同的用户,你就会遇到这个问题。 网络服务器只能检查它运行的用户的 crontab。 此外,PHP 版本是 symfony 进程命令在尝试确定要使用的 PHP 二进制文件时所做的“最佳猜测”。 使用您似乎已经设置的特定版本( php7 )还不够聪明。

所有4条评论

另外,我碰巧注意到了一件小事,但似乎没有任何区别:

CLI 说有作为 crontab:
(crontab -l; echo "* * * * * cd /var/www;/usr/bin/php7 bin/grav scheduler 1>> /dev/null 2>&1") | crontab -
而 Web UI 说:
(crontab -l; echo "* * * * * cd /var/www;/usr/bin/php bin/grav scheduler 1>> /dev/null 2>&1") | crontab -
(一个是/usr/bin/php7 ,另一个是/usr/bin/php

不知道这是否有任何影响,但我想我会提到。

首先要检查的是“网络服务器”与您在终端中时运行的用户相比。 如果他们是不同的用户,你就会遇到这个问题。 网络服务器只能检查它运行的用户的 crontab。 此外,PHP 版本是 symfony 进程命令在尝试确定要使用的 PHP 二进制文件时所做的“最佳猜测”。 使用您似乎已经设置的特定版本( php7 )还不够聪明。

在我的/etc/nginx/nginx.conf我有:
2019-08-27 21_12_52-Rancher - Brave

所以网络服务器用户似乎是nginx,它设置了crontab。

我可能会失踪的任何地方?

我也在 Debian 10 安装中得到了这个,我的 crontab 以 root 身份运行,网络服务器是 www-data。

此页面是否有帮助?
0 / 5 - 0 等级