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:
Saya menjalankan crontab di bawah pengguna nginx, yang tampaknya berfungsi dengan baik:
Menggunakan CLI, saya dapat memverifikasi bahwa nginx
memiliki crontab yang benar:
Dan hanya untuk melihat apakah itu akan membuat perbedaan, saya menambahkannya ke pengguna root juga:
... Tapi itu masih menunjukkan peringatan yang sama di UI Web.
CLI juga menunjukkan bahwa pencadangan sedang dijalankan:
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"]
Terima kasih untuk bantuannya!!
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:
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.
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
).