Grav-plugin-admin: تقول واجهة مستخدم الويب "Cron غير متوفر" لكنها تعمل

تم إنشاؤها على ٢٦ أغسطس ٢٠١٩  ·  4تعليقات  ·  مصدر: getgrav/grav-plugin-admin

لقد قمت بإعداد صورة Docker الخاصة بي لتشغيل Grav ، ولكن هناك مشكلة واحدة فقط لا أستطيع اكتشافها ، وهي أن واجهة مستخدم الويب تقول أن Cron غير متاح ، ولكن يبدو أنها تعمل فقط بخير مما يمكنني قوله.

هذا هو التحذير الذي أحاول إصلاحه:
Grav - Cron not available

لديّ crontab يعمل تحت مستخدم nginx ، والذي يبدو أنه يعمل بشكل جيد:
Grav - Backups Still Running

باستخدام CLI ، يمكنني التحقق من أن nginx يحتوي على crontab الصحيح:
Grav - Crontab installed for nginx

وفقط لمعرفة ما إذا كان سيحدث فرقًا ، أضفته إلى مستخدم الجذر أيضًا:
Grav - Crontab installed for root
... لكنه لا يزال يعرض نفس التحذير في واجهة مستخدم الويب.

يوضح CLI أيضًا أنه يتم تشغيل النسخ الاحتياطية:
Grav Scheduler

لست متأكدًا تمامًا مما يمكنني فعله أيضًا لمعرفة ما إذا كان بإمكاني إصلاح هذا التحذير.

ملف 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"]

بوابة الريبو

شكرا لك على مساعدتك!!

evaluating

التعليق الأكثر فائدة

أول شيء يجب التحقق منه هو المستخدم الذي يعمل معه "خادم الويب" مقارنةً به عندما تكون في الجهاز. إذا كانوا مستخدمين مختلفين ، فستواجه هذه المشكلة. يمكن لخادم الويب فقط التحقق من crontab للمستخدم الذي يعمل به. أيضًا ، إصدار PHP هو "أفضل تخمين" يقوم به أمر عملية symfony عند محاولة تحديد ملف PHP الثنائي الذي يجب استخدامه. ليس من الذكاء استخدام إصدار معين كما يبدو أنك قمت بالإعداد ( php7 ).

ال 4 كومينتر

أيضًا ، هناك شيء صغير لاحظته ، لكن لا يبدو أنه يحدث أي فرق:

CLI تقول أن لديها كرونتاب:
(crontab -l; echo "* * * * * cd /var/www;/usr/bin/php7 bin/grav scheduler 1>> /dev/null 2>&1") | crontab -
بينما تقول واجهة مستخدم الويب:
(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 يعمل كجذر وخادم الويب هو www-data.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات