Toon posts:

Apache2 opstarten bij een boot

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb net Apache2 gecompiled op mijn server, werkt helemaal perfect. Nu zou ik hem graag opgestart willen zien tijdens het booten van mijn PC.

Ik gebruik Linux Debian

Ik heb me helemaal weezeloos gezocht op het internet, en er is ook zat te werken alleen wordten er steeds andere methoden gebruik waar ik niets aan heb.

De command die nodig is om apache2 te starten is:
/etc/apache2/bin/apachectl start

Ik heb al zelf een script gemaakt, maar deze geeft een access denied error als ik deze wil runnen, nu komt dit denk ik omdat inet.d dit script nog met installeren (ofzo?)

Dus mijn vraag, hoe krijg ik deze command opgestart bij het opstarten van mijn PC?
Deze bestanden bevinden zich in /etc/init.d:
atd hotplug mountnfs.sh rmnologin
bootclean.sh hotplug-net mountvirtfs sendsigs
bootlogd hwclockfirst.sh mysql single
bootmisc.sh hwclock.sh networking skeleton
checkfs.sh ifupdown nviboot ssh
checkroot.sh ifupdown-clean ppp stop-bootlogd
console-screen.sh inetd pppd-dns sysklogd
cron initrd-tools.sh procps.sh umountfs
discover keymap.sh pure-ftpd-mysql umountnfs.sh
dns-clean klogd rc urandom
exim4 makedev rcS webmin
halt modutils README xfree86-common
hostname.sh mountall.sh reboot

  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

Onder Debian gebruik je daar rcconf voor, daarvoor moet je wel /etc/init.d/skeleton gebruiken als opstart en stop-script.
Ik gok dat andere distro's een soortgelijk systeem gebruiken, en misschien wel exact hetzelfde programmaatje, maar als je niet verteld welke distro je gebruikt kan ik je daar niet verder mee helpen.

God, root, what is difference? | Talga Vassternich | IBM zuigt


  • DJ Buzzz
  • Registratie: December 2000
  • Laatst online: 15:18
Als je Apache installeert via de standaard package manager van je distributie, worden dergelijke zaken altijd al voor je gedaan, misschien is dat dus handiger om te doen.

  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 06-01 23:13

DeMoN

Pastafari

Check ook dit eens uit: http://gentoo-wiki.com/Rc-update

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


Verwijderd

Topicstarter
djbuzzz schreef op woensdag 25 januari 2006 @ 08:44:
Als je Apache installeert via de standaard package manager van je distributie, worden dergelijke zaken altijd al voor je gedaan, misschien is dat dus handiger om te doen.
Daar leer ik niets van :) apt-get is vrij makkelijk en wil ook het compilen enzo goed onder de knie hebben

  • Surfer
  • Registratie: December 2001
  • Laatst online: 30-12-2025

Surfer

~

Blijft het feit dat het nog steeds wel handig is als je vermeldt welke distro het we nu over hebben.
Het is namelijk zo dat elke distro zijn eigen sausje over de /etc/init.d scripts giet.

“I'd give an arm to be ambidextrous!"


Verwijderd

Topicstarter
Srfr schreef op woensdag 25 januari 2006 @ 12:26:
Blijft het feit dat het nog steeds wel handig is als je vermeldt welke distro het we nu over hebben.
Het is namelijk zo dat elke distro zijn eigen sausje over de /etc/init.d scripts giet.
Oja damn, vergeten :$

Ik gebruik linux debian, nu vind ik op het internet teksten als dit:
If this all still sounds a bit too complicated, you can instead simply make use of the /etc/rc.d/rc.local file. This script file is run once, before all other scripts have run but before the logon prompt appears. By default it looks something like:

#!/bin/bash
#
# /etc/rc.local - run once at boot time
# Put any local setup commands in here:
Zoiets "makkelijks" moet ik dus ook doen, alleen heb ik dit bestand niet en zou niet weten welk bestand debian gebruikt...

  • WHiZZi
  • Registratie: Januari 2001
  • Laatst online: 11:38

