PersönlichesNerdkrams
mkdir * ; wun­dern ; spren­gen

Ich bin seit einer Wei­le in einer die­ser start-up-Fir­men tätig, die irgend­was mit mobi­len Anwen­dun­gen machen. Ursprüng­lich soll­te ich dort die Backend­ent­wick­lung über­neh­men; blö­der­wei­se hat­te ich in mei­ner Bewer­bung ange­ge­ben, dass ich auch schon mal einen Ser­ver gewar­tet habe, was dazu führ­te, dass man mir außer­dem die Instal­la­ti­on und War­tung eines Ser­vers (in Form eines aus­ran­gier­ten Mini-Towers) auf­trug. Kein Pro­blem, dach­te ich, macht ja durch­aus Spaß. (Dass die Fir­ma aus­nahms­los auf eine Mac-OS-X-Umge­bung setzt, hät­te mich schon stut­zig machen sol­len.)

Nach eini­gen Stun­den war der aus­ran­gier­te Mini-Tower zu einem voll funk­ti­ons­tüch­ti­gen Free­BSD-PHP-Ent­wick­lungs­ser­ver her­an­ge­reift, der genau das tat, was er soll­te, regel­mä­ßi­ge Daten­bank- und Web­ser­ver-Back­ups per rsync (also auf ein belie­bi­ges Netz­lauf­werk) inklu­si­ve. Die­ser Ser­ver ver­rich­te­te anstands­los sei­nen Dienst und über­stand auch grö­ße­re updates ohne Pro­ble­me, wie man es eben von Free­BSD so kennt.

Trotz all­dem gab es sei­tens der Ent­schei­der (zwar kei­ne „Schlip­sis“, aber doch sehr öko­no­misch den­kend) vier Punk­te an der Instal­la­ti­on zu kri­ti­sie­ren: Free­BSD las­se sich nicht ohne Hand­ar­beit in die sowie­so her­um­ste­hen­de „Time Machi­ne“ (so ein app­le­ei­ge­nes Back­up­sy­stem) ein­bin­den, was immens wich­tig sei, falls mal die Fest­plat­te „abrau­che“ (ein rsync-Back­up erfor­de­re ja manu­el­les Zurück­spie­len der Datei­en, das sei viel zu umständ­lich); es sei eher blöd, wenn ich als Ein­zi­ger im Haus wis­se, wie man den Ser­ver wie­der zum Lau­fen bekom­me, wenn er mal strei­ken soll­te (ich war bis dahin ernst­haft der Mei­nung, genau dafür sei­en Admi­ni­stra­to­ren ja da); man kön­ne auf Free­BSD (ich hat­te kein GUI instal­liert) nicht so ein­fach neue vir­tu­el­le Hosts anle­gen wie unter Mac OS X, wo ein ein­zi­ger Klick genü­ge; im Übri­gen pas­se der Mini­tower nicht in den „Ser­ver­schrank“ (die Anfüh­rungs­zei­chen sind ernst gemeint; in die­sem „Ser­ver­schrank“ ste­hen vor allem Mac minis her­um), son­dern müs­se dane­ben­ge­stellt wer­den, was natür­lich unzu­mut­bar sei.

Die „Lösung“ für die­se Her­aus­for­de­run­gen: Ein wei­te­rer Mac mini wur­de ange­schafft und dem Zustän­di­gen (mir) kurz erklärt, wie das Teil denn funk­tio­niert, wie man also per Klick neue Web­sei­ten hin­zu­fügt (was offen­bar nichts ande­res ist als ein GUI zur Ver­wal­tung von vir­tu­el­len Hosts im mit­ge­lie­fer­ten Apa­che), sogar mit „hüb­scher“ blau­er check­box zum An- und Abschal­ten von PHP (natür­lich in einer Uralt­ver­si­on; wer will schon aktu­el­le Soft­ware auf ’nem Ser­ver nut­zen? Mac-OS-Nut­zer jeden­falls nicht). „Dann mal viel Spaß!“

