PersönlichesNerdkrams
mkdir * ; wundern ; sprengen

Ich bin seit ein­er Weile in ein­er dieser start-up-Fir­men tätig, die irgend­was mit mobilen Anwen­dun­gen machen. Ursprünglich sollte ich dort die Back­enden­twick­lung übernehmen; blöder­weise hat­te ich in mein­er Bewer­bung angegeben, dass ich auch schon mal einen Serv­er gewartet habe, was dazu führte, dass man mir außer­dem die Instal­la­tion und Wartung eines Servers (in Form eines aus­rang­ierten Mini-Tow­ers) auftrug. Kein Prob­lem, dachte ich, macht ja dur­chaus Spaß. (Dass die Fir­ma aus­nahm­s­los auf eine Mac-OS-X-Umge­bung set­zt, hätte mich schon stutzig machen sollen.)

Nach eini­gen Stun­den war der aus­rang­ierte Mini-Tow­er zu einem voll funk­tion­stüchti­gen FreeB­SD-PHP-Entwick­lungsserv­er heran­gereift, der genau das tat, was er sollte, regelmäßige Daten­bank- und Web­serv­er-Back­ups per rsync (also auf ein beliebiges Net­zlaufw­erk) inklu­sive. Dieser Serv­er ver­richtete anstand­s­los seinen Dienst und über­stand auch größere updates ohne Prob­leme, wie man es eben von FreeB­SD so ken­nt.

Trotz all­dem gab es seit­ens der Entschei­der (zwar keine “Schlip­sis”, aber doch sehr ökonomisch denk­end) vier Punk­te an der Instal­la­tion zu kri­tisieren: FreeB­SD lasse sich nicht ohne Han­dar­beit in die sowieso herum­ste­hende “Time Machine” (so ein appleeigenes Back­up­sys­tem) ein­binden, was immens wichtig sei, falls mal die Fest­plat­te “abrauche” (ein rsync-Back­up erfordere ja manuelles Zurück­spie­len der Dateien, das sei viel zu umständlich); es sei eher blöd, wenn ich als Einziger im Haus wisse, wie man den Serv­er wieder zum Laufen bekomme, wenn er mal streiken sollte (ich war bis dahin ern­sthaft der Mei­n­ung, genau dafür seien Admin­is­tra­toren ja da); man könne auf FreeB­SD (ich hat­te kein GUI instal­liert) nicht so ein­fach neue virtuelle Hosts anle­gen wie unter Mac OS X, wo ein einziger Klick genüge; im Übri­gen passe der Mini­tow­er nicht in den “Server­schrank” (die Anführungsze­ichen sind ernst gemeint; in diesem “Server­schrank” ste­hen vor allem Mac min­is herum), son­dern müsse danebengestellt wer­den, was natür­lich unzu­mut­bar sei.

Die “Lösung” für diese Her­aus­forderun­gen: Ein weit­er­er Mac mini wurde angeschafft und dem Zuständi­gen (mir) kurz erk­lärt, wie das Teil denn funk­tion­iert, wie man also per Klick neue Web­seit­en hinzufügt (was offen­bar nichts anderes ist als ein GUI zur Ver­wal­tung von virtuellen Hosts im mit­geliefer­ten Apache), sog­ar mit “hüb­sch­er” blauer check­box zum An- und Abschal­ten von PHP (natür­lich in ein­er Uraltver­sion; wer will schon aktuelle Soft­ware auf ’nem Serv­er nutzen? Mac-OS-Nutzer jeden­falls nicht). “Dann mal viel Spaß!”

