404 Not Found
je chyba, která se objeví při pokusu o přístup k webové stránce nebo zdroji, který nebyl na serveru nalezen. Nginx je webový server a proxy server, který lze použít k obsluze webových stránek. Chyba 404 Not Found Nginx
znamená, že požadovaná stránka nebo prostředek nebyly na serveru, který používá Nginx, nalezeny.
Pokud skript php neměl dostatek paměti RAM ke spuštění a jeho proces byl systémem zastaven, může systém Nginx také vrátit chybu 404.
Tuto situaci uvidíte, když skript běží dlouhou dobu a poté vrátízprávu "404 Not Found
" nebo chybovou stránku vašeho enginu. Obvykle je tato chyba viditelná také v protokolu ladění.
Problém se řeší uvolněním paměti na serveru, často k tomu může dojít kvůli úniku paměti v php, kdy procesy php-fpm
zabírají téměř veškerou paměť na serveru. Restartováním php-fpm
se tento problém částečně vyřeší:
$ systemctl restart php-fpm
Lze této situaci do budoucna předejít? Odpověď zní ano, lze. K tomu je třeba nakonfigurovat automatické restartování procesů.
Chcete-li v systému Linux nakonfigurovat automatické restartování procesů po určitém počtu požadavků, můžete použít nástroje pro správu procesů, jako je systemd
nebo supervisord
.
V adresáři /etc/systemd/system/
vytvořte soubor s příponou .service
s konfigurací procesů. Například soubor php-fpm.service
[Unit]
Description=PHP FastCGI Process Manager
After=network.target
[Service]
Type=simple
ExecStart=/usr/sbin/php-fpm
Restart=always
RestartSec=3
StartLimitInterval=0
StartLimitBurst=10
[Install]
WantedBy=multi-user.target
V tomto příkladu parametr StartLimitBurst
nastavuje počet restartů před dočasným vypnutím procesu.
Po vytvoření souboru služby spusťte příkaz pro restart systemd
a aktivaci nové služby:
sudo systemctl daemon-reload
sudo systemctl enable php-fpm.service
sudo systemctl start php-fpm.service
Nainstalujte ji pomocí správce balíčků vaší linuxové distribuce. Poté vytvořte konfigurační soubor pro svůj proces v adresáři /etc/supervisor/conf.d/
. Například soubor php-fpm.conf:
[program:php-fpm]
command=/usr/sbin/php-fpm
autorestart=true
startretries=10
V tomto příkladu parametr startretries
nastavuje počet pokusů o restartování procesu.
Po vytvoření konfiguračního souboru restartujte supervisord
:
sudo supervisorctl reread
sudo supervisorctl update
Tyto kroky vám pomohou nastavit automatické restartování procesů po zpracování určitého počtu požadavků v systému Linux.