Domanda

Essendo uno sviluppatore di Windows, sto attualmente lavorando al mio progetto usando LAMP. Capisco quello che devo sapere su PHP e MySQL, ma Linux sembra enorme e non è chiaro da dove cominciare e cosa è abbastanza alla luce dei miei obiettivi.
E i miei obiettivi sono comprendere concetti generali, essere in grado di distribuire il progetto a un provider di hosting e di essere in grado di monitorare le prestazioni del sito al fine di individuare problemi, caricare problemi, ecc.
Lo so, la soluzione migliore è quella di ottenere un amministratore Linux per farlo, ma prima che io possa farlo devo farlo da solo.

Dimmi come!

Sarebbe bello se le persone espandessero le loro risposte su cosa per imparare con come per impararlo (dovrei comprare un libro in particolare, o c'è un buon tutorial online o ...?).

È stato utile?

Soluzione

L'80% dei tuoi problemi saranno permessi. Windows li fa diversamente; se accedi come root (o con privilegi simili a root) puoi ignorare le autorizzazioni. Apache non può e non lo farà.

  • Scopri come impostare correttamente la proprietà di file e directory. Qualsiasi libro Unix tratterà questo: assicurati di capirlo davvero - non è la sicurezza di Windows scritta diversamente - è un modello diverso per la sicurezza.

Dei restanti problemi, l'80% saranno problemi PATH. PHP non ha un problema PATH tanto grande quanto Java e Python, ma usano tutti un'impostazione PATH per trovare componenti e librerie. Li sbaglierai regolarmente. Windows ha un PERCORSO, ma ha anche un registro, che rende le cose super facili o super segrete. Unix non ha segreti.

  • Scopri quali variabili di ambiente utilizzano PHP e MySQL. Assicurati di sapere dove e come vengono impostati. Apache viene eseguito nel proprio ambiente peculiare e dispone di comandi per fornire le impostazioni dell'ambiente di runtime tramite mod_php. Scrivi brevi echo $PATH script di shell per rivelare cosa sta succedendo.

Dei restanti problemi, l'80% sarà correlato al database. Dopo aver risolto i permessi del database, dovrai comunque connetterti e la & Quot; named pipe & Quot; vs. " localhost " le cose andranno male in modi oscuri e confusi. MySQL è molto indulgente, ma qui commetterai alcuni errori.

  • Prova ogni connessione alternativa, sappi come funzionano. Non sceglierne uno perché è simile a Windows o & Quot; più semplice & Quot ;. Esercitati effettivamente ciascuno. È importante anche il modo in cui si passano nomi utente e password dall'app Web al server di database. Apache funziona come & Quot; nobody & Quot; - e non vuoi dare loro l'accesso predefinito a nulla. L'app deve stabilire una connessione intenzionale al database senza utilizzare i valori predefiniti.

Dei restanti problemi, l'80% sarà configurato da Apache. Apache è davvero semplice, ma ha un milione di opzioni. Ci sono quattro modi per fare tutto, e tu ne proverai sempre due che non funzionano affatto e ti accontenterai del terzo che sarà malato. Il quarto, che è molto più semplice, non ti verrà mai in mente.

  • Leggi MOLTO sulla configurazione di Apache. Il sito httpd.apache.org contiene molte informazioni. Cerca la semplicità. Copia esempi esistenti e usali. Non creare requisiti o implementazioni desiderate in base all'esperienza IIS o all'esperienza desktop di Windows. Copia qualcosa che funziona.

Dei restanti problemi, l'80% sarà l'uso dell'applicazione del file system. Se provi ad aprire, leggere o scrivere file locali, scoprirai che (a) le autorizzazioni non sono corrette nella directory che stai tentando di usare [vedi sopra] e (b) i percorsi dei file Unix sono diversi. Non molto diverso, ma abbastanza diverso che qualcosa si romperà in modo oscuro.

  • Ogni libro di programmazione nel libro Unix / Linux copre questo. Non è molto diverso da Windows, quanto basta per farti inciampare per la prima volta. Scrivi & Quot; ciao mondo & Quot; -come le pagine PHP per aggiungere la versione più semplice possibile di upload o download solo per essere sicuro di avere tutti i pezzi in atto. Quindi correggi la tua app completa per farlo correttamente.

Dei restanti problemi, l'80% sarà la creazione di sottoprocessi. Windows lo fa diversamente. Una delle cose più importanti in Unix è ricordare che il tuo sottoprocesso è tuo figlio e devi effettivamente aspettare che finisca in modo che il sistema operativo possa ripulire. Se si considera un sottoprocesso come un parallelo & Quot; fire-and-forget & Quot; cosa, avrai processi di zombi e sarai costretto a fare riavvii periodici.

  • Scrivi pagine PHP molto semplici per aumentare la gestione dei sottoprocessi. La regola d'oro è gestire i tuoi figli e ripulire dopo di loro. Quindi correggi la tua app completa per farlo correttamente.

I restanti problemi saranno banalilogica dell'applicazione, ma a causa delle differenze della piattaforma, incolperai Unix prima di rintracciare il bug nell'applicazione PHP.

Altri suggerimenti

Dalla parte superiore della mia testa dovrai:

  1. Scopri come spostarti nel file system.
  2. Scopri come avviare / interrompere i processi (servizi) che stai utilizzando.
  3. Trova o impara un editor di testo di base (vim, joe, pico)
  4. Impara a controllare i processi per vedere se le cose sono in esecuzione (ps, top)
  5. Se stai mantenendo il server, dovrai imparare come installare i pacchetti.

Queste sono solo le basi, il prossimo passo è capire quando hai un problema e sapere dove puoi andare per scoprire maggiori informazioni a riguardo. Anche con tutto ciò sta solo graffiando la superficie e molte cose potrebbero non avere senso, ma è un buon inizio.

Stavo facendo PHP / MySQL su Windows e Mac da alcuni anni quando mi fu chiesto di portare un sito intranet abbastanza complesso da IIS / Windows ad Apache / Linux. Non avevo esperienza con Linux e server vuoto senza alcun sistema operativo. In circa due giorni io e un altro amministratore di Windows senza quasi nessuna esperienza Linux abbiamo avuto una copia di CentOS funzionante con PHP / MySQL / Apache e la rete Intranet.

Le lezioni che ho imparato: " yum " è il tuo migliore amico durante l'installazione dei tuoi servizi, " sudo " è il tuo migliore amico durante la configurazione dei tuoi servizi (le autorizzazioni possono essere una seccatura) e quasi tutti gli altri problemi sono dovuti a distinzione tra maiuscole e minuscole o problemi di barra rovesciata. Si è scoperto che abbiamo compromesso un po 'la sicurezza sull'accesso FTP, ma questo era protetto da un firewall (dmz), quindi non c'erano danni prima che avessero un vero controllo di sicurezza e lo rafforzassero.

Risposta finale: se sei disposto a rimboccarti le maniche e sporcarti la riga di comando, ottenere un sito Web di base funzionante su una macchina Linux non è un compito enorme fino a quando non si arriva alla sicurezza che (IMO) è meglio lasciare a qualcuno che è un esperto in quella zona.

Potresti considerare, in base alla tua introduzione, un'opzione WAMP (Windows Apache MySQL Python / Perl / PHP).

Imparare Linux non è difficile , ma certamente non è nemmeno un compito breve. Ci sono molte attività di amministratore di sistema che si spostano da una piattaforma all'altra, ma la vera risposta alla tua domanda è essere almeno un amministratore Linux hobbista e poi andare da lì.

Imparerei vi e bash. vi è leggero e tende ad essere installato ovunque. Può essere una seccatura fino a quando non ti ci abitui, ma se vuoi conoscere Linux tende a essere praticamente sempre disponibile e avrai bisogno di un editor di testo molto. Imparerei anche bash, perché tende ad essere la shell predefinita.

I suggerimenti di vfilby sono buoni.

Impara sicuramente il gestore di pacchetti per qualunque Linux tu scelga. Trascorrerei un po 'di tempo con Apache, perché è un po' un mostro solo perché ha MOLTE opzioni di configurazione.

Cerco di mantenere il mio banco di prova di Linux lontano da Internet pubblico perché so di non essere un bravo amministratore di sistema per tenerlo al sicuro. Almeno mettilo dietro un firewall. È abbastanza facile trovare script iptables per bloccare tutto ciò che entra, quindi potresti voler controllare iptables per una buona manipolazione di firewall / indirizzo / porta.

Buona fortuna!

Per prima cosa dovresti decidere se gestirai il sistema usando gli strumenti della GUI (gnome o KDE) o se accederai principalmente da SSH usando una riga di comando. (Questa è generalmente una decisione basata su dove si trova il server). Imparare un po 'sia della GUI che della CLI fa molta strada. L'interfaccia della riga di comando è super potente, molto più del prompt dei comandi su Windows (conosco PowerShell ...)

Dal punto di vista della GUI, in genere ho il terminale (CLI) in esecuzione comunque, dal punto di vista di Debian / Ubuntu:

  1. Processi di avvio / arresto: sudo /etc/init.d/apache stop o sudo /etc/init.d/apache start
  2. Editor di testo: gedit (GUI - gnome), kate (GUI - KDE), vim (CLI) o nano (CLI)
  3. Processi in esecuzione: ps -aux
  4. Termina processo sudo kill -s TERM <process_id>
  5. Aggiungi un pacchetto: sudo apt-get install php5-cli
  6. Aggiorna / Patch un sistema: sudo apt-get update && sudo apt-get upgrade

Ci sono molte informazioni qui e una grande varietà di opzioni tra cui scegliere. Consiglierei di andare con una distro Linux con una community amichevole (ad esempio Ubuntu, CentOS (RHEL debranded / gratuito) o RHEL (li paghi per aiutarti).

Ci sarà sicuramente molto valore per cui giocare con una distribuzione per un fine settimana su una macchina virtuale o una macchina di riserva a casa / al lavoro. La comunità Linux è ENORME e troverai un eccellente supporto se la cerchi.

Dalla parte superiore della mia testa dovrai:

  1. Scopri come leggere le pagine del manuale / utilizzare il sistema di aiuto.
  2. Impara a navigare nel file system.
  3. Scopri come avviare / interrompere i processi (servizi) che stai utilizzando.
  4. Scopri dove accede il tuo server e come personalizzare i file di registro.
  5. Impara a controllare i processi per vedere se le cose sono in esecuzione (ps, top).
  6. Trova o impara un editor di testo di base (vim, joe, pico)
  7. Se stai mantenendo il server, dovrai imparare come installare i pacchetti.

Queste sono solo le basi, il prossimo passo è capire quando hai un problema e sapere dove puoi andare per scoprire maggiori informazioni a riguardo. Anche con tutto ciò sta solo graffiando la superficie e molte cose potrebbero non avere senso, ma è un buon inizio.

Dovresti

  • Impara la shell bash (specialmente $PATH, history)
  • Commandos di base (cd, ls, rm, tail, kill, ps, top)
  • Conoscere /proc e i suoi usi principali
  • Impara un editor (vi è sempre installato. Se vuoi puoi imparare anche emacs)
  • Sostituzione sed di base (sed s,orig,repl,g), un po 'scomodo
  • Come lavorare con iptables, netstat e traceroute
  • Come ottenere informazioni (man, info e --help)
  • Come installare un pacchetto (pacman -S <name> per archlinux, apt-get install <name> per debian based), rimuovere e aggiornare il sistema.
  • Sapere come avviare / interrompere i servizi nella tua distribuzione (/etc/init.d, /etc/rc.d)
  • Come funziona in generale un file system unix (inodes, che cos'è quota?). Comprensione ad esempio /etc/fstab. Conoscere df.
  • Comprensione di come gestire utenti e gruppi (useradd, groupadd). Conoscere il formato di /etc/passwd e /etc/group
  • Dove cercare i file di registro per apache e il syslog demone.
  • Conoscere alcune cose di basso livello come dmesg e hdparm

Principalmente, dovresti sapere come usare Linux (come nell'uso quotidiano). Quindi, dovresti anche sapere come gestire le righe di comando.

Infine, devi imparare cose specifiche per LAMPADA. Dovresti conoscere e applicare alcune linee guida di sicurezza di base (o non così basilari).

Francamente, molto poco se i siti Web su cui lavorerai sono molto piccoli o molto grandi. Molto piccolo significa hosting condiviso e non è necessario sudarlo, molto grande significa che probabilmente avrai un amministratore di sistema a bordo per gestirlo.

  • Aggiungi ai segnalibri o scarica il manuale GNU coreutils e leggilo regolarmente

  • Impara vim. Un buon inizio è vimtutor sulla shell.

  • Scopri come utilizzare i meccanismi di sicurezza, non solo disabilitarli. Windows ha una sicurezza lassista perché le applicazioni disponibili per essa si aspettano in questo modo (e altrimenti si spezzerebbero). In un ambiente simile a Unix, le applicazioni sono sempre state costrette a comportarsi e la sicurezza può essere rigida per impostazione predefinita.

Scarta una vecchia scatola su Craigslist e installa Gentoo Linux su di essa. Quella ... esperienza ... dovrebbe darti molta sensibilità per Linux e come la pensa.

Inoltre, nel caso vi vs. emacs , io comando emacs . (Anche se vorrai iniziare con pico / nano, perché non ha senso apprendere un editor completo mentre impari un nuovo sistema operativo).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top