Was ich per Ver­such und Irr­tum schnell her­aus­fand: Das GUI für die Ser­ver­war­tung in Mac OS X scheint tat­säch­lich einen gewis­sen Zweck zu erfül­len. Eine httpd.conf exi­stiert zwar dort, wo man sie erwar­ten wür­de (es gibt tat­säch­lich ein Kon­fi­gu­ra­ti­ons­ver­zeich­nis namens apache2), aber sie scheint für irgend­was ande­res benutzt zu wer­den. Das (mit­tels home­brew; ein pas­sen­der Name, denn die Benut­zung macht Lust auf ein Bier) hän­disch nach­in­stal­lier­te PHP 5.5 ließ sich über sie jeden­falls nicht akti­vie­ren. „Mein“ Pro­jekt setzt im Übri­gen auf MariaDB (also MySQL-Syn­tax) auf, Mac OS X bringt natür­lich nur Post­greS­QL mit (selbst­ver­ständ­lich ohne GUI, das wäre ver­mut­lich zu ein­fach); auch hier war also Hand­ar­beit nötig. Ob das eben­falls per brew ein­ge­rich­te­te MariaDB kor­rekt mit dem Web­ser­ver zusam­men­ar­bei­tet, ist mehr oder weni­ger ein Rate­spiel, da ich noch nicht her­aus­ge­fun­den habe, wie ich an „mei­ne“ PHP-Instal­la­ti­on kom­me. Das „PHP“-Häkchen schal­tet ja nur die wo auch immer ver­steck­te httpd.conf um, nicht die, die dort liegt, wo sie lie­gen soll­te. Toll, so’n Mac. (Es sieht aber gut aus: Die Instal­la­ti­on von Admi­ner im Ord­ner der Web­site „Default“ ließ mich zumin­dest auf die Daten­bank zugrei­fen, mysqlad­min ver­rich­tet auf der Kon­so­le auch anstands­los sei­nen Dienst. Glück gehabt!)

Die Soft­ware war zumin­dest theo­re­tisch erst mal instal­liert. Jetzt galt es das bestehen­de PHP-Pro­jekt vom „alten“ auf den „neu­en“ Ser­ver zu migrie­ren. Die Benut­zung von scp bot sich an. Natür­lich lie­gen Mac-OS-X-Web­sites nicht in /var/www oder irgend­wo inner­halb von /usr oder /etc, son­dern in einem merk­wür­di­gen Son­der­ord­ner namens /Library (und auch nicht unter /Library/WebServer, was eben­falls exi­stiert, son­dern unter /Library/Server), man will es Nicht-Mac-Nut­zern ja nicht zu leicht machen, von BSD auf Mac OS X zu wech­seln. Da könn­te ja jeder kom­men! Inso­fern ist es nur kon­se­quent, dass Mac OS X nicht die tcsh, son­dern die bash als Stan­dardshell ver­wen­det. Die bash ver­hält sich aber gele­gent­lich so, wie man es am Wenig­sten erwar­ten wür­de (was einer der Grün­de sein könn­te, war­um sie unter Linux so beliebt ist).

Ein Bei­spiel: Was, denkt ihr, tut fol­gen­der Befehl in einer Mac-OS-X-Shell?

