لقد قمت بإعداد صورة Docker الخاصة بي لتشغيل Grav ، ولكن هناك مشكلة واحدة فقط لا أستطيع اكتشافها ، وهي أن واجهة مستخدم الويب تقول أن Cron غير متاح ، ولكن يبدو أنها تعمل فقط بخير مما يمكنني قوله.
هذا هو التحذير الذي أحاول إصلاحه:
لديّ crontab يعمل تحت مستخدم nginx ، والذي يبدو أنه يعمل بشكل جيد:
باستخدام CLI ، يمكنني التحقق من أن nginx
يحتوي على crontab الصحيح:
وفقط لمعرفة ما إذا كان سيحدث فرقًا ، أضفته إلى مستخدم الجذر أيضًا:
... لكنه لا يزال يعرض نفس التحذير في واجهة مستخدم الويب.
يوضح CLI أيضًا أنه يتم تشغيل النسخ الاحتياطية:
لست متأكدًا تمامًا مما يمكنني فعله أيضًا لمعرفة ما إذا كان بإمكاني إصلاح هذا التحذير.
ملف 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"]
شكرا لك على مساعدتك!!
أيضًا ، هناك شيء صغير لاحظته ، لكن لا يبدو أنه يحدث أي فرق:
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
لدي:
لذا يبدو أن مستخدم خادم الويب هو nginx ، الذي يحتوي على مجموعة crontab.
في أي مكان قد أكون في عداد المفقودين؟
أحصل على هذا أيضًا على تثبيت Debian 10 حيث لديّ crontab يعمل كجذر وخادم الويب هو www-data.
التعليق الأكثر فائدة
أول شيء يجب التحقق منه هو المستخدم الذي يعمل معه "خادم الويب" مقارنةً به عندما تكون في الجهاز. إذا كانوا مستخدمين مختلفين ، فستواجه هذه المشكلة. يمكن لخادم الويب فقط التحقق من crontab للمستخدم الذي يعمل به. أيضًا ، إصدار PHP هو "أفضل تخمين" يقوم به أمر عملية symfony عند محاولة تحديد ملف PHP الثنائي الذي يجب استخدامه. ليس من الذكاء استخدام إصدار معين كما يبدو أنك قمت بالإعداد (
php7
).