การเข้าสู่ระบบ nginx เพื่อ access.log.1 แทนที่จะเป็น access.log, logrotate ล้มเหลว?


20

ฉันมีอินสแตนซ์ nginx ที่ตั้งค่าให้เข้าสู่การเข้าถึง /var/log/nginx/access.log และข้อผิดพลาดในการ /var/log/nginx/errors.log แต่ทันทีที่ logrotate ทำงานในแต่ละสัปดาห์ไฟล์จะถูกย้ายไปที่ * .log.1 และไฟล์ * .log ใหม่ถูกสร้างขึ้น แต่ nginx ยังคงเข้าสู่ระบบไฟล์ log.1 แทนไฟล์. log ใหม่ (และไม่มีอะไรได้รับ gzipped) ครั้งแรกที่ฉันสังเกตเห็นว่ามันเป็นเวลา 3 สัปดาห์นับตั้งแต่การหมุนบันทึกและบันทึกเริ่มมีขนาดใหญ่มาก การเรียกใช้kill -HUP `cat /run/nginx.pid`nginx เริ่มต้นการบันทึกลงในตำแหน่งที่ถูกต้องอีกครั้ง แต่ปัญหาเริ่มขึ้นอีกครั้งในสัปดาห์หน้า

เหตุผลที่สำคัญกว่านี้น่าผิดหวังคือฉันมีบันทึกที่ตั้งให้อัพโหลดไปยัง Loggly ผ่านทาง rsyslog และเมื่อ nginx หยุดการบันทึกลงในไฟล์ที่ฉันมีการโพล rsyslog แล้วสิ่งต่างๆก็หยุดอัพโหลดและฉันไม่ได้รับการเตือนใด ๆ

ฉันสงสัยว่ามีบางอย่างที่เกี่ยวข้องกับการรีสตาร์ท nginx หรือโหลดการกำหนดค่าใหม่เพราะมันไม่ได้เริ่มจนกว่าฉันจะทำการเปลี่ยนแปลงการกำหนดค่าและโหลดการตั้งค่าใหม่ในแบบที่ฉันคิดว่าเป็นเรื่องปกติ ฉันพยายามเรียกใช้kill -USR1 `cat /run/nginx.pid`แต่ไฟล์ยังคงได้รับการบันทึกลงในตำแหน่งที่ไม่ถูกต้องจนกว่าฉันจะรันkill -HUP `cat /run/nginx.pid`ซึ่งฉันรู้อยู่แล้วว่าไม่ได้แก้ปัญหา

ความคิดของสิ่งที่เกิดขึ้น? ฉันยอมรับว่าฉันไม่มีความเชี่ยวชาญในการบริหาร logrotate หรือ nginx แต่ Googles ของฉันทำให้ฉันทำสิ่งนี้ไม่ได้

นี่คือสคริปต์เข้าสู่ระบบ nginx ของฉันและแจ้งให้เราทราบหากมีสิ่งอื่นที่คุณอาจต้องการดู nginx.conf ไม่มีอะไรพิเศษเกี่ยวกับการบันทึกนอกจากการกำหนดตำแหน่งเอาต์พุต