scp -r root@bsdserver:/var/www/projekt/* ./*

Der gesun­de Men­schen­ver­stand sieht, dass ./* eigent­lich red­un­dant ist und . genü­gen soll­te, hat aber anson­sten kei­ne wei­te­ren Ein­wän­de. Die bash sieht das mit dem Glob­bing aber anders als der gesun­de Men­schen­ver­stand. Obi­ger Befehl kopiert also rekur­siv (-r) den Inhalt von /var/www/projekt auf dem BSD-Ser­ver in das aktu­el­le Ver­zeich­nis – und zwar in einen Unter­ord­ner namens *, den er hier­für extra anlegt.

Oh, jetzt habe ich vor Schreck die Beto­nung ver­ges­sen: In einen Unter­ord­ner namens *! (Für die weni­ger Tech­nik­ver­sier­ten: Das ist, als wür­de man sein Kind „Leer­zei­chen“ nen­nen. Oder „Jeder“.)

Wie besei­tigt man die­ses Mal­heur? Erst mal alles einen Ord­ner höher kopie­ren, dann den Ord­ner namens * ent­fer­nen:

cd "*"; cp -R * ..; cd ..; rm -rf "*"

Fie­se Fal­le: rm ‑rf * wür­de auch funk­tio­nie­ren, aber anders als gewünscht.

Mac OS X über­rascht mich immer wie­der. Incre­di­ble!

Zum Glück ist Wochen­en­de.

Senfecke:

  1. Wenn man Apple-Hard­ware benutzt, wie­so auch nicht einen Ser­ver vom Apfel? Genau dafür ist doch das gan­ze System ausgelegt…eigentlich woll­te man in so einem Unter­neh­men doch wis­sen, wor­auf man sich ein­lässt, oder?

    Das Pro­blem scheint über­all auf­zu­tre­ten, wo Apple-Hard­ware ein­ge­führt wird. Was vor­her prak­tisch war, muss plötz­lich prak­ti­sche­rer werden…und zum Schluss wird es doch ganz schön kom­plex.

    Ist die­se tcsh etwas BSD-spe­zi­fi­sches? Wenn ich mich nicht irre, hat PC-BSD die zsh benutzt…ich habe gedacht, die zsh wäre unter *BSD durch­ge­hend Stan­dard, und Mac OS ist ja auch eines?

    • Die tcsh ist so etwas wie der Nach­fol­ger der csh, Stan­dardshell unter den mei­sten BSDs (jeden­falls unter denen, die nicht die ksh nut­zen). (Offen­le­gung: Die­se Infor­ma­ti­on kann stim­men, muss aber nicht. Ich ken­ne nur Free­BSD wirk­lich gut genug. – Nach­trag: Die Infor­ma­ti­on stimmt jeden­falls für Free­BSD und sei­ne Abkömm­lin­ge.)

      Die zsh ist bour­ne­kom­pa­ti­bel, wahr­schein­lich hat die ähn­li­che „Pro­ble­me“ wie die bash – das habe ich unter Mac OS X noch nicht aus­pro­biert (und auf mei­nem BSD-Ser­ver traue ich mich jetzt nicht mehr).

  2. „(mit­tels home­brew; ein pas­sen­der Name, denn die Benut­zung macht Lust auf ein Bier)“
    Ja, „brew update && brew install mariadb“ ist auf jeden Fall ner­ven­auf­rei­ben­der als ein „ports­nap fetch && ports­nap extra­ct“, 10 Minu­ten war­ten, „wher­eis mariadb“, in den Ord­ner wech­seln, „make install clean“ und dann den ent­spre­chen­den Start­up-Befehl noch in die /etc/rc.conf schrei­ben, völ­lig klar. m(

    „Natür­lich lie­gen Mac-OS-X-Web­sites nicht in /var/www oder irgend­wo inner­halb von /usr oder /etc, son­dern in einem merk­wür­di­gen Son­der­ord­ner namens /Library“
    Natür­lich lie­gen Debi­an-Web­sites nicht in /Library, oder irgend­wo inner­halb von /usr oder /etc, son­dern in einem merk­wür­di­gen Son­der­ord­ner namens /var/www
    Natür­lich lie­gen Free­BSD-Web­sites nicht in /var/www, oder irgend­wo inner­halb von /Library oder /etc, son­dern in einem merk­wür­di­gen Son­der­ord­ner namens /usr/local/www/apache/data

    Wie es unter Win­dows aus­sieht, weiß ich nicht, aber du kannst da bestimmt pri­ma ran­ten, dass die Slas­hes falsch her­um sind.

    Merk­ste selbst, ne? Auch: Wie kommst du auf den abso­lut unsin­ni­gen Gedan­ken, dass Web­sei­ten jemals irgend­wo in /etc lie­gen wür­den? Wenn du das jemals so ein­ge­rich­tet haben soll­test (denn Default ist es sicher nicht), dann muss ich dich lei­der erschie­ßen. Und jeden­falls auf kei­nen Fall irgend­wo als Admin ein­stel­len. Gera­de du als Free­BSD User soll­test dich eher mit den Unix Direc­to­ry Con­ven­ti­ons (http://en.wikipedia.org/wiki/Unix_filesystem) aus­ken­nen als so man­cher Linux­user.

    Zu dei­ner Shell: Jo, auf MacOS-Syste­men ist die Bash vor­ein­ge­stellt als Users­hell. Aber, o Wun­der, es gibt da eine Bina­ry, die auf den Pfad /bin/tcsh hört. Und da du ja als Free­BSD-Exper­te und Admi­ni­stra­tor ein­ge­stellt wur­dest, soll­te man doch eigent­lich davon aus­ge­hen, dass du den chsh-Befehl kennst.

    Und schon sind meh­re­re Kri­tik­punk­te, die du hier ange­spro­chen hast, aus­ge­he­belt. Aber ein­fach zu goog­len wäre natür­lich zu ein­fach gewe­sen, lie­ber mal den OS-Nazi raus­hän­gen las­sen, oder?

    • taton­ka:
      Ja, „brew update && brew install mariadb” ist auf jeden Fall ner­ven­auf­rei­ben­der als ein „ports­nap fetch && ports­nap extra­ct”, 10 Minu­ten war­ten, „wher­eis mariadb”, in den Ord­ner wech­seln, „make install clean” und dann den ent­spre­chen­den Start­up-Befehl noch in die /etc/rc.conf schrei­ben, völ­lig klar. m(

      wher­eis mariadb führt ja auch zu nichts, weil es einen Port die­ses Namens nicht gibt. Ein­fach in /usr/ports/databases/ nach­zu­se­hen wäre wahr­schein­lich aber zu logisch. Du bist Mac­nut­zer, nicht wahr?

      (Neben­bei bemerkt: pkg install mariadb-ser­ver führt auch zum Ziel. Ein Befehl weni­ger!)

      Natür­lich lie­gen Debi­an-Web­sites nicht in /Library, oder irgend­wo inner­halb von /usr oder /etc, son­dern in einem merk­wür­di­gen Son­der­ord­ner namens /var/www

      Total unlo­gisch benannt, nicht?

      War­um gibt es /Library/WebServer/, wenn da nichts drin­liegt, was für den Web­ser­ver von Belang ist? :aufsmaul:

      Natür­lich lie­gen Free­BSD-Web­sites nicht in /var/www, oder irgend­wo inner­halb von /Library oder /etc, son­dern in einem merk­wür­di­gen Son­der­ord­ner namens /usr/local/www/apache/data

      Bei mir nicht.

      Wie es unter Win­dows aus­sieht, weiß ich nicht, aber du kannst da bestimmt pri­ma ran­ten, dass die Slas­hes falsch her­um sind.

      Unter Dreck OS X sind dafür die Back­slas­hes fal­schrum.

      Wie kommst du auf den abso­lut unsin­ni­gen Gedan­ken, dass Web­sei­ten jemals irgend­wo in /etc lie­gen wür­den?

      Unsin­ni­ge Ver­zeich­nis­auf­tei­lung („wir haben /Library/WebServer, aber /Library/Server ist doch viel schöner!!1″) soll­te doch nicht mehr wei­ter ver­wun­dern.

      da du ja als Free­BSD-Exper­te und Admi­ni­stra­tor ein­ge­stellt wur­dest, soll­te man doch eigent­lich davon aus­ge­hen, dass du den chsh-Befehl kennst.

      Ist mir geläu­fig, ja, inva­li­diert aber mei­ne Beschwer­de nicht. Ich wur­de übri­gens als Web­ent­wick­ler ein­ge­stellt, erst danach kam „kannst du mal…?“ – ver­mut­lich aus gutem Grund.

      Und schon sind meh­re­re Kri­tik­punk­te, die du hier ange­spro­chen hast, aus­ge­he­belt.

      Nö.

      Aber ein­fach zu goog­len wäre natür­lich zu ein­fach gewe­sen, lie­ber mal den OS-Nazi raus­hän­gen las­sen, oder?

      „Nach­gucken, wie man Pro­ble­me lösen kann“ ist das Eine.

      Wenn mir da aber ein System hin­ge­stellt wird, das als logisch durch­dacht und ein­fach zu bedie­nen bewor­ben wird und das mich dann fas­sungs- wie rat­los die total däm­li­che Ver­zeich­nis­lo­gik bewun­dern lässt, wer­de ich mich ja wohl noch dar­über aus­las­sen dür­fen, ohne dass gleich einer die God­win­kar­te zieht.

      Auch Win­dows ist ein her­vor­ra­gen­des System, wenn du nach­guckst, wie du die Pro­ble­me lösen kannst. Nun?

  3. Bei mir – unter Debi­an Test­ing – macht „bash“ jeden­falls was es soll – ich weiß nicht wie das bei Mac OS X aus­sieht, aber nor­ma­ler­wei­se ist die Bash recht „Logisch“… ;)

    Es gibt einen guten Grund, war­um OS X in Unter­neh­men so beliebt ist: Es ist fast Undurch­sicht­bar, Unnö­tig Kom­pli­ziert und auf ein Art und Wei­se ver­strickt, die sich nor­ma­le Linux/Unix User nie­mals vor­stel­len kön­nen. So kann man doch auch sicher die Geschäfts­ge­heim­nis­se Ver­stecken: Unlo­gik ist doch bestimmt die Sicher­ste OS X Ver­schlüs­se­lungs­me­tho­de, die auch sehr oft ein­ge­setzt wird *gg*

    Unter Fedo­ra bzw. RHEL 5,6,7 und Debian(die ken­ne ich/hab ich auf mei­nem System) liegt PHP meist in /var/www(Debian) oder /var/www/html(RHEL) bzw /var/www(falls kein CGI mit­in­stal­liert wur­de).. Kryp­to­lo­gik-FTW! :aufsmaul:

    Bei dir in der Fir­ma wür­de ich wohl direkt nach dem ersten „Geh zu OS X“ wohl sagen, dass der­je­ni­ge „sich doch bit­te mei­ne Arbeit oder OS X in den Anus schie­ben möge“… :evil:

Comments are closed.

https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_smilenew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_biggrin2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_sadnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_eek.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_shocked.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_confusednew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_coolnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_lol.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_madnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_aufsmaul.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_seb_zunge.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_blushnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_frown.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_twistedevil1.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_twistedevil2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/icon_mad.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_rolleyesnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_wink2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_idea2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_arrow2.gif 
mehr …
 

Erlaubte Tags:
<strong> <em> <pre> <code> <a href="" title=""> <img src="" title="" alt=""> <blockquote> <q> <b> <i> <del> <tt> <span style=""> <strike>

Datenschutzhinweis: Deine IP-Adresse wird nicht gespeichert. Details findest du hier.