In cima alla mia testa dovrai:
- Impara a orientarti nel file system.
- Scopri come avviare/arrestare i processi (servizi) che stai utilizzando.
- Trova o impara un editor di testo di base (Vim, JOE o Pico)
- Impara a controllare i processi per vedere se le cose sono in esecuzione (ps, in alto)
- Se stai gestendo il server, dovrai imparare come installare i pacchetti.
Queste sono solo le basi. Il passo successivo è rendersi conto di quando hai un problema e sapere dove puoi andare per trovare maggiori informazioni al riguardo. Anche con tutto questo, si sta solo grattando la superficie e molte cose potrebbero non avere senso. È comunque un buon inizio.
L'80% dei tuoi problemi saranno i permessi. Windows li fa in modo diverso; se accedi come root (o con privilegi simili a root) puoi bypassare i permessi. Apache non può e non lo farà.
- Scopri come impostare correttamente la proprietà di file e directory. Qualsiasi libro su Unix lo tratterà:assicurati di capirlo davvero -- non è sicurezza di Windows scritta in modo diverso -- è un modello diverso per la sicurezza.
Dei restanti problemi, l'80% saranno problemi PATH. PHP non ha un problema PATH così grande come Java e Python, ma usano tutti un'impostazione PATH per trovare componenti e librerie. Sbaglierai quelli 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 d'ambiente usano PHP e MySQL. Assicurati di sapere dove e come vengono impostati. Apache viene eseguito nel suo ambiente peculiare e dispone di comandi per fornire le impostazioni dell'ambiente di runtime tramite
mod_php
. Scrivi il breveecho $PATH
script di shell per rivelare cosa sta succedendo.
Dei restanti problemi, l'80% riguarderà il database. Dopo aver risolto le autorizzazioni del database, dovrai comunque connetterti e le cose "named pipe" rispetto a "localhost" saranno sbagliate in modi oscuri e confusi. MySQL è molto indulgente, ma qui commetterai degli errori.
- Prova ogni connessione alternativa, scopri come funzionano. Non sceglierne uno perché è simile a Windows o "più semplice". In realtà esercita ciascuno. Anche il modo in cui passi nomi utente e password dall'app Web al server di database è importante. Apache viene eseguito come "nessuno" e non vuoi concedere loro l'accesso predefinito a nulla. La tua app dovrebbe stabilire una connessione intenzionale al database senza utilizzare le impostazioni predefinite.
Dei restanti problemi, l'80% saranno configurazioni di Apache. Apache è davvero semplice, ma ha un milione di opzioni. Ci sono quattro modi per fare tutto, e ne proverai sempre due che non funzionano affatto, e ti accontenterai del terzo che sarà schifoso. 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. Impegnati per la semplicità. Copia gli esempi esistenti e usali. Non creare requisiti o implementazioni desiderate in base all'esperienza IIS o all'esperienza desktop Windows. Copia qualcosa che funzioni.
Dei restanti problemi, l'80% riguarderà l'utilizzo da parte dell'applicazione del file system. Se provi ad aprire, leggere o scrivere file locali, scoprirai che (a) i permessi non sono corretti sulla directory che stai cercando 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 in Unix/Linux tratta questo argomento. Non è molto diverso da Windows, abbastanza diverso da farti inciampare la prima volta. Scrivi pagine PHP simili a "ciao mondo" per aumentare la versione più semplice possibile di caricamenti o download solo per essere sicuro di avere tutti i pezzi e le parti a posto. Quindi correggi la tua app completa per farlo correttamente.
Dei restanti problemi, l'80% riguarderà la creazione di sottoprocessi. Windows lo fa in modo diverso. Una delle cose più importanti in Unix è ricordare che il tuo sottoprocesso è tuo figlio e devi effettivamente attendere che finisca in modo che il sistema operativo possa ripulire. Se pensi a un sottoprocesso come a una cosa parallela "spara e dimentica", avrai processi zombi e sarai costretto a eseguire 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 problemi rimanenti saranno la banale logica dell'applicazione, ma a causa delle differenze di piattaforma, darai la colpa a Unix prima di rintracciare il bug nell'applicazione PHP.
- Ottieni i tuoi unit test e la tua registrazione in modo da poter eseguire il debug in modo efficace.