WHiZZi

Museumdirecteurtje

code:
1
update-rc.d apache2 defaults


Zo moeilijk is dat toch niet, volgens mij ook heel simpel te vinden met Google of de search hier :)

Oh wacht, ik zie dat je zelf apache gecompiled hebt (Waarom eigenlijk :? ). Apt-get install apache2 is toch makkelijker?

[ Voor 30% gewijzigd door WHiZZi op 25-01-2006 12:58 ]

HomeComputerMuseum - Interactief computermuseum waar wij de geschiedenis van de thuiscomputer preserveren. Centraal gelegen in de Benelux.


  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

Verwijderd schreef op woensdag 25 januari 2006 @ 12:09:
Daar leer ik niets van :) apt-get is vrij makkelijk en wil ook het compilen enzo goed onder de knie hebben
Ik kan niet zeggen dat ik van
code:
1
2
3
./configure --with-layout=Apache --enable-module=ssl --enable-module=so  \
--enable-module=status --enable-module=rewrite \
--enable-shared-status=status --activate-module=src/modules/php4/libphp4.a

zo verschrikkelijk veel leer hoor ?

Op het feit na dat ik weet dat ik als ik dit doe dat ik dan -elke- keer dat er een nieuwe versie van apache of php uitkomt ik weer met de hand de zooi moet compileren in plaats van apt-get update && apt-get upgrade te draaien.

Begrijp me niet verkeerd, een keertje zelf compileren is wel geinig, LFS opzetten is zeer leerzaam, maar 'leren compileren' leer je er echt niet van, dat leer je pas als je zelf programma's maakt of hacks uitvoert op andermans code en je tegen een fout in je buildscripts aanloopt.

God, root, what is difference? | Talga Vassternich | IBM zuigt


Verwijderd

Topicstarter
WHiZZi schreef op woensdag 25 januari 2006 @ 12:57:
code:
1
update-rc.d apache2 defaults


Zo moeilijk is dat toch niet, volgens mij ook heel simpel te vinden met Google of de search hier :)

Oh wacht, ik zie dat je zelf apache gecompiled hebt (Waarom eigenlijk :? ). Apt-get install apache2 is toch makkelijker?
Ja dat is het ook, maar ik compile deze services liever zelf, ook omdat ik dan nog wat leer :)

Ik ben nu bezig met eigen script te maken, nu krijg ik deze error als ik /etc/init.d/apache2 start doe:
tamara:/etc/init.d# ./apache2
: bad interpreter: Onbekend bestand of map
Mijn script ziet er als volgt uit, wat is er fout aan?:
#!/bin/sh
#
# APACHE2 DEBIAN STARTUP SCRIPT
#
# Author: Niels Mouthaan <niels@x-ploit.nl>.
# Version: 1.0
#

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Apache2 Webserver"
NAME=apache2
DAEMON=/etc/apache2/bin/apachectl
SCRIPTNAME=/etc/init.d/$NAME

# Gracefully exit if the package has been removed.
test -x /etc/apache2/bin/apachectl || exit 0

case "$1" in
start)
echo -n "Starting $DESC"
/etc/apache2/bin/apachectl -k start || echo "FAILED!" ;;
stop)
echo -n "Stopping $DESC"
/etc/apache2/bin/apachectl -k stop || echo "FAILED!" ;;
restart)
echo -n "Restarting $DESC"
/etc/apache2/bin/apachectl -k restart || echo "FAILED!" ;;
esac
exit 0

  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

code:
1
..bad interpreter..

Vind ik een vrij duidelijke melding hoor ? :) Je wilde er toch iets van leren ? ;)

spoiler:
/bin/sh kan 'ie blijkbaar niet vinden, je moet waarschijnlijk /bin/bash gebruiken of de symlink zelf aanmaken

