Ricerca nel sito web

Come installare lo stack Linux, Apache, MySQL, PHP (LAMP) su CentOS 7


introduzione

Uno stack \LAMP” è un gruppo di software open-source che in genere viene installato insieme per consentire a un server di ospitare siti Web dinamici e app Web. Questo termine è un acronimo che rappresenta il sistema operativo Linux, con il server Web Apache. Il i dati del sito vengono generalmente archiviati in un database MySQL e il contenuto dinamico viene elaborato da PHP.

Sulla maggior parte dei sistemi Linux, puoi installare MySQL scaricando il pacchetto mysql-server dai repository di gestione dei pacchetti predefiniti del tuo sistema. Tuttavia, su CentOS 7 il pacchetto mysql-server installerà effettivamente MariaDB, un fork sviluppato dalla comunità del sistema di gestione del database relazionale MySQL che funziona come sostituto immediato di MySQL. Pertanto, questo tutorial illustrerà come installare uno stack LAMP composto da Linux, Apache, MariaDB e PHP su un server CentOS 7.

Prerequisiti

Prima di iniziare con questa guida, dovresti avere un account utente separato, non root impostato sul tuo server. Puoi imparare come farlo seguendo il nostro tutorial sulla configurazione iniziale del server per CentOS 7.

Passaggio 1: installazione del server Web Apache

Apache è un popolare server Web open source utilizzato per visualizzare le pagine Web ai visitatori. Puoi configurarlo per servire pagine PHP.

Installa Apache utilizzando il gestore di pacchetti di CentOS, yum. Un gestore di pacchetti consente di installare la maggior parte del software da un repository gestito da CentOS.

Digita questo comando nel tuo terminale per installare il pacchetto Apache httpd:

  1. sudo yum install httpd

Quando richiesto, inserisci Y per confermare l'installazione di Apache.

  1. sudo systemctl start httpd

Puoi verificare se il tuo server è in esecuzione inserendo il tuo indirizzo IP pubblico o il tuo nome di dominio nel tuo browser web.

Nota: se utilizzi DigitalOcean come provider di hosting DNS, puoi consultare la nostra documentazione del prodotto per istruzioni dettagliate su come impostare un nuovo nome di dominio e indirizzarlo al tuo server.

Se non hai un nome di dominio puntato sul tuo server o non conosci l'indirizzo IP pubblico del tuo server, puoi trovarlo eseguendo il seguente comando:

  1. ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Questo stamperà alcuni indirizzi diversi. Puoi provare ciascuno di essi nel tuo browser web.

Un metodo alternativo consiste nell'usare una parte esterna per dirti come vede il tuo server. Puoi farlo chiedendo a un server specifico qual è il tuo indirizzo IP con questo comando:

  1. curl http://icanhazip.com

Qualunque metodo tu scelga, digita il tuo indirizzo IP nel tuo browser web per verificare che il tuo server sia in esecuzione.

http://your_server_IP_address

Ti verrà presentata la pagina di destinazione predefinita di CentOS 7 Apache:

Puoi abilitare l'avvio di Apache all'avvio con:

  1. sudo systemctl enable httpd.service

Passaggio 2: installazione di MySQL (MariaDB)

Con il tuo server web attivo e funzionante, puoi installare MariaDB. Organizzerà e fornirà l'accesso ai database in cui il tuo sito può memorizzare le informazioni.

Per installare il pacchetto software MariaDB, eseguire:

  1. sudo yum install mariadb-server

Al termine dell'installazione, avvia MariaDB:

  1. sudo systemctl start mariadb

Puoi abilitare l'avvio di MariaDB all'avvio con questo comando:

  1. sudo systemctl enable mariadb.service

Per migliorare la sicurezza del tuo server di database, ti consigliamo di eseguire uno script di sicurezza preinstallato con MariaDB. Questo script rimuoverà alcune impostazioni predefinite non sicure e bloccherà l'accesso al tuo sistema di database.

Avvia lo script interattivo eseguendo:

  1. sudo mysql_secure_installation

Questo script ti guiderà attraverso una serie di prompt in cui puoi apportare alcune modifiche alla configurazione di MariaDB. Il primo prompt ti chiederà di inserire la password root del database corrente. Questo non deve essere confuso con l'utente root del sistema. L'utente root del database è un utente amministrativo con privilegi completi sul sistema del database. Poiché hai appena installato MariaDB e non hai apportato modifiche alla configurazione, questa password sarà vuota. Premi INVIO al prompt.

Il prompt successivo ti chiede se desideri impostare una password di root del database. Digita N e poi premi INVIO.

