+
Costruire un server LAMP Questo documento vi guiderà attraverso l'installazione di quello che è conosciuto come un sistema "LAMP": Linux. Apache. MySQL e PHP. A seconda di chi parli, la P sta anche per Perl o Python. ma in generale, si presume essere PHP. Corro CentOS sui miei server; queste istruzioni sono state scritte per CentOS / Red Hat / Fedora. Ho avuto richieste di SuSE (un'altra distribuzione basata su RPM), così come i sistemi basati su Debian, quindi lavorerò sulle varianti di queste indicazioni per tali distribuzioni in futuro (le donazioni potrebbero contribuire ad accelerare che elaborano in su!). La principale differenza tra le distribuzioni è nei percorsi per gli script di avvio. sistemi Red Hat usati /etc/rc. d/init. de SuSE utilizza /etc/init. d. Se avete bisogno di un server SSL-enabled, ho una lampada con howto SSL pure. Ho progettato questo documento in modo solo è possibile copiare / incollare ogni riga o il blocco dei comandi nella sessione di shell e sarà "solo lavoro" per voi. Questo evita la digitazione noiosa, e gli inevitabili errori di battitura o passaggi mancanti che risultano. Questi comandi funzionano correttamente tramite copia / incolla. Se si hanno problemi e non si sta utilizzando il copia / incolla, si prega di ricontrollare la digitazione prima di mandarmi una e-mail dicendo "Non funziona". Testo in una casella "comando" come questo è una linea di comando di Linux letterale, e deve essere digitato o incollato esattamente come scritto. Una nota: molte molte persone hanno seguito queste direzioni come scritto, e non hanno avuto alcun problema. Se si verifica un problema, è probabile che si tratta di qualcosa che si sta facendo (o non fare), qualcosa di diverso sul computer, etc. Probabilmente non è questa procedura. ) Tenere presente che una installazione di origine-based come questo non è necessario per un server LAMP BASE! Si dovrebbe fare solo un'installazione source-based se è necessario modificare le impostazioni in uno o più componenti dello stack LAMP (ad esempio, hai bisogno di una funzione in PHP che non è nel RPM di default). Se siete appena iniziato con LAMP, usare i binari forniti dalla vostra distribuzione - è molto più semplice e molto più facile da aggiornare in seguito. La maggior parte delle installazioni out-of-the-box di Red Hat Linux avranno uno o più dei componenti lampada installata tramite file RPM. Credo personalmente l'installazione di cose come questa da fonte, in modo da ottenere il massimo controllo su ciò che è compilato in, ciò che resta fuori, ecc, ma il codice sorgente installa può devastare se sovrapposto sulla parte superiore del RPM installa, come i due più probabile vinto ' t condividono le stesse directory, ecc Se non avete ancora installato il sistema operativo Linux, o anche solo per riferimento futuro, non scegliere di installare Apache, PHP, MySQL o durante l'installazione del sistema. Poi si può procedere immediatamente con la sorgente di installazione basato elencati qui. Nota: per installare applicazioni dal codice sorgente, avrete bisogno di un compilatore C ++ (gcc ++) installato. Questo è generalmente curato, ma ho avuto abbastanza domande su di esso che ho aggiunto questa nota per evitare di ottenere di più! È possibile utilizzare installare i CD della vostra distribuzione per ottenere la versione corretta del compilatore. O, se si utilizza un distro RPM based, è possibile utilizzare un sito come http://www. rpmfind. net/ di individuare la versione RPM corretto per il sistema. (È evidente che non è in grado di utilizzare / ricostruire un RPM sorgente per ottenere il compilatore installato, come è necessario il compilatore per costruire il RPM binario finale!) Su un sistema Fedora, si può fare questo comando: su - root yum install gcc gcc-c ++ Perché ci sarà l'installazione di software di directory che gli utenti "normali" non hanno accesso in scrittura al, e anche, eventualmente, disinstallare le versioni RPM di alcune applicazioni, faremo il login come root. Gli unici passi che devono accesso root sono i passaggi di installazione effettivi, ma facendo la configurare e fare passi come root. il codice sorgente sarà anche inaccessibile agli utenti "normali". Se non si dispone di accesso diretto (tramite tastiera) al server, utilizzare Secure Shell (SSH) per accedere al server Telnet e non. Ogni volta che si utilizza telnet (o FTP normale per questo), si sta trasmettendo il nome utente, la password, e tutte le informazioni di sessione in "solo testo". Questo significa che chiunque può accedere a una qualche parte macchina tra il PC e il server può curiosare la sessione e ottenere le informazioni. Utilizzare la crittografia per quanto possibile! Rimuovere le versioni RPM delle applicazioni Prima di iniziare con il nostro codice sorgente di installazione, è necessario rimuovere tutti i file RPM esistenti per questi prodotti. Per scoprire quali sono già installati gli RPM, utilizzare il comando query RPM: in combinazione con grep per filtrare i risultati: rpm - qa | grep - i apache rpm - qa | grep - i httpd rpm - qa | grep - i php rpm - qa | grep - i mysql La ricerca 'httpd' è nel caso in cui si dispone di Apache2 installato tramite RPM. Per rimuovere gli RPM generati da questi comandi, fare per ogni numero di giri che avete trovato nella query. Se avete qualsiasi contenuto nel vostro database MySQL già, la fase di rimozione RPM non deve eliminare i file di database. Quando si reinstalla MySQL, si dovrebbe essere in grado di spostare tutti i file per la nuova directory dei dati di MySQL e di avere accesso a tutti loro di nuovo. Ottenere il codice sorgente per tutte le applicazioni Vogliamo mettere tutto il nostro codice sorgente in un posto centrale, quindi non è sempre coinvolto in directory casa di qualcuno, etc. Un modo viene distribuito il codice sorgente dell'applicazione è in quelli che sono conosciuti come "tarball". Il comando tar è di solito associata con fare backup su nastro - tar sta per T scimmia AR erba cipollina. E 'anche un modo pratico per i bagagli più file per una facile distribuzione. Utilizzare il comando tar man per maggiori informazioni su come utilizzare questo strumento molto flessibile. Al momento di aggiornare questo, le versioni attuali di tutti i componenti useremo sono: MySQL - 4.1.22 Apache - 1.3.37 PHP - 4.4.6 Si prega di notare: queste sono le uniche versioni di questi che ho creato io stesso, e verificati questi passaggi contro. Se si utilizza un'altra versione di qualsiasi componente, in particolare una versione più recente, questo HOWTO potrebbe non essere preciso, e non sarà in grado di fornire assistenza gratuita in quelle circostanze. supporto a pagamento e l'assistenza è sempre disponibile però. wget wget http://www. php. net/distributions/php-4.4.6.tar. gz http://apache. oregonstate. edu/httpd/apache_1.3.37.tar. gz Ci può essere uno specchio di Apache più vicino a voi - controllare la loro pagina di specchio per altre fonti. Quindi inserire l'URL si ottiene in luogo di quanto sopra per il comando wget. Per MySQL, andare a http://www. mysql. com/ e scegliere un mirror appropriata per ottenere la versione più recente di MySQL (v4.1.22). Scompattare il codice sorgente tar zxf php-4.4.6.tar. gz tar zxf apache_1.3.37.tar. gz tar zxf mysql-4.1.22.tar. gz Questo dovrebbe lasciare con le seguenti directory: /usr/local/src/php-4.4.6 /usr/local/src/apache_1.3.37 /usr/local/src/mysql-4.1.22 Costruire e installare MySQL In primo luogo, creiamo il gruppo e l'utente che "possiede" MySQL. Per motivi di sicurezza, non vogliamo MySQL in esecuzione come utente root sul sistema. Per essere in grado di identificare facilmente i processi di MySQL in cima o in una lista ps, faremo un mysql utente e gruppo denominato: groupadd mysql useradd - g mysql - c mysql "MySQL Server" Se si ottiene alcun messaggio sul gruppo o un utente già esistente, va bene. L'obiettivo è solo per assicurarsi che li abbiamo sul sistema. Che il comando useradd sta facendo è la creazione di un mysql utente nel mysql gruppo con il "nome" di MySQL Server. In questo modo quando è mostrato in varie applicazioni guardare utente e di processo, sarete in grado di dire che cosa è subito. Ora cambieremo nella directory "lavoro" in cui il codice sorgente è, modificare il file 'proprietà' per l'albero dei sorgenti (questo impedisce costruire questioni riportate in alcuni casi in cui il nome utente del confezionatore è stata inclusa la fonte e si aren ' t utilizzando lo stesso nome esatto per compilare con!) e iniziare a costruire. Il comando configure ha molte opzioni che è possibile specificare. Ho elencato alcuni tra quelli abbastanza comuni; se vuoi vedere gli altri, fare: / Configurare --help | Di meno per vederle tutte. Leggere la documentazione sul sito di MySQL per una spiegazione più dettagliata di ogni opzione. chown - R root. root * / Configure \ --prefix = / usr / local / mysql \ --localstatedir = / usr / / mysql / dati locali \ --disable-maintainer-mode \ --with-mysqld-user = mysql \ --with-unix - socket-path = / tmp / mysql. sock \ --without-commento \ --without-debug \ --without-panca 18-lug-2005: Se si installa MySQL 4.0.x su Fedora Core 4, c'è un problema con LinuxThreads che impedisce MySQL da compilare in modo corretto. Installazione su Fedora Core 3 funziona bene comunque. Grazie a Kevin Spencer per aver portato questo alla mia attenzione. C'è una soluzione elencata a http://bugs. mysql. com/bug. php? id=9497. Grazie a Collin Campbell per quel link. Un'altra soluzione può essere trovato alla http://bugs. mysql. com/bug. php? id=2173. Grazie a Kaloyan Raev per quello. Ora viene la parte lunga, in cui il codice sorgente è in realtà compilato e poi installato. Piano per prendere un caffè o fare una pausa durante questo passaggio viene eseguito. Potrebbe essere 10-15 minuti o più, a seconda della memoria disponibile del sistema, carico medio, etc. fare & amp; & amp; make install MySQL è "installato" ma abbiamo ancora qualche passo fino a quando in realtà è "fatto" e pronto per iniziare. In primo luogo eseguire lo script che in realtà imposta database MySQL interna (nome, stranamente, mysql). Poi vogliamo impostare la proprietà corretta per le directory ei file di dati di MySQL, in modo che solo MySQL (e radice) può fare qualsiasi cosa con loro. chown - R root: mysql / usr / local / mysql chown - R mysql: mysql / usr / local / mysql / dati Copiare il file di configurazione di default per la dimensione prevista del database (piccolo, medio, grande, enorme) cp support-files / my-medium. cnf radice /etc/my. cnf chown: sys /etc/my. cnf chmod 644 /etc/my. cnf Se si riceve un messaggio di errore relativo alla directory dati non esistenti, ecc qualcosa è andato storto nel passaggio mysql_install_db sopra. Torna indietro e rivedere quella; assicurarsi che non ha ottenuto una sorta di messaggio di errore quando è stato eseguito, etc. Ora dobbiamo dire al sistema dove trovare alcune delle librerie dinamiche che MySQL sarà necessario eseguire. Usiamo librerie dinamiche anziché statico per mantenere l'utilizzo della memoria del programma MySQL sé al minimo. echo "/ usr / local / mysql / lib / mysql" >> /etc/ld. so. conf ldconfig Ora creare uno script di avvio, che consente di MySQL auto-start ogni volta che il server viene riavviato. cp ./support-files/mysql. server /etc/rc. d/init. d/mysql chmod + x /etc/rc. d/init. d/mysql / sbin / chkconfig --level 3 mysql su Quindi impostare link simbolici per tutti i binari di MySQL, in modo che possano essere eseguiti da qualsiasi luogo, senza dover includere / specificare i percorsi lunghi, etc. cd / usr / local / mysql / bin for file in *; fare ln / file / - s / usr / local / mysql bin $ / usr / bin / $ file; fatto MySQL Problemi di sicurezza In primo luogo, si suppone che solo le applicazioni sullo stesso server sarà permesso di accedere al database (non un programma cioè in esecuzione su un server fisicamente separati). Così diremo MySQL non ascoltare nemmeno sulla porta 3306 per le connessioni TCP come fa di default. Modifica /etc/my. cnf e rimuovere il commento Linea (eliminare lo #). Per maggiori informazioni di sicurezza, controllare questo tutorial sicurezza MySQL. In primo luogo, verificare la copia collegata dello script di avvio del server normale runlevel iniziare directory, per assicurarsi che il collegamento simbolico è stato configurato correttamente: Se vi capitasse di voler avviare o arrestare il server MySQL manualmente, usare questi comandi: /etc/rc. d/init. d/mysql avviare /etc/rc. d/init. d/mysql fermare Facciamo "test" l'installazione per vedere quale versione di MySQL stiamo correndo ora: Si dovrebbe rispondere di nuovo con la versione che abbiamo appena installato. Ora faremo impostare una password per l'utente root di MySQL (si noti che l'utente root di MySQL non è la stessa come utente root del sistema, e sicuramente non dovrebbe avere la stessa password come utente root del sistema!). mysqladmin - u root password nuova-password di (Ovviamente, inserire la propria password nel comando sopra al posto della stringa "nuova-password"!) Hai finito! MySQL è ora installato e in esecuzione sul server. Si consiglia vivamente di leggere sulla sicurezza MySQL e bloccare il server di quanto più possibile. Il sito di MySQL ha informazioni a http://www. mysql. com/doc/en/Privilege_system. html. Per eseguire un test rapido, utilizzare il programma di mysql riga di comando: e inserire la nuova password dell'utente root quando richiesto. Si vedrà, quindi il prompt di MySQL: In primo luogo, mentre siamo qui, noi ci occuperemo di un altro problema di sicurezza ed eliminare il test database di esempio e tutti gli account di default, tranne per l'utente root di MySQL. Inserisci ognuna di queste linee a mysql> prompt di: test di caduta del database; usare MySQL; eliminare dalla db; cancellare dal utente in cui non (host = "localhost" e user = "root"); privilegi a filo; Come un altro misura di sicurezza, mi piace cambiare il nome dell'account di amministratore di MySQL da radice a qualcosa di più difficile da indovinare. In questo modo sarà molto più difficile per qualcuno che guadagna l'accesso alla shell al server per prendere il controllo di MySQL. Assicuratevi di ricordare questo nuovo nome, e usarlo Ovunque si vede "root" in altre direzioni, siti web ecc Una volta fatto questo passo, il "root" username cesserà di esistere in MySQL CONFIGURAZIONE! Aggiornare Imposta utente user = "SQLADMIN" dove user = "root"; privilegi a filo; Ora, con il test "standard". In primo luogo, creare un nuovo database: creare foo base di dati; Si dovrebbe vedere il risultato: Query OK, 1 riga interessata (0,04 sec) Eliminare il database: eliminare foo base di dati; Si dovrebbe vedere il risultato: Query OK, 0 righe interessate (0.06 sec) Per uscire da MySQL immettere \ q: Compilare e installare Apache (con supporto DSO) Il vantaggio per la costruzione di Apache con il supporto per i moduli caricati dinamicamente è che in futuro, è possibile aggiungere funzionalità al server web semplicemente la compilazione e l'installazione dei moduli, e il riavvio del server web. Se le caratteristiche sono stati compilati in Apache, si avrebbe bisogno di ricostruire Apache da zero ogni volta che si vuole aggiungere o aggiornare un modulo (come PHP). Il tuo binario Apache è anche più piccolo, il che significa che l'utilizzo della memoria più efficiente. L'aspetto negativo di moduli dinamici è un leggero calo di prestazioni rispetto ad avere i moduli compilati in. / Configure \ --prefix = / usr / local / apache \ --enable-shared = max \ --enable-module = rewrite \ --enable-module = così fare & amp; & amp; make install Costruire e installare PHP In questa sezione è stato testato solo con PHP V4.x. Se si sta tentando di costruire PHP 5.x, non ho esperienza con questo ancora, e non forniscono supporto gratuito per voi per farlo funzionare. Si prega di notare che ci sono molte opzioni che possono essere selezionati durante la compilazione di PHP. Alcuni avranno dipendenze di librerie, che significa alcuni software potrebbe essere necessario essere già installato sul server prima di iniziare a costruire il PHP. È possibile utilizzare il comando / Configurare --help | Di meno una volta che si cambia nella directory dei sorgenti PHP. Questo ti mostrerà un elenco di tutti i possibili interruttori di configurazione. Per maggiori informazioni su ciò che questi interruttori sono, si prega di consultare la documentazione di sito Web PHP. / Configure \ --with-apxs = / usr / local / apache / bin / apxs \ --disable-debug \ --enable-ftp \ --enable-inline-ottimizzazione \ --enable-magic-quotes \ - enable-mbstring \ --enable-mm = condivisa --enable-safe-mode \ \ --enable-track-vars \ --enable-trans-sid \ --enable-WDDX = Shared \ --enable-xml \ --with-dom \ --with-gd \ --with-gettext \ --with-mysql = / usr / local / mysql \ --with-regex = system \ --with-xml \ --with-zlib - dir = / usr / lib fare & amp; & amp; make install cp php. ini-dist /usr/local/lib/php. ini Mi piace tenere i miei file di configurazione tutti insieme in / etc. Ho creato un link simbolico come questo: ln - s /usr/local/lib/php. ini /etc/php. ini Allora posso solo aprire /etc/php. ini nel mio editor per apportare modifiche. Letture consigliate sulla necessità di garantire l'installazione di PHP è questo articolo a SecurityFocus. com. Modificare il file di configurazione di Apache (httpd. conf) Mi piace tenere tutti i miei file di configurazione insieme in / etc. Così ho creato un link simbolico dalla posizione attuale di / etc: ln - s /usr/local/apache/conf/httpd. conf /etc/httpd. conf /etc/httpd. conf ora aperto nel vostro editor di testo preferito, e impostare tutte le opzioni di base di Apache in conformità con le istruzioni ufficiali Apache (al di là della portata di questo HOWTO). Consigliato anche è l'articolo sulla protezione di Apache. Per garantire i file PHP siano correttamente interpretati, e non solo scaricati come file di testo, rimuovere il # all'inizio delle righe che leggere: applicazione #AddType / x-httpd-php. php applicazione #AddType. phps / x-httpd-php-source Se in precedenza non esistono le linee di questa direttiva, li inserire manualmente (senza lo # naturalmente) dopo la linea AddType application / x-tar. tgz o dovunque all'interno del & lt; IfModule mod_mime. c> sezione httpd. conf. Se si desidera utilizzare altre / ulteriori estensioni / tipi di file per gli script PHP invece di. php. aggiungerli alla direttiva AddType: AddType / x-httpd-php. php applicazione. foo AddType application / x-httpd-php-source. phps. phtmls Un esempio: se si voleva ogni singola pagina HTML per essere analizzati e trattati come uno script PHP, basta aggiungere. htm e. html: AddType application / x-httpd-php. php. htm. html Ci sarà un po 'di una perdita di prestazioni se ogni singola pagina HTML possa essere controllato per il codice PHP, anche se non contiene alcuna. Ma se si desidera utilizzare PHP, ma essere "furtivo" su di esso, è possibile utilizzare questo trucco. Aggiungere index. php alla lista dei file degli indici validi Directory in modo che la "pagina di default" in una directory può essere nominato index. php. & Lt; IfModule mod_dir. c> DirectoryIndex index. php index. html index. htm & lt; / IfModule> È possibile aggiungere qualsiasi altra cosa che si desidera anche qui. Se si desidera foobar. baz ad essere una pagina di indice directory valida, basta aggiungere il tipo di file. baz alla linea AddType, e aggiungere foobar. baz alla linea DirectoryIndex. Vogliamo impostare Apache di soprassalto normale / arrestare script in /etc/rc. d/init. d in modo che possa essere auto-iniziato e controllato come gli altri demoni di sistema. Impostare un collegamento simbolico per l'utilità apachectl (installato automaticamente come parte di Apache): ln - s / usr / local / apache / bin / apachectl /etc/rc. d/init. d/apache Quindi impostare auto-start per il runlevel 3 (in cui il server passerà per impostazione predefinita): ln - s /etc/rc. d/init. d/apache /etc/rc. d/rc3.d/S90apache Quindi avviare il demone: È possibile verificare che sta funzionando correttamente facendo: e cercare per i processi httpd. Una nota da parte dell'autore Spero che troviate questa guida, HOWTO, esercitazione - chiamatelo come volete - utile. Spero anche che consente di risparmiare un po 'di tempo. Se trovate utile, sarei grato se volesse fare una donazione utilizzando il pulsante qui sotto (e se non fosse utile, mail me e mi dica perché no). Ricevo una grande quantità di posta elettronica a causa di questo HOWTO, gran parte di essa mi chiede di risolvere i vari problemi LAMP-related. Si prega di tenere a mente che il denaro che mette cibo sul tavolo della mia famiglia viene dal lavoro di consulenza che faccio. Se volete aiuto con uno qualsiasi dei punti discussi in questo articolo, mail me e dimmi cosa che l'aiuto vale a voi. Quota qualsiasi importo che ti piace, e se sono in grado di dare una mano, è possibile fare una donazione PayPal per mezzo di grazie. Giusto?
No comments:
Post a Comment