zdravim
pokusam sa spravit jednoduchu webovu stranku kde budem mat nejake zakladne udaje o stave masiny..
riesim sluzby(ci su spustene)
apache a proftpd som spravil cez "service NAZOV status"
s SSH bol nejaky problem a cez "service" to neslo, slo to ale cez "/etc/init.d/ssh status" bolo mi to divne ale neriesim, problem nastava s mysql, ktory pod mojim uctom ide vpohode, no ked sa prepnem do uzivatela toho "apache" tak tam nejde ani cez "/etc/" ani cez "service"
www-beta@AS1:~$ service mysql status
exec: 129: status: not found
www-beta@AS1:~$ /etc/init.d/mysql status
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql status
Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the status(8) utility, e.g. status mysql
/etc/init.d/mysql: 73: status: not found
oba tieto prikazy pod mojim uzivatelom funguju, pricom SUDO nepouzivam,
snazil som sa precitat ten "/etc/init.d/mysql" a vyzistit ako funguje no, no v bashi tak dobry niesom :D
co teda musim spravit aby to slo? vopred dik za help
Ubuntu 10.04.4
uzivatel apache nema pravo pouzivat shell a bolo by dobre keby si to tak sj nechal a svoj skript spustal pod inym uzivatelom
apache:x:48:48:Apache:/var/www:/sbin/nologin
hovoríme o inej instanci apachu, s iným užívateľom ktorý má /bin/bash..jelikos tie prve dve služby fungujú a som schopný sa aj prihlásiť tak znamená že bash ma..
Pridaj apache (www-data) do skupiny mysql.
No a na ssh server treba dať príkaz service sshd status
ahoj
no, skusil som (chvilu mi trvalo kym sa mi podarilo to s tymy skupinamy, asi nejaky bug ked dvaja uzivatelia hovoria o stave skupin nieco uplne ine(moj ucet vravel ze v mysql skupine ten www-beta je, no sam www-beta povedal ze nieje, reconnect vyriesil))
mozno pomozu vypisy:
.
www-beta@AS1:~$ id
uid=1009(www-beta) gid=105(mysql) skupiny=33(www-data),105(mysql)
.
dodoslav@AS1:~$ id
uid=1000(dodoslav) gid=1000(dodoslav) skupiny=4(adm),20(dialout),24(cdrom),46(plugdev),106(lpadmin),116(sambashare),121(admin),1000(dodoslav)
.
mysql:
www-beta@AS1:~$ service mysql status
exec: 129: status: not found
www-beta@AS1:~$ /etc/init.d/mysql status
/etc/init.d/mysql: 73: status: not found
dodoslav@AS1:~$ service mysql status
mysql start/running, process 789
.
SSH:
www-beta@AS1:~$ service ssh status
exec: 129: status: not found
www-beta@AS1:~$ /etc/init.d/ssh status
* sshd is running //takyto vystup mi vsak ale zatial uplne staci, takze to netreba moc riesit
dodoslav@AS1:~$ service ssh status
ssh start/running, process 775
dodoslav@AS1:~$ service sshd status
sshd: unrecognized service
inac koncepcne je to uplna blbost co robis. nastavovat shell, sudo, skupiny a co ja viem co vsetko este, pre usera urceneho pre sluzbu, ktora nikdy nebola stavana na to, co robis. na to by si mal pouzit prostriedky jazyka, v ktorom to robis...
prostriedky jazyka?
ok napisem este raz, mas web-server apache, na nom chces stranku ktora ti napriklad zobrazi stav disku(ci je plny), ako zistis ako ej na tom disk v linuxe? pomocou df.. takze v php skripte, ktoreho interpreter je spustany apachom ktory bezi pod uzivatelom www-beta.. je uplne jedno co spustas(v akom to je jazyku), vzdy to spustas pod nejakym uzivatelom a ten koniec koncov na to potrebuje opravnenie.. to ej dovod preco mam spusteny apache dva krat.. jeden su bezne weby, a druhy prakticky spravuje ten prvy(mozem si cez webove rozhranie vygenerovat httpd.conf a podsunut ho tomu prvemu a vsetko jednoducho cez klikatka na webe), prvy apache nema opravnenie na nic.. proste klasicky apache. druhy na ktorom bezi administracia uz moze nieco vyse..
.
velmi nerad ale pri popisovani problemu vysvetlujem preco, pisem tu preto lebo potrebujem pomoct ako to mam spravit.. preto ani teraz nepisem na klasicke forum kde sa vacsinou neriesi problem ale riesi sa len dovod preco to robim a ze to je vsetko blbost
.
samozrejme som otvoreny tipom-trikom, navrhom na zlepsenie atd, ale setrime svoj cas :)
Chces info a setrit cas? Tak si nainstaluj webmin a mas vybavene.
ten webmin sa mi sice este nepodaril rozbehat(nejaky problem s SSL) ale co som pozeral vyzera to dost dobre. dik za tip :)
alebo skus nagios/icinga..
prostriedky jazyka?
ano, napr. http://php.net/manual/en/function.disk-free-space.php a http://php.net/manual/en/function.http-get.php
ako zistis ako ej na tom disk v linuxe? pomocou df
ano, ale to je utilita v cmd. service je uz duplom prikaz na SPRAVU servera.
z principu ma stav disku nezaujima, kym nie je prilis plny. rovnako ma nezaujima, ci apache bezi, kym bezi. a na to sluzi monitoring.
a aj ked si len chces urobit "infostranku", tak to aj tak neznamena, ze to budes robit ako prasa...
este otazka na zamyslenie: co myslis, ktory sposob testovania, ci bezi apache, je lepsi? pomocou tvojho service, alebo napr. sa pomocou nejakej funkcie priamo pripojit na apacha?
ked sa pripojim na apache, tak viem ze naozaj bezi, zatial som uplne nepochpil ako tam ten http_get funguje..
service sice fakt netusim ako funguje, ale ako som nizsie napisal, predpokladam ze mi vrati aj nejaky error code a vie mi povedat ze ak je nieco zle tak mi vie nieco blizsie povedat
.
//raz som nieco riesil prave s apache alebo mysql a service status mi vratil dlhsi text kde bol nejaky popis chyby
.
co je lepsie a preco sa rad dozviem :-)
service len riesi, ci sluzba ako taka bezi. ale uz neriesi, napr. ci je ta sluzba spravne nakonfigurovana. cize service ti pre apache vrati running, ale kvoli jeho chybnej konfiguracii, aj tak spravne nefunguje (error code 5XX). a to zistis prave pomocou php. dokonca si mozes urobit osobitny skript, ktory ak je vsetko v poriadku, tak vrati specificku odpoved, a tu potom testujes v php. moznosti je ako vzdy vela...
je mi jasne ze niesom prvy kto taketo nieco robi, ale ze phpko taketo funkcie naozaj ma mi pride.. ze to tam nepatri, tak ci tak nepouziva ta funkcia nakoniec aj tak iba tieto aplikacie rovnako ako ja?
.
monitoring.. mas namysli ze teda nebudem si nic zobrazovat, iba mi to skript na pozadi bude kontrolovat a ked to prejde cez limit pri pride email napriklad? moze to byt pokracovanie k tomu co robim teraz //akorat si neviem tie emaily predstavit ako spravim
.
robit to ako prasa.. samozrejme to tak robit nechcem :)
je mi jasne ze niesom prvy kto taketo nieco robi, ale ze phpko taketo funkcie naozaj ma mi pride.. ze to tam nepatri
to akoze myslis vazne?
tak ci tak nepouziva aj funkcia nakoniec aj tak iba tieto aplikacie rovnako ako ja?
tak urcite
monitoring.. mas namysli ze teda nebudem si nic zobrazovat, iba mi to skript na pozadi bude kontrolovat a ked to prejde cez limit pri pride email napriklad? moze to byt pokracovanie k tomu co robim teraz
ano presne tak. ale mozes kludne aj zobrazovat.
//akorat si neviem tie emaily predstavit ako spravim
ty nic robit nemusis, existuje vela hotovych rieseni
ale ak si to predsa len chces urobit sam, tak zacni studovat. ale urcite nie to, ako apache spusti command service...
Takže ty si v skupine admin a preto vlastne service funguje, čo nieje moc bezpečné.
Na zistenie stavu procesov sa dá použiť aj to čo písal Samalama, nepr. so skriptom:
No pokiaľ chceš cez rozhranie meniť systémové veci, tak budeš potrebovať práva roota. No bezpečnejšie by to bolo riešiť cez chroot a podbne. Inak existujú už hotové slobodné riešenia na správu Apache.
www-beta@AS1:~$ id
uid=1009(www-beta) gid=121(admin) skupiny=33(www-data),105(mysql),121(admin)
www-beta@AS1:~$ service mysql
Usage: /etc/init.d/mysql COMMAND
www-beta@AS1:~$ service mysql status
exec: 129: status: not found
.
akorat teraz neviem co za skupinu to je, ale je mozne ze skupina admin je len nejaky moj nevydareny pokus, nasiel som ju ale aj v sudoers
.
co sa tyka veci na ktore potrebujem roota, riesim to tak ze ten skript pridam do sudoers, neviem preco mi nefunguje stickbit (napr chmod 4777 root:root), proste to nespusta ako root comu tiez vobec nerozumiem
ako to riesit cez chroot si neviem predstavit
ano su na to hotove riesenia ako bolo hore spominane ktore si rad vyskusam a budem pouzivat, ale robim to aj preto lebo ma to bavi a chcem sa tieto veci naucit :)
.
tym scriptom ktory si sem dal ale budem zistovat ci je ten proces v zozname procesov, a dokonca sa to hlada len podla nazvu, pricom predpokladam ze ten script v init.d funguje na zakalde signalov (pripadne nejake ipc) a vie mi to dat aj nejaky errorcode alebo informovat o inych stavoch a nie len idem/nejdem, apache moze byt spusteny ale moze ostat bugnuty pripadne nefunkcny kvoli zlemu konfigu a pod.. ?
Ešte doplním, nebolo by zlé si napísať skript mimo Apacha a vymieňať si informácie cez súbor, alebo MySQL.
to sa mi zase nepaci lebo sa bojim ze sa mi moze nejako ten script v crone bugnut a budem mat 10 dni stary stav a pokial si nevypisem posledny pristup k tomu suboru tak to ani nezistim, idealne by som to chcel na refresh stranky/realtime, cez mysql by to uz bolo lepsie, to by som si aj do grafu mohol hadzat :D //mysql ma teda nenapadlo
nezbehnuty cron najdes v logu.
a skus byt menej mudry, ked tomu nerozumies a chces radu...
To môže byť kľudne niekoľko skritov. Je skoro jedno či to bude súbor, alebo MySQL. Stačí aby si si ukladal nejaké ID čo bude počítač spustení, potom čas kedy sa to spustilo, ping na Google a nejaké hodnoty čo chceš.
Zastaralosť informácie uvidíš v tom čase čo si budeš ukladať a môžeš si napísať ďalší skript do CRONu čo môže kontrolovať logy a cez Sendmail posielať email ako upozornenie že sa niečo nespustilo.
ja viem ze uz sme to uzavreli, ale keby niekto mozno riesil podobne nieco
.
Cause might be that your user dont have /usr/sbin and /sbin in $PATH.
The service command is located in this directories.
Try:
# export PATH=/sbin:/usr/sbin:$PATH
# /etc/init.d/mysql status
.
problem solved
Ak by niekto riešil niečo podobné, tak použije už spomínaný a hotový webmin.