God, root, what is difference? | Talga Vassternich | IBM zuigt


  • Nitroglycerine
  • Registratie: Januari 2002
  • Nu online

Nitroglycerine

Autisme: belemmering en kracht

Wat een aparte plaats om apache neer te zetten. Normale plek is in /usr/local, dus bijv /usr/local/apache2 als je het in een apart directory wil frutten. /etc is voor config files. /etc/apache2 zit niet in je $PATH, niet in je script-$PATH en ook niet standaard in je systeem-$PATH. Dus mogelijk dat daardoor het script klapt?

Run het anders eens met set -xv (bovenin het script plaatsen), dan zie je de daadwerkelijke output en kun je zien op welk punt het script ermee kapt.

Om je nog wat extra tips te geven om ervan te leren:
spoiler:
quote:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Apache2 Webserver"
NAME=apache2
DAEMON=/etc/apache2/bin/apachectl
SCRIPTNAME=/etc/init.d/$NAME
unquote

Ik zie enkel $DESC terugkomen als gebruikte variabele. $PATH zetten is handig, maar waarom de rest? Als je $DAEMON wilt zetten, gebruik die dan ook in het opstarten van het programma.

[ Voor 34% gewijzigd door Nitroglycerine op 25-01-2006 13:42 ]

Hier kon uw advertentie staan


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
moto-moi schreef op woensdag 25 januari 2006 @ 13:37:
code:
1
..bad interpreter..

Vind ik een vrij duidelijke melding hoor ? :) Je wilde er toch iets van leren ? ;)

spoiler:
/bin/sh kan 'ie blijkbaar niet vinden, je moet waarschijnlijk /bin/bash gebruiken of de symlink zelf aanmaken
Ik mag hopen dat ie wel een /bin/sh heeft (tenzij hij die verwijderd heeft), al is het maar en symlink naar bash, ik gok echter dat het probleem ligt dat hij het script op een windowsmachine gemaakt heeft.

  • Nitroglycerine
  • Registratie: Januari 2002
  • Nu online

Nitroglycerine

Autisme: belemmering en kracht

tamara:/etc/init.d# ./apache2
: bad interpreter: Onbekend bestand of map
Je hebt het script zodanig gebakken dat het script een invoer verwacht, die je in $1 wilt uitvangen. Maar waar is die invoer?

Hier kon uw advertentie staan


  • Nitroglycerine
  • Registratie: Januari 2002
  • Nu online

Nitroglycerine

Autisme: belemmering en kracht

Waar heb je het opstartscript gebakken? Op een windows bak en vervolgens met ftp ofzo overgezet naar tamara? Open het script dan eens met vi op tamara, als het goed is zie je daar allemaal "end-of-line" karakters, waar linux niet mee overweg kan.
dos2unix kan uitkomst bieden, of effe overnieuw typen, maar dan wel op je linux host.

Hier kon uw advertentie staan


  • Joghert
  • Registratie: September 2002
  • Laatst online: 05-02 18:30
ejz maar als je debian hebt en graag zelf compiled, neem dat de sources van apt-source.
Dan kun je zelf nog wel in de code kijken en er in vrotten, maar krijg je wel de voordelen van een debian pakket

Verwijderd

Topicstarter
Ik had het inderdaad met windows gemaakt, nu via nano met linux:

Dit krijg ik wanneer ik set -xv bovenin mijn script zet.

Hij loopt dus wel goed door (lijkt me?) maar hij doet niets, ook al zet ik er start, stop of restart achter, hij lijkt dat gedeelte niet te pakken. Wat mis ik in mijn code?
#!/bin/sh
#
# APACHE2 DEBIAN STARTUP-SCRIPT
# Author: Niels Mouthaan <niels@x-ploit.nl>
# Version: 1.0
#

DESC="Apache2 Webserver"
++ DESC=Apache2 Webserver