/var/log/nginx/*.log {
        weekly
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 0640 www-data adm
        sharedscripts
        prerotate
                if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
                        run-parts /etc/logrotate.d/httpd-prerotate; \
                fi \
        endscript
        postrotate
                [ -s /run/nginx.pid ] && kill -USR1 `cat /run/nginx.pid`
        endscript
}

แก้ไข: ฉันคิดว่าฉันพบปัญหา นี่คือผลลัพธ์ของการรัน logrotate ในโหมด debug:

$ sudo logrotate --force -d /etc/logrotate.d/nginx
reading config file /etc/logrotate.d/nginx

Handling 1 logs

rotating pattern: /var/log/nginx/*.log  forced from command line (52 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/nginx/access.log
  log needs rotating
considering log /var/log/nginx/error.log
  log needs rotating
rotating log /var/log/nginx/access.log, log->rotateCount is 52
dateext suffix '-20141023'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
previous log /var/log/nginx/access.log.1 does not exist
renaming /var/log/nginx/access.log.52.gz to /var/log/nginx/access.log.53.gz (rotatecount 52, logstart 1, i 52), 
renaming /var/log/nginx/access.log.51.gz to /var/log/nginx/access.log.52.gz (rotatecount 52, logstart 1, i 51), 
renaming /var/log/nginx/access.log.50.gz to /var/log/nginx/access.log.51.gz (rotatecount 52, logstart 1, i 50), 
renaming /var/log/nginx/access.log.49.gz to /var/log/nginx/access.log.50.gz (rotatecount 52, logstart 1, i 49), 
renaming /var/log/nginx/access.log.48.gz to /var/log/nginx/access.log.49.gz (rotatecount 52, logstart 1, i 48), 
renaming /var/log/nginx/access.log.47.gz to /var/log/nginx/access.log.48.gz (rotatecount 52, logstart 1, i 47), 
renaming /var/log/nginx/access.log.46.gz to /var/log/nginx/access.log.47.gz (rotatecount 52, logstart 1, i 46), 
renaming /var/log/nginx/access.log.45.gz to /var/log/nginx/access.log.46.gz (rotatecount 52, logstart 1, i 45), 
renaming /var/log/nginx/access.log.44.gz to /var/log/nginx/access.log.45.gz (rotatecount 52, logstart 1, i 44), 
renaming /var/log/nginx/access.log.43.gz to /var/log/nginx/access.log.44.gz (rotatecount 52, logstart 1, i 43), 
renaming /var/log/nginx/access.log.42.gz to /var/log/nginx/access.log.43.gz (rotatecount 52, logstart 1, i 42), 
renaming /var/log/nginx/access.log.41.gz to /var/log/nginx/access.log.42.gz (rotatecount 52, logstart 1, i 41), 
renaming /var/log/nginx/access.log.40.gz to /var/log/nginx/access.log.41.gz (rotatecount 52, logstart 1, i 40), 
renaming /var/log/nginx/access.log.39.gz to /var/log/nginx/access.log.40.gz (rotatecount 52, logstart 1, i 39), 
renaming /var/log/nginx/access.log.38.gz to /var/log/nginx/access.log.39.gz (rotatecount 52, logstart 1, i 38), 
renaming /var/log/nginx/access.log.37.gz to /var/log/nginx/access.log.38.gz (rotatecount 52, logstart 1, i 37), 
renaming /var/log/nginx/access.log.36.gz to /var/log/nginx/access.log.37.gz (rotatecount 52, logstart 1, i 36), 
renaming /var/log/nginx/access.log.35.gz to /var/log/nginx/access.log.36.gz (rotatecount 52, logstart 1, i 35), 
renaming /var/log/nginx/access.log.34.gz to /var/log/nginx/access.log.35.gz (rotatecount 52, logstart 1, i 34), 
renaming /var/log/nginx/access.log.33.gz to /var/log/nginx/access.log.34.gz (rotatecount 52, logstart 1, i 33), 
renaming /var/log/nginx/access.log.32.gz to /var/log/nginx/access.log.33.gz (rotatecount 52, logstart 1, i 32), 
renaming /var/log/nginx/access.log.31.gz to /var/log/nginx/access.log.32.gz (rotatecount 52, logstart 1, i 31), 
renaming /var/log/nginx/access.log.30.gz to /var/log/nginx/access.log.31.gz (rotatecount 52, logstart 1, i 30), 
renaming /var/log/nginx/access.log.29.gz to /var/log/nginx/access.log.30.gz (rotatecount 52, logstart 1, i 29), 
renaming /var/log/nginx/access.log.28.gz to /var/log/nginx/access.log.29.gz (rotatecount 52, logstart 1, i 28), 
renaming /var/log/nginx/access.log.27.gz to /var/log/nginx/access.log.28.gz (rotatecount 52, logstart 1, i 27), 
renaming /var/log/nginx/access.log.26.gz to /var/log/nginx/access.log.27.gz (rotatecount 52, logstart 1, i 26), 
renaming /var/log/nginx/access.log.25.gz to /var/log/nginx/access.log.26.gz (rotatecount 52, logstart 1, i 25), 
renaming /var/log/nginx/access.log.24.gz to /var/log/nginx/access.log.25.gz (rotatecount 52, logstart 1, i 24), 
renaming /var/log/nginx/access.log.23.gz to /var/log/nginx/access.log.24.gz (rotatecount 52, logstart 1, i 23), 
renaming /var/log/nginx/access.log.22.gz to /var/log/nginx/access.log.23.gz (rotatecount 52, logstart 1, i 22), 
renaming /var/log/nginx/access.log.21.gz to /var/log/nginx/access.log.22.gz (rotatecount 52, logstart 1, i 21), 
renaming /var/log/nginx/access.log.20.gz to /var/log/nginx/access.log.21.gz (rotatecount 52, logstart 1, i 20), 
renaming /var/log/nginx/access.log.19.gz to /var/log/nginx/access.log.20.gz (rotatecount 52, logstart 1, i 19), 
renaming /var/log/nginx/access.log.18.gz to /var/log/nginx/access.log.19.gz (rotatecount 52, logstart 1, i 18), 
renaming /var/log/nginx/access.log.17.gz to /var/log/nginx/access.log.18.gz (rotatecount 52, logstart 1, i 17), 
renaming /var/log/nginx/access.log.16.gz to /var/log/nginx/access.log.17.gz (rotatecount 52, logstart 1, i 16), 
renaming /var/log/nginx/access.log.15.gz to /var/log/nginx/access.log.16.gz (rotatecount 52, logstart 1, i 15), 
renaming /var/log/nginx/access.log.14.gz to /var/log/nginx/access.log.15.gz (rotatecount 52, logstart 1, i 14), 
renaming /var/log/nginx/access.log.13.gz to /var/log/nginx/access.log.14.gz (rotatecount 52, logstart 1, i 13), 
renaming /var/log/nginx/access.log.12.gz to /var/log/nginx/access.log.13.gz (rotatecount 52, logstart 1, i 12), 
renaming /var/log/nginx/access.log.11.gz to /var/log/nginx/access.log.12.gz (rotatecount 52, logstart 1, i 11), 
renaming /var/log/nginx/access.log.10.gz to /var/log/nginx/access.log.11.gz (rotatecount 52, logstart 1, i 10), 
renaming /var/log/nginx/access.log.9.gz to /var/log/nginx/access.log.10.gz (rotatecount 52, logstart 1, i 9), 
renaming /var/log/nginx/access.log.8.gz to /var/log/nginx/access.log.9.gz (rotatecount 52, logstart 1, i 8), 
renaming /var/log/nginx/access.log.7.gz to /var/log/nginx/access.log.8.gz (rotatecount 52, logstart 1, i 7), 
renaming /var/log/nginx/access.log.6.gz to /var/log/nginx/access.log.7.gz (rotatecount 52, logstart 1, i 6), 
renaming /var/log/nginx/access.log.5.gz to /var/log/nginx/access.log.6.gz (rotatecount 52, logstart 1, i 5), 
renaming /var/log/nginx/access.log.4.gz to /var/log/nginx/access.log.5.gz (rotatecount 52, logstart 1, i 4), 
renaming /var/log/nginx/access.log.3.gz to /var/log/nginx/access.log.4.gz (rotatecount 52, logstart 1, i 3), 
renaming /var/log/nginx/access.log.2.gz to /var/log/nginx/access.log.3.gz (rotatecount 52, logstart 1, i 2), 
renaming /var/log/nginx/access.log.1.gz to /var/log/nginx/access.log.2.gz (rotatecount 52, logstart 1, i 1), 
renaming /var/log/nginx/access.log.0.gz to /var/log/nginx/access.log.1.gz (rotatecount 52, logstart 1, i 0), 
rotating log /var/log/nginx/error.log, log->rotateCount is 52
dateext suffix '-20141023'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
previous log /var/log/nginx/error.log.1 does not exist
renaming /var/log/nginx/error.log.52.gz to /var/log/nginx/error.log.53.gz (rotatecount 52, logstart 1, i 52), 
renaming /var/log/nginx/error.log.51.gz to /var/log/nginx/error.log.52.gz (rotatecount 52, logstart 1, i 51), 
renaming /var/log/nginx/error.log.50.gz to /var/log/nginx/error.log.51.gz (rotatecount 52, logstart 1, i 50), 
renaming /var/log/nginx/error.log.49.gz to /var/log/nginx/error.log.50.gz (rotatecount 52, logstart 1, i 49), 
renaming /var/log/nginx/error.log.48.gz to /var/log/nginx/error.log.49.gz (rotatecount 52, logstart 1, i 48), 
renaming /var/log/nginx/error.log.47.gz to /var/log/nginx/error.log.48.gz (rotatecount 52, logstart 1, i 47), 
renaming /var/log/nginx/error.log.46.gz to /var/log/nginx/error.log.47.gz (rotatecount 52, logstart 1, i 46), 
renaming /var/log/nginx/error.log.45.gz to /var/log/nginx/error.log.46.gz (rotatecount 52, logstart 1, i 45), 
renaming /var/log/nginx/error.log.44.gz to /var/log/nginx/error.log.45.gz (rotatecount 52, logstart 1, i 44), 
renaming /var/log/nginx/error.log.43.gz to /var/log/nginx/error.log.44.gz (rotatecount 52, logstart 1, i 43), 
renaming /var/log/nginx/error.log.42.gz to /var/log/nginx/error.log.43.gz (rotatecount 52, logstart 1, i 42), 
renaming /var/log/nginx/error.log.41.gz to /var/log/nginx/error.log.42.gz (rotatecount 52, logstart 1, i 41), 
renaming /var/log/nginx/error.log.40.gz to /var/log/nginx/error.log.41.gz (rotatecount 52, logstart 1, i 40), 
renaming /var/log/nginx/error.log.39.gz to /var/log/nginx/error.log.40.gz (rotatecount 52, logstart 1, i 39), 
renaming /var/log/nginx/error.log.38.gz to /var/log/nginx/error.log.39.gz (rotatecount 52, logstart 1, i 38), 
renaming /var/log/nginx/error.log.37.gz to /var/log/nginx/error.log.38.gz (rotatecount 52, logstart 1, i 37), 
renaming /var/log/nginx/error.log.36.gz to /var/log/nginx/error.log.37.gz (rotatecount 52, logstart 1, i 36), 
renaming /var/log/nginx/error.log.35.gz to /var/log/nginx/error.log.36.gz (rotatecount 52, logstart 1, i 35), 
renaming /var/log/nginx/error.log.34.gz to /var/log/nginx/error.log.35.gz (rotatecount 52, logstart 1, i 34), 
renaming /var/log/nginx/error.log.33.gz to /var/log/nginx/error.log.34.gz (rotatecount 52, logstart 1, i 33), 
renaming /var/log/nginx/error.log.32.gz to /var/log/nginx/error.log.33.gz (rotatecount 52, logstart 1, i 32), 
renaming /var/log/nginx/error.log.31.gz to /var/log/nginx/error.log.32.gz (rotatecount 52, logstart 1, i 31), 
renaming /var/log/nginx/error.log.30.gz to /var/log/nginx/error.log.31.gz (rotatecount 52, logstart 1, i 30), 
renaming /var/log/nginx/error.log.29.gz to /var/log/nginx/error.log.30.gz (rotatecount 52, logstart 1, i 29), 
renaming /var/log/nginx/error.log.28.gz to /var/log/nginx/error.log.29.gz (rotatecount 52, logstart 1, i 28), 
renaming /var/log/nginx/error.log.27.gz to /var/log/nginx/error.log.28.gz (rotatecount 52, logstart 1, i 27), 
renaming /var/log/nginx/error.log.26.gz to /var/log/nginx/error.log.27.gz (rotatecount 52, logstart 1, i 26), 
renaming /var/log/nginx/error.log.25.gz to /var/log/nginx/error.log.26.gz (rotatecount 52, logstart 1, i 25), 
renaming /var/log/nginx/error.log.24.gz to /var/log/nginx/error.log.25.gz (rotatecount 52, logstart 1, i 24), 
renaming /var/log/nginx/error.log.23.gz to /var/log/nginx/error.log.24.gz (rotatecount 52, logstart 1, i 23), 
renaming /var/log/nginx/error.log.22.gz to /var/log/nginx/error.log.23.gz (rotatecount 52, logstart 1, i 22), 
renaming /var/log/nginx/error.log.21.gz to /var/log/nginx/error.log.22.gz (rotatecount 52, logstart 1, i 21), 
renaming /var/log/nginx/error.log.20.gz to /var/log/nginx/error.log.21.gz (rotatecount 52, logstart 1, i 20), 
renaming /var/log/nginx/error.log.19.gz to /var/log/nginx/error.log.20.gz (rotatecount 52, logstart 1, i 19), 
renaming /var/log/nginx/error.log.18.gz to /var/log/nginx/error.log.19.gz (rotatecount 52, logstart 1, i 18), 
renaming /var/log/nginx/error.log.17.gz to /var/log/nginx/error.log.18.gz (rotatecount 52, logstart 1, i 17), 
renaming /var/log/nginx/error.log.16.gz to /var/log/nginx/error.log.17.gz (rotatecount 52, logstart 1, i 16), 
renaming /var/log/nginx/error.log.15.gz to /var/log/nginx/error.log.16.gz (rotatecount 52, logstart 1, i 15), 
renaming /var/log/nginx/error.log.14.gz to /var/log/nginx/error.log.15.gz (rotatecount 52, logstart 1, i 14), 
renaming /var/log/nginx/error.log.13.gz to /var/log/nginx/error.log.14.gz (rotatecount 52, logstart 1, i 13), 
renaming /var/log/nginx/error.log.12.gz to /var/log/nginx/error.log.13.gz (rotatecount 52, logstart 1, i 12), 
renaming /var/log/nginx/error.log.11.gz to /var/log/nginx/error.log.12.gz (rotatecount 52, logstart 1, i 11), 
renaming /var/log/nginx/error.log.10.gz to /var/log/nginx/error.log.11.gz (rotatecount 52, logstart 1, i 10), 
renaming /var/log/nginx/error.log.9.gz to /var/log/nginx/error.log.10.gz (rotatecount 52, logstart 1, i 9), 
renaming /var/log/nginx/error.log.8.gz to /var/log/nginx/error.log.9.gz (rotatecount 52, logstart 1, i 8), 
renaming /var/log/nginx/error.log.7.gz to /var/log/nginx/error.log.8.gz (rotatecount 52, logstart 1, i 7), 
renaming /var/log/nginx/error.log.6.gz to /var/log/nginx/error.log.7.gz (rotatecount 52, logstart 1, i 6), 
renaming /var/log/nginx/error.log.5.gz to /var/log/nginx/error.log.6.gz (rotatecount 52, logstart 1, i 5), 
renaming /var/log/nginx/error.log.4.gz to /var/log/nginx/error.log.5.gz (rotatecount 52, logstart 1, i 4), 
renaming /var/log/nginx/error.log.3.gz to /var/log/nginx/error.log.4.gz (rotatecount 52, logstart 1, i 3), 
renaming /var/log/nginx/error.log.2.gz to /var/log/nginx/error.log.3.gz (rotatecount 52, logstart 1, i 2), 
renaming /var/log/nginx/error.log.1.gz to /var/log/nginx/error.log.2.gz (rotatecount 52, logstart 1, i 1), 
renaming /var/log/nginx/error.log.0.gz to /var/log/nginx/error.log.1.gz (rotatecount 52, logstart 1, i 0), 
running prerotate script
running script with arg /var/log/nginx/*.log : "
        if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
            run-parts /etc/logrotate.d/httpd-prerotate; \
        fi \
"
renaming /var/log/nginx/access.log to /var/log/nginx/access.log.1
creating new /var/log/nginx/access.log mode = 0640 uid = 33 gid = 4
renaming /var/log/nginx/error.log to /var/log/nginx/error.log.1
creating new /var/log/nginx/error.log mode = 0640 uid = 33 gid = 4
running postrotate script
running script with arg /var/log/nginx/*.log : "
        [ -s /run/nginx.pid ] && kill -USR1 `cat /run/nginx.pid`
"
removing old log /var/log/nginx/access.log.53.gz
error: error opening /var/log/nginx/access.log.53.gz: No such file or directory

อย่างไรก็ตามมีเพียงที่เก็บได้ถึงประมาณ .log.8.gz * ดังนั้น logrotate /var/log/nginx/access.log.53.gzล้มเหลวเมื่อมันพยายามที่จะมีปฏิสัมพันธ์กับ ทำไมบนโลกนี้จึงพยายามทำเช่นนั้น? ฉันคิดว่าฉันจำเป็นต้องแตะไฟล์ปลอมเพื่อกรอกข้อมูลหรือไม่ ดูเหมือนว่าผิดอย่างใด


ไม่มีเหตุผลที่ความเชื่อมั่นแบบ logrotate นี้จะทำงานทุกคืนด้วยweeklyความถี่ ตรวจสอบว่าคุณมีสิ่งอื่นที่รบกวนกับ nginx หรือไม่
Xavier Lucas

@ Xavier อามันถูกตั้งค่าให้ทำงานทุกสัปดาห์ แต่ฉันสับสนตัวเอง ฉันพยายามแก้ไขมันเมื่อวานนี้ แต่ปัญหามันกลับมาค้างคืน ฉันคิดว่าฉันเลือกวันก่อนที่บันทึกจะถูกตั้งค่าให้หมุนเพื่อทำการเปลี่ยนแปลงและเนื่องจากมันเปลี่ยนไปเมื่อคืนฉันจึงสันนิษฐาน (โดยไม่สนใจ) ว่ามันถูกตั้งให้หมุนทุกคืน ฉันได้อัปเดตโพสต์ของฉันเพื่อให้สะท้อนถึงสิ่งที่เกิดขึ้นอย่างแม่นยำมากขึ้น
Ben Torell

ดูเหมือนว่าเป็นข้อบกพร่องให้ฉันหรือไฟล์สถานะของคุณเสียหาย ( /var/lib/logrotate/status) การลบและลองใหม่อาจแก้ไขได้ถ้าไม่เปิดตั๋ว
Xavier Lucas

คำตอบ:


38

Bah ในที่สุดฉันก็พบคำตอบหลังจากขุดเป็นเวลานาน ปัญหาในกรณีของฉันไม่ใช่ว่า logrotate ล้มเหลว ข้อความแสดงข้อผิดพลาดนั้นใช้ได้และไม่ได้หยุดลงทะเบียนจริง แต่ปัญหาก็คือ Nginx ที่ไม่ได้ปล่อยจับไฟล์ไปยังแฟ้มบันทึกเมื่อได้รับสัญญาณจาก-USR1 killเรื่องสั้นสั้น ๆ เหตุผลที่มันไม่ได้ทำการโหลดไฟล์บันทึกซ้ำอีกครั้งนั้นเป็นเพราะ/var/log/nginxโฟลเดอร์นั้นไม่ได้เป็นของผู้ใช้คนเดียวกับกระบวนการของคนงาน nginx (เป็นเจ้าของโดยข้อมูล www, ทำงานภายใต้เว็บ) ฉันไม่รู้เลยว่าการเปลี่ยนแปลงนั้น (อาจเป็นเพราะเซิร์ฟเวอร์นี้ได้รับการจัดใหม่เมื่อเร็ว ๆ นี้) แต่การเปลี่ยนโฟลเดอร์ที่จะเป็นเจ้าของโดยผู้ใช้รายเดียวกันกับกระบวนการของผู้ปฏิบัติงาน nginx (และการแก้ไขไฟล์ logrotate เพื่อสร้างบันทึกใหม่เป็นเว็บ)


มีปัญหานี้บางครั้ง (อาจจะเสมอ!) - และคิดว่าผู้กระทำผิดจะต้องถูกฝังอยู่ที่ไหนสักแห่งภายในการกำหนดค่า logrotate ทำได้ดี!
แหวนØ

3
อาจจะคุ้มค่าที่จะพูดถึง: service nginx reloadหลังจากแก้ไขสิทธิ์ทำ หลังจากนั้นบันทึกของฉันมาถึง.logและไม่ใช่.log.1
soupdiver

ตรวจสอบให้แน่ใจว่าไม่เพียง แต่ไฟล์ของคุณaccess.logและerror.logมีสิทธิ์การเข้าถึง/var/log/nginxไดเรกทอรีควรมีสิทธิ์ดำเนินการ
Yuvaraj Loganathan

2

ฉันมีปัญหาเดียวกันใน Ubuntu 14.04 แต่หลังจากอ่านคำตอบของคุณฉันตรวจสอบว่า nginx ของฉันทำงานภายใต้ www-data ซึ่งเป็นเจ้าของโฟลเดอร์ดังนั้น ...

อย่างไรก็ตามฉันพบข้อผิดพลาดนี้ซึ่งชี้ข้อผิดพลาดในส่วน postrotate ใน /etc/logrotate.d/nginx

หากต้องการแก้ไขคุณสามารถแสดงความคิดเห็นได้

invoke-rc.d nginx rotate >/dev/null 2>&1

และใช้ตัวเลือกใด ๆ ต่อไปนี้ (จากความคิดเห็นในข้อผิดพลาดนั้น) แทน:

  • start-stop-daemon --stop --signal USR1 --quiet --pidfile /run/nginx.pid - ชื่อ nginx
  • โหลด nginx -s
  • บริการโหลด nginx> / dev / null 2> & 1

-1

สาเหตุของปัญหานี้อีกอาจจะเป็นดิสก์เติมขึ้น

หมายเหตุ: สิ่งนี้อาจเกิดขึ้นกับบันทึกการเข้าถึงที่เติมโดยฉับพลัน! อาจจะ?

หากต้องการทำซ้ำสิ่งนี้คุณอาจมีบันทึกการเข้าถึงของคุณเต็มไปด้วยการร้องขอจำนวนมากทันทีเมื่อlogrotateไฟมันจะย้ายaccess.logไปaccess.log.1แต่จะล้มเหลวในการบีบอัดไฟล์ถัดไปดังนั้นจึงล้มเหลวในการส่งUSR1สัญญาณไปยัง nginx

คุณจะแก้ไขปัญหาได้อย่างไร

  • หากคุณสนใจเกี่ยวกับไฟล์บันทึกท่อไปยัง ssh + บีบอัดที่นั่นแล้วนำมันกลับมา อย่าลืมวิเคราะห์สิ่งที่ทำให้เกิดการเข้าถึงหรือบันทึกข้อผิดพลาดให้เต็มอย่างรวดเร็ว
  • หากคุณไม่ดูแลตัดไฟล์และโหลด Nginx หรือลบและเริ่มต้นใหม่ให้แน่ใจว่าไม่ที่จะลบและโหลดเช่นนี้จะไม่ปล่อย inode (โปรดอย่าพูดจับมันเป็นคำ Windows)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.