GNU/Linux >> Znalost Linux >  >> Linux

Restartujte Apache

Možná budete muset restartovat Apache®, když chcete, aby se změny, které provedete, projevily, nebo když potřebujete vrátit využití zdrojů Apache zpět do normálního rozsahu. Někdy se však Apache nedaří restartovat. Tento článek ukazuje, jak zkontrolovat nastavení konfigurace a restartovat Apache, když selže.

Poznámka :Než použijete následující pokyny a provedete jakékoli změny v konfiguračních souborech, doporučujeme vám zálohovat stávající soubory.

Zkontrolujte syntaxi

Příčinou chyby může být jednoduše špatně napsané slovo nebo tečka (.), která není na místě. Spusťte následující příkaz a zkontrolujte syntaxi:

    [user@server ~]$ httpd –S

Měli byste vidět následující výstup:

    Syntax OK

Pokud se zobrazí chybová zpráva podobná zprávě v následujícím příkladu výstupu, musíte chybu vyřešit, než se pokusíte restartovat Apache:

    Syntax error on line 51 of /etc/httpd/conf/httpd.conf:
    Invalid command 'erverRoot', perhaps misspelled or defined by a module not included in the server configuration

Zkontrolujte protokoly chyb Apache

Pokud tyto chyby vyřešíte a Apache se stále nerestartuje, zkontrolujte protokoly chyb Apache. Použití dvou oken může být užitečné. V jednom okně použijte příkaz tail proti protokolu chyb spuštěním následujícího příkazu:

    tail –f /var/log/httpd/error_log

V druhém okně se pokuste restartovat Apache spuštěním následujícího příkazu:

    # For RHEL/CentOS 6
    [user@server ~]$ sudo /etc/init.d/httpd restart
    # For Ubuntu 14/Debian 8
    [user@server ~]$ sudo /etc/init.d/apache2 restart
    # For RHEL/CentOS 7+
    [user@server ~]$ sudo systemctl restart httpd
    # For Ubuntu 16+/Debian 9+
    [user@server ~]$ sudo systemctl restart apache2

Sledujte první okno při restartování Apache, abyste viděli chyby, které se generují do protokolů.

Apache se také nemusí restartovat, pokud existuje jiná služba, která se váže k portu, který se Apache pokouší použít, jak ukazuje následující výstup:

    Stopping httpd:                                           [FAILED]
    Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 2001:4801:7824:103:9ed:a5a8:3301:d53a for ServerName
    [Wed Sep 10 20:48:11 2014] [warn] NameVirtualHost *:443 has no VirtualHosts
    [Wed Sep 10 20:48:11 2014] [warn] NameVirtualHost *:80 has no VirtualHosts
    (98)Address already in use: make_sock: could not bind to address [::]:80
    (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
    no listening sockets available, shutting down
    Unable to open logs

Tento výstup ukazuje, že Apache nelze spustit, protože k portu 80 je již přiřazena jiná služba.

Můžete buď změnit port, ke kterému je Apache přiřazen, nebo zkontrolovat, zda má být druhá služba přiřazená k tomuto portu na portu 80. Spusťte netstat příkaz k identifikaci druhé služby, která tento port používá, jak ukazuje následující příklad:

    [user@server ~]$ sudo netstat –plnt

Výstup by měl vypadat podobně jako v následujícím příkladu:

    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address             Foreign Address             State      PID/Program name
    tcp       0     0 0.0.0.0:80                  0.0.0.0:*                   LISTEN     5272/sshd
    tcp       0     0 127.0.0.1:25                0.0.0.0:*                   LISTEN     1581/master
    tcp       0     0 0.0.0.0:3306                0.0.0.0:*                   LISTEN     5835/mysqld
    tcp       0     0 :::80                                       :::*        LISTEN     5272/sshd
    tcp       0     0 ::1:25                                      :::*        LISTEN     1581/master

V tomto příkladu výstup ukazuje, že Secure Shell (SSH) naslouchá na portu 80, což by nemělo být. Tuto situaci můžete napravit úpravou konfiguračního souboru pro SSH tak, aby naslouchal na jiném portu, a poté restartujte Apache.

Může se také zobrazit následující chyba:

    httpd dead but subsys locked, but pid exists

Tato chyba znamená, že Apache byl spuštěn, ale havaroval. Když spustíte Apache, vytvoří se soubor zámku, který indikuje, že je spuštěn. Soubor zámku pomáhá zabránit spuštění více instancí. Když Apache zastavíte, tento soubor zámku je odstraněn. Když se však zhroutí, soubor zámku stále existuje, ale proces ne. Pokud se zobrazí tato chyba, musíte soubor zámku odstranit spuštěním následujících příkazů:

    # For RHEL/CentOS based distributions
    [user@server ~]$ sudo rm /var/lock/subsys/httpd
    # For Ubuntu/Debian based distributions
    [user@server ~]$ sudo rm /var/lock/subsys/apache2

    # For RHEL/CentOS 6
    [user@server ~]$ sudo /etc/init.d/httpd restart
    # For Ubuntu 14/Debian 8
    [user@server ~]$ sudo /etc/init.d/apache2 restart
    # For RHEL/CentOS 7+
    [user@server ~]$ sudo systemctl restart httpd
    # For Ubuntu 16+/Debian 9+
    [user@server ~]$ sudo systemctl restart apache2

Spuštěním těchto příkazů se odstraní nepoužívaný soubor zámku, takže Apache může po restartu vytvořit nový.


Pomocí karty Zpětná vazba můžete přidat komentáře nebo položit otázky. Můžete s námi také zahájit konverzaci.


Linux
  1. Jak nainstalovat Apache na Ubuntu?

  2. Nainstalujte Apache na CentOS 8

  3. Nainstalujte Apache na Debian 10

  1. Apache mod_rewrite

  2. Jak restartovat Apache?

  3. Jak restartovat Apache, aby byly změny httpd.conf trvalé?

  1. Použití mod_cluster v Apache

  2. Restartujte Nginx v Ubuntu

  3. Spuštění Apache jako jiný uživatel