# Gracefully exit if the package has been removed.
test -x /etc/apache2/bin/apachectl || exit 0
++ test -x /etc/apache2/bin/apachectl

case "$l" in
start)
echo -n "Starting $DESC"
/etc/apache2/bin/apachectl -k start || echo " FAILED!" ;;
stop)
echo -n "Stopping $DESC"
/etc/apache2/bin/apachectl -k stop || echo " FAILED!" ;;
restart)
echo -n "Restarting $DESC"
/etc/apache2/bin/apachectl -k restart || echo " FAILED!" ;;
esac
exit 0
++ exit 0

[ Voor 12% gewijzigd door Verwijderd op 25-01-2006 14:08 ]


  • Nitroglycerine
  • Registratie: Januari 2002
  • Nu online

Nitroglycerine

Autisme: belemmering en kracht

Verwijderd schreef op woensdag 25 januari 2006 @ 14:07:
Ik had het inderdaad met windows gemaakt, nu via nano met linux:

Dit krijg ik wanneer ik set -xv bovenin mijn script zet.

Hij loopt dus wel goed door (lijkt me?) maar hij doet niets, ook al zet ik er start, stop of restart achter, hij lijkt dat gedeelte niet te pakken. Wat mis ik in mijn code?


[...]
$1
ipv $l

Hier kon uw advertentie staan


Verwijderd

Topicstarter
Bedankt jongens!

Hij werkt nu, mijn script ziet er nu zo uit voor degene die hem ooit is willen gebruiken:
#!/bin/sh
#
# APACHE2 DEBIAN STARTUP-SCRIPT
# Author: Niels Mouthaan <niels@x-ploit.nl>
# Version: 1.0
#

DESC="Apache2 Webserver"

# Gracefully exit if the package has been removed.
test -x /etc/apache2/bin/apachectl || exit 0

case "$1" in

start)
echo -n "Starting $DESC"
/etc/apache2/bin/apachectl -k start || echo " FAILED!"
echo "" ;;

stop)
echo -n "Stopping $DESC"
/etc/apache2/bin/apachectl -k stop || echo " FAILED!"
echo "" ;;

restart)
echo -n "Restarting $DESC"
/etc/apache2/bin/apachectl -k restart || echo " FAILED!"
echo "" ;;

*)
echo -n "Usage: apache2 { start | stop | restart }"
echo "" ;;

esac
exit 0
Nu nog zorgen dat ik hem aan de gang krijg als hij hem opstart :)

[ Voor 71% gewijzigd door Verwijderd op 25-01-2006 14:37 ]


  • r0b
  • Registratie: December 2002
  • Laatst online: 08-02 21:45

r0b

Nitroglycerine schreef op woensdag 25 januari 2006 @ 13:40:
Wat een aparte plaats om apache neer te zetten. Normale plek is in /usr/local, dus bijv /usr/local/apache2 als je het in een apart directory wil frutten
Debian zet hem afaik al *tijden* in /etc/apache2/ neer.

  • DeMoN
  • Registratie: Maart 2001
  • Laatst online: 06-01 23:13

DeMoN

Pastafari

r0b schreef op woensdag 25 januari 2006 @ 14:38:
[...]

Debian zet hem afaik al *tijden* in /etc/apache2/ neer.
Ja de configfiles wel maar niet de bin files :)

Gamertag: Cosmicv0id
"Het woord Gods is voor mij niets meer dan een expressie en het product van menselijke zwakheid. De Bijbel is een verzamelwerk van legendes die achtenswaardig zijn maar ook primitief en kinderachtig.'' - Albert Einstein


  • WHiZZi
  • Registratie: Januari 2001
  • Laatst online: 11:38

WHiZZi

Museumdirecteurtje

r0b schreef op woensdag 25 januari 2006 @ 14:38:
[...]

Debian zet hem afaik al *tijden* in /etc/apache2/ neer.
:?