Da lì, puoi premere Y, e poi INVIO, per accettare i valori predefiniti per tutte le domande successive. Ciò rimuoverà gli utenti anonimi e il database di test, disabiliterà l'accesso root remoto e caricherà queste nuove regole in modo che il server rispetti immediatamente le modifiche apportate.

Quando hai finito, accedi alla console MariaDB inserendo:

  1. sudo mysql

Questo ti connette al server MariaDB come utente root del database amministrativo:

Output
Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 12 Server version: 5.5.68-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Per una maggiore sicurezza, è meglio disporre di account utente dedicati con privilegi meno estesi configurati per ogni database. Ciò è particolarmente importante se prevedi di avere più database ospitati sul tuo server.

Per dimostrare tale configurazione, crea un database denominato example_database e un utente denominato example_user. È possibile sostituire questi nomi con valori diversi.

Esegui il seguente comando dalla tua console MariaDB per creare un nuovo database:

  1. CREATE DATABASE example_database;

Puoi creare un nuovo utente e concedergli tutti i privilegi sul database personalizzato che hai appena creato. Il seguente comando definisce la password di questo utente come password, ma dovresti sostituire questo valore con una password sicura:

  1. GRANT ALL ON example_database.* TO 'example_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Questo comando fornisce all'utente example_user privilegi completi sul database example_database, impedendo a questo utente di creare o modificare altri database sul tuo server.

Usa l'istruzione FLUSH per ricaricare e salvare i privilegi che hai appena concesso a example_user:

  1. FLUSH PRIVILEGES;

Uscire dalla shell MariaDB:

  1. exit

Puoi verificare se il nuovo utente dispone delle autorizzazioni appropriate accedendo nuovamente alla console MariaDB, ma utilizzando le credenziali example_user che hai creato in precedenza:

  1. mysql -u example_user -p

Nota il flag -p in questo comando, che ti chiederà la password che hai scelto durante la creazione dell'utente example_user. Dopo aver effettuato l'accesso alla console MariaDB, conferma di avere accesso al database example_database con questa istruzione:

  1. SHOW DATABASES;

Il tuo example_database dovrebbe essere elencato nell'output:

Output
+--------------------+ | Database | +--------------------+ | example_database | | information_schema | +--------------------+ 2 rows in set (0.000 sec)

Per uscire dalla shell MariaDB, digitare:

  1. exit

Il tuo sistema di database è configurato e puoi passare all'installazione di PHP.

Passaggio 3: installazione di PHP

Hai installato Apache per servire i tuoi contenuti e MariaDB per archiviare e gestire i tuoi dati. PHP elaborerà il codice per visualizzare il contenuto dinamico all'utente. Oltre al pacchetto php, avrai bisogno di php-mysql, un modulo PHP che consente a PHP di comunicare con i database basati su MySQL. I pacchetti PHP principali verranno installati automaticamente come dipendenze.

Usa questo comando per installare i pacchetti php e php-mysql con yum:

  1. sudo yum install php php-mysql

Riavvia il server web Apache per abilitare il modulo PHP che hai installato:

  1. sudo systemctl restart httpd.service

Il tuo server è ora configurato con tutti i componenti necessari per la tua applicazione stack LAMP. Il prossimo passo è testare la tua configurazione per assicurarti che tutto funzioni armoniosamente.

Passaggio 4: test di PHP sul server Web Apache

L'installazione predefinita di Apache su CentOS 7 creerà una root del documento situata in /var/www/html. Non è necessario apportare modifiche alle impostazioni predefinite di Apache affinché PHP funzioni correttamente all'interno del tuo server web.

È tuttavia possibile apportare modifiche per modificare le impostazioni di autorizzazione predefinite nella cartella principale dei documenti di Apache. Ciò ti consente di creare e modificare i file in quella directory con il tuo normale utente di sistema senza la necessità di prefissare ogni comando con sudo.

Il seguente comando cambierà la proprietà della root del documento Apache predefinita in un utente e gruppo chiamato sammy, quindi assicurati di sostituire il nome utente e il gruppo evidenziati in questo comando per riflettere il nome utente e il gruppo del tuo sistema:

  1. sudo chown -R sammy.sammy /var/www/html/

È possibile creare un file di prova PHP per assicurarsi che il server Web funzioni come previsto. Usa il tuo editor di testo preferito per creare questo file. Gli esempi seguenti utilizzano l'editor di testo vi predefinito in CentOS 7.

Crea un file PHP chiamato info.php nella directory var/www/html:

  1. vi /var/www/html/info.php

