Jak automatycznie uruchomić usługę (apache2) za pomocą Linux Mint

11

(Strangley) Mój zainstalowany Apache2 nie uruchamia się podczas logowania do Linux Mint.

Uruchomienie tego polecenia uruchamia:

sudo service apache2 start

Jak powinienem spróbować uruchomić tę usługę przy każdym logowaniu?

eoinoc
źródło
Możesz umieścić to polecenie ~/.xinitrc, które zostanie uruchomione podczas uruchamiania.
n0pe
2
@MaxMackie Przeciwnie, ~/.xinitrcjest uruchamiany w czasie logowania, co nie jest właściwe. Apache musi zostać uruchomiony przez rootowanie podczas startu systemu.
Gilles „SO- przestań być zły”
@Gilles, racja, zapomniałem o tym, dziękuję za poprawienie. Dlaczego jednak apache należy uruchomić przy starcie systemu? Czy logowanie nie przyniosłoby mniej więcej tego samego?
n0pe
@MaxMackie Oczywiście nie, jeśli nie zalogujesz się natychmiast po uruchomieniu. Również Apache nie działa tak jak Ty, więc musisz przyznać mu uprawnienia. Powinien zacząć od części skryptów rozruchowych i zwykle tak się dzieje.
Gilles „SO- przestań być zły”
@Gilles racja. Dzięki za rzucić światło na to.
n0pe

Odpowiedzi:

12

Debian (Ubuntu / Linux Mint)

rcconf (CLI-GUI)

sudo apt-get install rcconf
sudo rcconf

update-rc.d

sudo update-rc.d -f apache2 add

lub

sudo update-rc.d apache2 defaults

RedHat / Fedora / CentOS

chkconfig

sudo chkconfig --add apache2

lub

sudo chkconfig -- level 35 apache2 on
EarthmeLon
źródło
Apache został już sprawdzony, kiedy uruchomiłem rcconf.
eoinoc
Uruchomienie update-rc.dprowadzenie polecenia błędu: update-rc.d: warning: apache2 start runlevel arguments (none) do not match LSB Default-Start values (2 3 4 5).
eoinoc
Czy podałeś
default
1
Dzięki, ale żadne nie działało. Po pierwsze pojawiło się ostrzeżenie „już istnieje”, a po drugie - warning: apache2 start runlevel arguments (none) do not batch LSB default-Start values (2 3 4 5).
eoinoc
6

Ponieważ Mint jest oparty na Ubuntu, a Ubuntu zmieniło się na Upstart, książka kucharska Upstart zawiera wszystkie informacje na temat uruchamiania usługi podczas rozruchu lub na dowolnym określonym poziomie działania.

Ta strona zawiera szczegółową książkę kucharską do uruchamiania Apache podczas rozruchu.

bsd
źródło
Ta strona mówi o umieszczeniu skryptu bash /etc/init.d/apache2. Ale ten plik jest już pełen znacznie bardziej skomplikowanego skryptu bash, który musiał tam umieścić sam Apache.
eoinoc
3

Inną przyczyną tego samego problemu jest priorytet łączy apache w rc [0-6] .d. Moje były S90 i K09, a Apache nie startował przy starcie. Ustawienie priorytetów na domyślne 20, działało dla mnie. Istniejące linki należy najpierw usunąć.

sudo update-rc.d -f apache2 remove
sudo update-rc.d apache2 defaults
htoip
źródło
2

Podczas zamykania zobaczyłem błąd:

Błąd składniowy w wierszu 230 pliku /etc/apach2/apache.conf .... / etc / apache / sites-enable / mysite: Brak takiego pliku lub katalogu

Chodziło o to, że mysitezostał dowiązany do pliku w moim folderze domowym.

To normalnie nie powinno stanowić problemu, pomyślałem.

Ale o ile wiem, moja domowa partycja jest zaszyfrowana . Dlatego zgaduję, że Apache nie mógł odczytać pliku witryny wirtualnej podczas ładowania. Plik był niedostępny, dopóki nie wpisałem hasła.

Skomplikowana sytuacja i wypracowanie jej zajęło miesiące :)

eoinoc
źródło
Jak to wypracowałeś?
Jonas Ęppelgran
0

Nowa odpowiedź zaktualizowana w 2019 r .:

sudo systemctl start httpd

sudo systemctl włącz httpd

Polecenie systemctl to nowe narzędzie do sterowania systemem i usługą systemd. Jest to zastąpienie starego zarządzania systemem inicjującym SysV. Większość współczesnych systemów operacyjnych Linux używa tego nowego narzędzia. Jeśli pracujesz z CentOS 7, Ubuntu 16.04 lub nowszym lub systemem Debian 9. Zdecydowali się teraz na systemd.

Włączona usługa uruchamia się automatycznie podczas uruchamiania systemu. Jest to podobna opcja dla systemd niż chkconfig dla SysV init.

rauldeng
źródło
1
Możesz rozważyć zmianę kolejności, aby była włączona, zanim poprosisz o rozpoczęcie.
Jeff Schaller