Op een normale Debian bak
code:
1
2
3
# locate apachectl
/usr/sbin/apachectl
/usr/share/man/man8/apachectl.8.gz


Vergeet niet dat de TS hem zelf gecompiled heeft. Hij staat idd op een vreemde plaats. Toch snap ik niet dat je iets zelf wilt compilen onder Debian om er iets van te leren. Installeer dan Gentoo ofzo..

[ Voor 21% gewijzigd door WHiZZi op 25-01-2006 15:03 ]

HomeComputerMuseum - Interactief computermuseum waar wij de geschiedenis van de thuiscomputer preserveren. Centraal gelegen in de Benelux.


  • Nitroglycerine
  • Registratie: Januari 2002
  • Nu online

Nitroglycerine

Autisme: belemmering en kracht

Verwijderd schreef op woensdag 25 januari 2006 @ 14:30:

Nu nog zorgen dat ik hem aan de gang krijg als hij hem opstart :)
Heb geen debian, op redhat kun je dat doen door het script in /etc/rc.d/rc.local te zetten, OF met K en S scripts te werken in het relatieve runlevel.

Nog een tip voor het leren:
spoiler:
status)
if [ "$(ps -ef | grep apache | grep -v grep)" = "" ]
then
echo "Apache 2 is NOT running."
else
echo "Apache 2 is running."
fi
;;

Hier kon uw advertentie staan


Verwijderd

Topicstarter
Nitroglycerine schreef op woensdag 25 januari 2006 @ 15:16:
[...]


Heb geen debian, op redhat kun je dat doen door het script in /etc/rc.d/rc.local te zetten, OF met K en S scripts te werken in het relatieve runlevel.

Nog een tip voor het leren:
spoiler:
status)
if [ "$(ps -ef | grep apache | grep -v grep)" = "" ]
then
echo "Apache 2 is NOT running."
else
echo "Apache 2 is running."
fi
;;
Ik heb het met K en S gedaan:

ln -sf /etc/init.d/apache2 /etc/rc0.d/K20apache2
ln -sf /etc/init.d/apache2 /etc/rc1.d/K20apache2
ln -sf /etc/init.d/apache2 /etc/rc2.d/S20apache2
ln -sf /etc/init.d/apache2 /etc/rc3.d/S20apache2
ln -sf /etc/init.d/apache2 /etc/rc4.d/S20apache2
ln -sf /etc/init.d/apache2 /etc/rc5.d/S20apache2
ln -sf /etc/init.d/apache2 /etc/rc6.d/K20apache2

Verwijderd

Topicstarter
Nitroglycerine schreef op woensdag 25 januari 2006 @ 15:16:
[...]

Nog een tip voor het leren:
status)
if [ "$(ps -ef | grep apache | grep -v grep)" = "" ]
then
echo "Apache 2 is NOT running."
else
echo "Apache 2 is running."
fi
;;
Iets werkt hier niet aan want hij geeft ook als hij uitstaat aan dat apache draait. Ik snap die if niet helemaal dus ik zou niet kunnen kijken wat hier fout aan is, vind het wel mooi om dat te hebben dus als iemand me als laatste daar nog mee zou kunnen helpen... graag :D

  • Nitroglycerine
  • Registratie: Januari 2002
  • Nu online

Nitroglycerine

Autisme: belemmering en kracht

r0b schreef op woensdag 25 januari 2006 @ 14:38:
[...]

Debian zet hem afaik al *tijden* in /etc/apache2/ neer.
Ik heb geen ervaring op Debian, voornamelijk op RH bakken, en daar wordt apache in /usr/local/apache2 geplaatst, met de conf bestanden in /etc/httpd .

Hier kon uw advertentie staan


  • Nitroglycerine
  • Registratie: Januari 2002
  • Nu online

Nitroglycerine

Autisme: belemmering en kracht