Questo apre un file PHP vuoto nella directory /var/www/html. Premi I per entrare in modalità INSERT nell'editor vi. Ciò consente di digitare e apportare modifiche all'interno dell'editor di testo. Digita il seguente codice PHP:

<?php phpinfo(); ?>

Questo codice PHP mostra informazioni sull'ambiente PHP in esecuzione sul tuo server. Quando hai finito di apportare le modifiche a questo file, premi il tasto ESC per uscire dalla modalità INSERT in vi. Digita :x – un punto e virgola e la lettera x minuscola – per salvare e chiudere il file.

Puoi verificare se il tuo server web visualizza correttamente il contenuto PHP accedendo all'indirizzo IP pubblico del tuo server, seguito da /info.php:

http://your_server_IP_address/info.php

Una pagina web, simile a quella qui sotto, verrà visualizzata nel tuo browser:

Questa pagina fornisce informazioni sul tuo server dal punto di vista di PHP. È utile per eseguire il debug e garantire che le impostazioni vengano applicate correttamente. Dopo aver controllato le informazioni rilevanti sul tuo server PHP, è meglio rimuovere questo file poiché contiene informazioni sensibili sul tuo ambiente PHP e sul tuo server CentOS.

Puoi usare rm per rimuovere questo file:

  1. rm /var/www/html/info.php

Puoi sempre ricreare questa pagina se hai bisogno di accedere nuovamente alle informazioni in un secondo momento. Successivamente, puoi testare la connessione al database utilizzando PHP.

Passaggio 5: test della connessione al database con PHP (facoltativo)

Puoi verificare se PHP si connette a MariaDB ed esegue query al database creando una tabella di test con alcuni dati di test. Puoi interrogare il suo contenuto da uno script PHP.

Innanzitutto, connettiti alla console MariaDB con l'utente del database che hai creato nel passaggio 2 di questa guida:

  1. mysql -u example_user -p

Dalla console MariaDB, esegui la seguente istruzione per creare una tabella denominata todo_list all'interno del tuo example_database:

  1. CREATE TABLE example_database.todo_list (
  2. item_id INT AUTO_INCREMENT,
  3. content VARCHAR(255),
  4. PRIMARY KEY(item_id)
  5. );

La console MariaDB ti avviserà delle modifiche alla tua tabella dopo ogni modifica.

Query OK, 0 rows affected (0.00 sec)

Inserisci alcune righe di contenuto nella tabella di test. Puoi ripetere il comando successivo alcune volte, utilizzando valori diversi, per popolare la tua tabella di test:

  1. INSERT INTO example_database.todo_list (content) VALUES ("My first important item");

Per confermare che i dati sono stati salvati correttamente nella tua tabella, esegui:

  1. SELECT * FROM example_database.todo_list;

Di seguito è riportato un esempio dell'output:

Output
+---------+--------------------------+ | item_id | content | +---------+--------------------------+ | 1 | My first important item | | 2 | My second important item | | 3 | My third important item | | 4 | and this one more thing | +---------+--------------------------+ 4 rows in set (0.000 sec)

Dopo aver confermato di avere dati validi nella tabella di test, puoi uscire dalla console MariaDB:

  1. exit

Ora puoi creare lo script PHP che si collegherà a MariaDB e interrogherà i tuoi contenuti. Crea un nuovo file PHP nella tua directory root web personalizzata utilizzando il tuo editor preferito. Questo esempio usa vi:

  1. vi /var/www/html/todo_list.php

Aggiungi il seguente contenuto premendo I nell'editor di testo vi, ricordando di sostituire example_user e password con la tua:

<?php
$user = "example_user";
$password = "password";
$database = "example_database";
$table = "todo_list";

try {
  $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
  echo "<h2>TODO</h2><ol>"; 
  foreach($db->query("SELECT content FROM $table") as $row) {
    echo "<li>" . $row['content'] . "</li>";
  }
  echo "</ol>";
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

Salva e chiudi il file al termine delle modifiche premendo ESC, quindi digitando :x in vi.

Ora puoi accedere a questa pagina nel tuo browser web visitando il nome host del tuo server o l'indirizzo IP pubblico, seguito da /todo_list.php:

http://server_host_or_IP/todo_list.php

Di seguito è riportato un esempio della pagina Web, che rivela il contenuto che hai inserito nella tua tabella di test:

Conclusione

In questa guida, hai creato una base flessibile per servire siti Web e applicazioni PHP ai tuoi visitatori, utilizzando Apache come server web. Hai impostato Apache per gestire le richieste PHP e hai impostato un database MariaDB per archiviare i dati del tuo sito web.