Was ich per Ver­such und Irrtum schnell her­aus­fand: Das GUI für die Server­wartung in Mac OS X scheint tat­säch­lich einen gewis­sen Zweck zu erfüllen. Eine httpd.conf existiert zwar dort, wo man sie erwarten würde (es gibt tat­säch­lich ein Kon­fig­u­ra­tionsverze­ich­nis namens apache2), aber sie scheint für irgend­was anderes benutzt zu wer­den. Das (mit­tels home­brew; ein passender Name, denn die Benutzung macht Lust auf ein Bier) händisch nachin­stal­lierte PHP 5.5 ließ sich über sie jeden­falls nicht aktivieren. “Mein” Pro­jekt set­zt im Übri­gen auf Mari­aDB (also MySQL-Syn­tax) auf, Mac OS X bringt natür­lich nur Post­greSQL mit (selb­stver­ständlich ohne GUI, das wäre ver­mut­lich zu ein­fach); auch hier war also Han­dar­beit nötig. Ob das eben­falls per brew ein­gerichtete Mari­aDB kor­rekt mit dem Web­serv­er zusam­me­nar­beit­et, ist mehr oder weniger ein Rate­spiel, da ich noch nicht her­aus­ge­fun­den habe, wie ich an “meine” PHP-Instal­la­tion komme. 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 liegen sollte. Toll, so’n Mac. (Es sieht aber gut aus: Die Instal­la­tion von Admin­er im Ord­ner der Web­site “Default” ließ mich zumin­d­est auf die Daten­bank zugreifen, mysqlad­min ver­richtet auf der Kon­sole auch anstand­s­los seinen Dienst. Glück gehabt!)

Die Soft­ware war zumin­d­est the­o­retisch erst mal instal­liert. Jet­zt galt es das beste­hende PHP-Pro­jekt vom “alten” auf den “neuen” Serv­er zu migri­eren. Die Benutzung von scp bot sich an. Natür­lich liegen Mac-OS-X-Web­sites nicht in /var/www oder irgend­wo inner­halb von /usr oder /etc, son­dern in einem merk­würdi­gen Son­derord­ner namens /Library (und auch nicht unter /Library/WebServer, was eben­falls existiert, son­dern unter /Library/Server), man will es Nicht-Mac-Nutzern ja nicht zu leicht machen, von BSD auf Mac OS X zu wech­seln. Da kön­nte ja jed­er kom­men! Insofern ist es nur kon­se­quent, dass Mac OS X nicht die tcsh, son­dern die bash als Stan­dard­shell ver­wen­det. Die bash ver­hält sich aber gele­gentlich so, wie man es am Wenig­sten erwarten würde (was ein­er der Gründe sein kön­nte, warum sie unter Lin­ux so beliebt ist).

Ein Beispiel: Was, denkt ihr, tut fol­gen­der Befehl in ein­er Mac-OS-X-Shell?

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

