Grav-plugin-admin: UI Web Mengatakan "Cron Tidak Tersedia" Namun Berfungsi

Dibuat pada 26 Agu 2019  ·  4Komentar  ·  Sumber: getgrav/grav-plugin-admin

Saya telah menyiapkan gambar Docker saya sendiri untuk menjalankan Grav, tetapi hanya ada satu masalah yang sepertinya tidak dapat saya pahami, dan itu adalah bahwa UI Web mengatakan bahwa Cron tidak tersedia, tetapi tampaknya berfungsi dengan baik baik dari apa yang saya tahu.

Ini adalah peringatan yang saya coba perbaiki:
Grav - Cron not available

Saya menjalankan crontab di bawah pengguna nginx, yang tampaknya berfungsi dengan baik:
Grav - Backups Still Running

Menggunakan CLI, saya dapat memverifikasi bahwa nginx memiliki crontab yang benar:
Grav - Crontab installed for nginx

Dan hanya untuk melihat apakah itu akan membuat perbedaan, saya menambahkannya ke pengguna root juga:
Grav - Crontab installed for root
... Tapi itu masih menunjukkan peringatan yang sama di UI Web.

CLI juga menunjukkan bahwa pencadangan sedang dijalankan:
Grav Scheduler

Saya tidak sepenuhnya yakin apa lagi yang bisa saya lakukan untuk melihat apakah saya bisa memperbaiki peringatan ini.

File Docker saya:

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 repo

Terima kasih untuk bantuannya!!

evaluating

Komentar yang paling membantu

Hal pertama yang harus diperiksa adalah pengguna yang menjalankan 'server web' dibandingkan dengan saat Anda berada di terminal. Jika mereka adalah pengguna yang berbeda, Anda akan mengalami masalah ini. Server web hanya dapat memeriksa crontab pengguna yang dijalankannya. Juga, versi PHP adalah 'tebakan terbaik' yang dibuat oleh perintah proses symfony ketika mencoba menentukan biner PHP mana yang akan digunakan. Tidak cukup pintar untuk menggunakan versi tertentu seperti yang tampaknya Anda siapkan ( php7 ).

Semua 4 komentar

Juga, hal kecil yang kebetulan saya perhatikan, tetapi sepertinya tidak ada bedanya:

CLI mengatakan memiliki sebagai crontab:
(crontab -l; echo "* * * * * cd /var/www;/usr/bin/php7 bin/grav scheduler 1>> /dev/null 2>&1") | crontab -
Sedangkan UI Web mengatakan:
(crontab -l; echo "* * * * * cd /var/www;/usr/bin/php bin/grav scheduler 1>> /dev/null 2>&1") | crontab -
(Satu adalah /usr/bin/php7 , yang lain adalah /usr/bin/php )

Tidak tahu apakah itu penting untuk apa pun, tetapi saya pikir saya akan menyebutkannya.

Hal pertama yang harus diperiksa adalah pengguna yang menjalankan 'server web' dibandingkan dengan saat Anda berada di terminal. Jika mereka adalah pengguna yang berbeda, Anda akan mengalami masalah ini. Server web hanya dapat memeriksa crontab pengguna yang dijalankannya. Juga, versi PHP adalah 'tebakan terbaik' yang dibuat oleh perintah proses symfony ketika mencoba menentukan biner PHP mana yang akan digunakan. Tidak cukup pintar untuk menggunakan versi tertentu seperti yang tampaknya Anda siapkan ( php7 ).

Dalam /etc/nginx/nginx.conf saya, saya memiliki:
2019-08-27 21_12_52-Rancher - Brave

Jadi pengguna server web tampaknya nginx, yang memiliki set crontab.

Di mana saja saya mungkin hilang?

Saya juga mendapatkan ini pada instalasi Debian 10 di mana crontab saya berjalan sebagai root dan server web adalah www-data.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

bgambier picture bgambier  ·  6Komentar

coolemur picture coolemur  ·  3Komentar

maciejmatu picture maciejmatu  ·  3Komentar

fourroses666 picture fourroses666  ·  4Komentar

artofthesmart picture artofthesmart  ·  4Komentar