Verwijderd schreef op woensdag 25 januari 2006 @ 15:26:
[...]


Iets werkt hier niet aan want hij geeft ook als hij uitstaat aan dat apache draait. Ik snap die if niet helemaal dus ik zou niet kunnen kijken wat hier fout aan is, vind het wel mooi om dat te hebben dus als iemand me als laatste daar nog mee zou kunnen helpen... graag :D
De code kun je ook zo op de commandline draaien, en in het kader van het leerproces is dat aan te bevelen.

Ter illustratie een andere if-structuur:
ps -ef | grep mingetty
*een lijst van 6 /sbin/mingetty processen*
if [ "$(ps -ef | grep mingetty | grep -v grep)" = "" ]
then
echo Geen mingetty
else
echo Mingetty gevonden
fi

in de test-structuur achter het if-commando wordt eerst het commando ps -ef gedraait (volledige processenlijst), vervolgens worden processen met mingetty geselecteerd, en vervolgens worden de processen die grep in de processtructuur hebben eruit gehaald. Dit omdat "grep mingetty" ook een proces is wat in de initiele processenlijst voor kan komen, en die wil je er natuurlijk niet bij hebben.
Het geheel staat binnen $( ) om aan de shell aan te geven dat dit commando's zijn die hij uit moet voeren. Let erop: het zijn gewone haken (die op een US qwerty toetsenbord boven de 9 en 0 staan).
Quotes erom heen om de output in tekst op te vangen, zodat de shell er verder niets mee gaat doen. Vervolgens test je of hetgeen in de teksthaken gevuld is of niet ( = "" ). Als het antwoord "JA" is, gaat de shell de "true" structuur in, dus direct achter de "then". Is het antwoord "NEE", dan voert de shell de commando's uit na "else".


Kijk naar je eigen machine, kijk welk proces draait als apache draait, en test of je dit proces tegenkomt in de status test.

[ Voor 8% gewijzigd door Nitroglycerine op 25-01-2006 15:58 ]

Hier kon uw advertentie staan


Verwijderd

Topicstarter
Nitroglycerine schreef op woensdag 25 januari 2006 @ 15:57:
[...]


De code kun je ook zo op de commandline draaien, en in het kader van het leerproces is dat aan te bevelen.

Ter illustratie een andere if-structuur:
ps -ef | grep mingetty
*een lijst van 6 /sbin/mingetty processen*
if [ "$(ps -ef | grep mingetty | grep -v grep)" = "" ]
then
echo Geen mingetty
else
echo Mingetty gevonden
fi

in de test-structuur achter het if-commando wordt eerst het commando ps -ef gedraait (volledige processenlijst), vervolgens worden processen met mingetty geselecteerd, en vervolgens worden de processen die grep in de processtructuur hebben eruit gehaald. Dit omdat "grep mingetty" ook een proces is wat in de initiele processenlijst voor kan komen, en die wil je er natuurlijk niet bij hebben.
Het geheel staat binnen $( ) om aan de shell aan te geven dat dit commando's zijn die hij uit moet voeren. Let erop: het zijn gewone haken (die op een US qwerty toetsenbord boven de 9 en 0 staan).
Quotes erom heen om de output in tekst op te vangen, zodat de shell er verder niets mee gaat doen. Vervolgens test je of hetgeen in de teksthaken gevuld is of niet ( = "" ). Als het antwoord "JA" is, gaat de shell de "true" structuur in, dus direct achter de "then". Is het antwoord "NEE", dan voert de shell de commando's uit na "else".


Kijk naar je eigen machine, kijk welk proces draait als apache draait, en test of je dit proces tegenkomt in de status test.
Bedankt voor je uitleg, ik heb nu:
if [ "$(ps -ef | grep httpd | grep -v grep)" = "" ]
then
echo Apache2 is NOT running
else
echo Apache2 is running
fi
en dat werkt :)
Pagina: 1