Der gesunde Men­schen­ver­stand sieht, dass ./* eigentlich redun­dant ist und . genü­gen sollte, hat aber anson­sten keine weit­eren Ein­wände. Die bash sieht das mit dem Glob­bing aber anders als der gesunde Men­schen­ver­stand. Obiger Befehl kopiert also rekur­siv (-r) den Inhalt von /var/www/projekt auf dem BSD-Serv­er in das aktuelle Verze­ich­nis — und zwar in einen Unterord­ner namens *, den er hier­für extra anlegt.

Oh, jet­zt habe ich vor Schreck die Beto­nung vergessen: In einen Unterord­ner namens *! (Für die weniger Tech­nikver­sierten: Das ist, als würde man sein Kind “Leerze­ichen” nen­nen. Oder “Jed­er”.)

Wie beseit­igt man dieses Mal­heur? Erst mal alles einen Ord­ner höher kopieren, dann den Ord­ner namens * ent­fer­nen:

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

Fiese Falle: rm ‑rf * würde auch funk­tion­ieren, aber anders als gewün­scht.

Mac OS X über­rascht mich immer wieder. Incred­i­ble!

Zum Glück ist Woch­enende.

Senfecke:

  1. Wenn man Apple-Hard­ware benutzt, wieso auch nicht einen Serv­er vom Apfel? Genau dafür ist doch das ganze Sys­tem ausgelegt…eigentlich wollte man in so einem Unternehmen doch wis­sen, worauf man sich ein­lässt, oder?

    Das Prob­lem scheint über­all aufzutreten, wo Apple-Hard­ware einge­führt wird. Was vorher prak­tisch war, muss plöt­zlich prak­tis­cher­er werden…und zum Schluss wird es doch ganz schön kom­plex.

    Ist diese tcsh etwas BSD-spez­i­fis­ches? Wenn ich mich nicht irre, hat PC-BSD die zsh benutzt…ich habe gedacht, die zsh wäre unter *BSD durchge­hend Stan­dard, und Mac OS ist ja auch eines?

    • Die tcsh ist so etwas wie der Nach­fol­ger der csh, Stan­dard­shell unter den meis­ten BSDs (jeden­falls unter denen, die nicht die ksh nutzen). (Offen­le­gung: Diese Infor­ma­tion kann stim­men, muss aber nicht. Ich kenne nur FreeB­SD wirk­lich gut genug. — Nach­trag: Die Infor­ma­tion stimmt jeden­falls für FreeB­SD und seine Abkömm­linge.)

      Die zsh ist bournekom­pat­i­bel, wahrschein­lich hat die ähn­liche “Prob­leme” wie die bash — das habe ich unter Mac OS X noch nicht aus­pro­biert (und auf meinem BSD-Serv­er traue ich mich jet­zt nicht mehr).

  2. “(mit­tels home­brew; ein passender Name, denn die Benutzung macht Lust auf ein Bier)”
    Ja, “brew update && brew install mari­adb” ist auf jeden Fall ner­ve­naufreiben­der als ein “port­snap fetch && port­snap extract”, 10 Minuten warten, “whereis mari­adb”, in den Ord­ner wech­seln, “make install clean” und dann den entsprechen­den Start­up-Befehl noch in die /etc/rc.conf schreiben, völ­lig klar. m(

    “Natür­lich liegen Mac-OS-X-Web­sites nicht in /var/www oder irgend­wo inner­halb von /usr oder /etc, son­dern in einem merk­würdi­gen Son­derord­ner namens /Library”
    Natür­lich liegen Debian-Web­sites nicht in /Library, oder irgend­wo inner­halb von /usr oder /etc, son­dern in einem merk­würdi­gen Son­derord­ner namens /var/www
    Natür­lich liegen FreeB­SD-Web­sites nicht in /var/www, oder irgend­wo inner­halb von /Library oder /etc, son­dern in einem merk­würdi­gen Son­derord­ner namens /usr/local/www/apache/data

    Wie es unter Win­dows aussieht, weiß ich nicht, aber du kannst da bes­timmt pri­ma ranten, dass die Slash­es falsch herum sind.

    Merk­ste selb­st, ne? Auch: Wie kommst du auf den abso­lut unsin­ni­gen Gedanken, dass Web­seit­en jemals irgend­wo in /etc liegen wür­den? Wenn du das jemals so ein­gerichtet haben soll­test (denn Default ist es sich­er nicht), dann muss ich dich lei­der erschießen. Und jeden­falls auf keinen Fall irgend­wo als Admin ein­stellen. Ger­ade du als FreeB­SD User soll­test dich eher mit den Unix Direc­to­ry Con­ven­tions (http://en.wikipedia.org/wiki/Unix_filesystem) ausken­nen als so manch­er Lin­uxuser.

    Zu dein­er Shell: Jo, auf MacOS-Sys­te­men ist die Bash vor­eingestellt als User­shell. Aber, o Wun­der, es gibt da eine Bina­ry, die auf den Pfad /bin/tcsh hört. Und da du ja als FreeB­SD-Experte und Admin­is­tra­tor eingestellt wur­dest, sollte man doch eigentlich davon aus­ge­hen, dass du den chsh-Befehl kennst.

    Und schon sind mehrere Kri­tikpunk­te, die du hier ange­sprochen hast, aus­ge­he­belt. Aber ein­fach zu googlen wäre natür­lich zu ein­fach gewe­sen, lieber mal den OS-Nazi raushän­gen lassen, oder?

    • taton­ka:
      Ja, „brew update && brew install mari­adb” ist auf jeden Fall ner­ve­naufreiben­der als ein „port­snap fetch && port­snap extract”, 10 Minuten warten, „whereis mari­adb”, in den Ord­ner wech­seln, „make install clean” und dann den entsprechen­den Start­up-Befehl noch in die /etc/rc.conf schreiben, völ­lig klar. m(

      whereis mari­adb führt ja auch zu nichts, weil es einen Port dieses Namens nicht gibt. Ein­fach in /usr/ports/databases/ nachzuse­hen wäre wahrschein­lich aber zu logisch. Du bist Mac­nutzer, nicht wahr?

      (Neben­bei bemerkt: pkg install mari­adb-serv­er führt auch zum Ziel. Ein Befehl weniger!)

      Natür­lich liegen Debian-Web­sites nicht in /Library, oder irgend­wo inner­halb von /usr oder /etc, son­dern in einem merk­würdi­gen Son­derord­ner namens /var/www

      Total unl­o­gisch benan­nt, nicht?

      Warum gibt es /Library/WebServer/, wenn da nichts drin­liegt, was für den Web­serv­er von Belang ist? :aufsmaul:

      Natür­lich liegen FreeB­SD-Web­sites nicht in /var/www, oder irgend­wo inner­halb von /Library oder /etc, son­dern in einem merk­würdi­gen Son­derord­ner namens /usr/local/www/apache/data

      Bei mir nicht.

      Wie es unter Win­dows aussieht, weiß ich nicht, aber du kannst da bes­timmt pri­ma ranten, dass die Slash­es falsch herum sind.

      Unter Dreck OS X sind dafür die Back­slash­es falschrum.

      Wie kommst du auf den abso­lut unsin­ni­gen Gedanken, dass Web­seit­en jemals irgend­wo in /etc liegen wür­den?

      Unsin­nige Verze­ich­nisaufteilung (“wir haben /Library/WebServer, aber /Library/Server ist doch viel schöner!!1″) sollte doch nicht mehr weit­er ver­wun­dern.

      da du ja als FreeB­SD-Experte und Admin­is­tra­tor eingestellt wur­dest, sollte man doch eigentlich davon aus­ge­hen, dass du den chsh-Befehl kennst.

      Ist mir geläu­fig, ja, inva­li­diert aber meine Beschw­erde nicht. Ich wurde übri­gens als Weben­twick­ler eingestellt, erst danach kam “kannst du mal…?” — ver­mut­lich aus gutem Grund.

      Und schon sind mehrere Kri­tikpunk­te, die du hier ange­sprochen hast, aus­ge­he­belt.

      Nö.

      Aber ein­fach zu googlen wäre natür­lich zu ein­fach gewe­sen, lieber mal den OS-Nazi raushän­gen lassen, oder?

      “Nachguck­en, wie man Prob­leme lösen kann” ist das Eine.

      Wenn mir da aber ein Sys­tem hingestellt wird, das als logisch durch­dacht und ein­fach zu bedi­enen bewor­ben wird und das mich dann fas­sungs- wie rat­los die total däm­liche Verze­ich­nis­logik bewun­dern lässt, werde ich mich ja wohl noch darüber aus­lassen dür­fen, ohne dass gle­ich ein­er die God­winkarte zieht.

      Auch Win­dows ist ein her­vor­ra­gen­des Sys­tem, wenn du nachguckst, wie du die Prob­leme lösen kannst. Nun?

  3. Bei mir — unter Debian Test­ing — macht “bash” jeden­falls was es soll — ich weiß nicht wie das bei Mac OS X aussieht, aber nor­maler­weise ist die Bash recht “Logisch”… ;)

    Es gibt einen guten Grund, warum OS X in Unternehmen so beliebt ist: Es ist fast Undurch­sicht­bar, Unnötig Kom­pliziert und auf ein Art und Weise ver­strickt, die sich nor­male Linux/Unix User niemals vorstellen kön­nen. So kann man doch auch sich­er die Geschäfts­ge­heimnisse Ver­steck­en: Unlogik ist doch bes­timmt die Sich­er­ste OS X Ver­schlüs­selungsmeth­ode, die auch sehr oft einge­set­zt wird *gg*

    Unter Fedo­ra bzw. RHEL 5,6,7 und Debian(die kenne ich/hab ich auf meinem Sys­tem) liegt PHP meist in /var/www(Debian) oder /var/www/html(RHEL) bzw /var/www(falls kein CGI mitin­stal­liert wurde).. Kryp­tologik-FTW! :aufsmaul:

    Bei dir in der Fir­ma würde ich wohl direkt nach dem ersten “Geh zu OS X” wohl sagen, dass der­jenige “sich doch bitte meine Arbeit oder OS X in den Anus schieben 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.