Ricerca nel sito web

Installazione di LAMP (Linux, Apache, MySQL/MariaDB e PHP/PhpMyAdmin) in Arch Linux


Arch Linux fornisce un ambiente di sistema flessibile e all'avanguardia ed è una potente soluzione più adatta per lo sviluppo di applicazioni web su piccoli sistemi non critici grazie al fatto che è un Open Source completo e fornisce le ultime versioni aggiornate di kernel e software web per server e database.

Lo scopo principale di questo tutorial è guidarti attraverso istruzioni complete passo passo che alla fine porteranno all'installazione di una delle combinazioni software più utilizzate nello sviluppo Web: LAMP (Linux, Apache, MySQL/MariaDB e PHP/PhpMyAdmin) e ti presenterà alcune funzionalità interessanti (script Bash rapidi e sporchi) che non sono presenti in un sistema Arch Linux, ma possono facilitare il lavoro di creazione di più host virtuali , generare certificati SSL e chiavi necessarie per transazioni HTTS sicure.

Requisiti

  1. Precedente processo di installazione di Arch Linux: salta l'ultima parte con DHCP.
  2. Precedente installazione LEMP su Arch Linux: solo la parte con la configurazione dell'indirizzo IP statico e l'accesso SSH remoto.

Passaggio 1: installare il software di base LAMP

1. Dopo l'installazione minima del sistema con indirizzo IP statico e accesso remoto al sistema utilizzando SSH, aggiorna il tuo sistema Arch Linux utilizzando l'utilità pacman.

sudo pacman -Syu

2. Al termine del processo di aggiornamento, installa LAMP da pezzi, installa prima Apache Web Server e avvia/verifica ogni demone del processo del server.

sudo pacman -S apache 
sudo systemctl start httpd 
sudo systemctl status httpd

3. Installa il linguaggio di scripting lato server dinamico PHP e il relativo modulo Apache.

sudo pacman -S php php-apache

4. Nell'ultimo passaggio installa il database MySQL, scegli 1 fork del database della comunità (MariaDB), quindi avvia e controlla lo stato del demone.

sudo pacman -S mysql 
sudo systemctl start mysqld 
sudo systemctl status mysqld

Ora hai il software LAMP di base installato e avviato con le configurazioni predefinite finora.

Passaggio 2: proteggere il database MySQL

5. Il passaggio successivo consiste nel proteggere il database MySQL impostando una password per l'account root, rimuovere gli account degli utenti anonimi, rimuovere il database di test e impedire l'accesso remoto per l'utente root (premere [ Inserisci] la chiave per la password corrente dell'account root e rispondi a tutte le domande di sicurezza).

sudo mysql_secure_installation

6. Verifica la connettività del database MySQL eseguendo il comando seguente, quindi lascia la shell del database con l'istruzione quit o exit.

mysql -u root -p

Passaggio 3: modifica il file di configurazione principale di Apache

7. Le seguenti configurazioni sono per la maggior parte correlate al server Web Apache per fornire un'interfaccia dinamica per hosting virtuale con linguaggio di scripting PHP, SSL o host virtuali non SSL e può essere eseguito modificando le configurazioni dei file di servizio httpd.

Per prima cosa apri la configurazione principale del file Apache con il tuo editor di testo preferito.

sudo nano /etc/httpd/conf/httpd.conf

Alla fine del file, aggiungi le due righe seguenti.

IncludeOptional conf/sites-enabled/*.conf
IncludeOptional conf/mods-enabled/*.conf

Il ruolo delle istruzioni Include qui è di dire ad Apache che d'ora in poi dovrebbe leggere ulteriori configurazioni da tutti i file che risiedono in /etc/httpd/conf/sites-enabled/ (per hosting virtuale) e /etc/httpd/conf/mods-enabled/ (per moduli server abilitati) percorsi di sistema che terminano con un'estensione .conf.

8. Dopo che Apache ha ricevuto istruzioni su queste due direttive, crea le directory di sistema necessarie immettendo i seguenti comandi.

sudo mkdir /etc/httpd/conf/sites-available
sudo mkdir /etc/httpd/conf/sites-enabled
sudo mkdir /etc/httpd/conf/mods-enabled

Il percorso sites-available contiene tutti i file di configurazione degli host virtuali che non sono attivati su Apache ma il successivo script Bash utilizzerà questa directory per collegare e abilitare i siti Web che si trovano lì.

Passaggio 4: crea i comandi Apache a2eniste e a2diste

9. Ora è il momento di creare script Apache a2ensite e a2dissite che serviranno come comandi per abilitare o disabilitare il file di configurazione dell'host virtuale. Digita il comando cd per tornare al tuo percorso utente $HOME e crea i tuoi script bash a2eniste e a2dissite utilizzando il tuo editore preferito.

sudo nano a2ensite

Aggiungi il seguente contenuto a questo file.

#!/bin/bash
if test -d /etc/httpd/conf/sites-available && test -d /etc/httpd/conf/sites-enabled  ; then
echo "-------------------------------"
else
mkdir /etc/httpd/conf/sites-available
mkdir /etc/httpd/conf/sites-enabled
fi

avail=/etc/httpd/conf/sites-available/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-available/`

if [ "$#" != "1" ]; then
        echo "Use script: n2ensite virtual_site"
        echo -e "\nAvailable virtual hosts:\n$site"
        exit 0
else
if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Success!! Now restart Apache server: sudo systemctl restart httpd"
else
echo  -e "Virtual host $avail does not exist!\nPlease see avail virtual hosts:\n$site"
exit 0
fi
fi

Ora crea il file script bash a2dissite.

sudo nano a2dissite

Aggiungi il seguente contenuto.

#!/bin/bash
avail=/etc/httpd/conf/sites-enabled/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/sites-enabled`

if [ "$#" != "1" ]; then
        echo "Use script: n2dissite virtual_site"
        echo -e "\nAvailable virtual hosts: \n$site"
        exit 0
else
if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting"
exit 0
fi
if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nsudo systemctl restart httpd"
exit 0
fi
fi

10. Dopo che i file sono stati creati, assegna i permessi di esecuzione e copiali in una directory eseguibile ` PATH per renderli disponibili a livello di sistema.

sudo chmod +x a2ensite a2dissite
sudo cp a2ensite a2dissite /usr/local/bin/

Passaggio 5: crea host virtuali in Apache

11. Il file di configurazione predefinito dell'host virtuale per il server Web Apache su Arch Linux è fornito dal file httpd-vhosts.conf situato in /etc/httpd/conf/extra / ma se si dispone di un sistema che utilizza molti host virtuali può essere molto difficile tenere traccia di quale sito Web è attivato o meno. Se vuoi disabilitare un sito web devi commentare o eliminare tutte le sue direttive e questa può essere una missione difficile se il tuo sistema fornisce molti siti web e il tuo sito web ha più direttive di configurazione.

L'utilizzo dei percorsi siti disponibili e siti abilitati semplifica notevolmente il lavoro di abilitazione o disabilitazione dei siti web e preserva inoltre tutti i file di configurazione dei tuoi siti web anche se sono attivati o meno.

Nel passaggio successivo costruiremo il primo host virtuale che punta al localhost predefinito con il percorso DocumentRoot predefinito per servire i file dei siti Web (/srv/http.

sudo nano /etc/httpd/conf/sites-available/localhost.conf

Aggiungi qui le seguenti direttive Apache.

<VirtualHost *:80>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email 
        ErrorLog "/var/log/httpd/localhost-error_log"
        TransferLog "/var/log/httpd/localhost-access_log"

<Directory />
    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>

Le istruzioni più importanti qui sono le direttive Port e ServerName che indicano ad Apache di aprire una connessione di rete sulla porta 80 e di reindirizzare tutte le query con il nome localhost a servire i file che si trovano nel percorso /srv/http/.

12. Dopo che il file localhost è stato creato, attivalo quindi riavvia il demone httpd per visualizzare le modifiche.

sudo a2ensite localhost
sudo systemctl restart httpd

13. Quindi punta il browser su http://localhost, se lo esegui dal sistema Arch o http://Arch_IP se usi un sistema remoto.

Passaggio 6: abilita SSL con hosting virtuale su LAMP

SSL (Secure Sockets Layer) è un protocollo progettato per crittografare le connessioni HTTP su reti o Internet, che fanno sì che il flusso di dati venga trasmesso su un canale sicuro utilizzando chiavi di crittografia simmetriche/asimmetriche ed è fornito in Arch Linux dal pacchetto OpenSSL.

14. Per impostazione predefinita, il modulo SSL non è abilitato su Apache in Arch Linux e può essere attivato rimuovendo i commenti dal modulo mod_ssl.so dal httpd.conf principale. file di configurazione e il file Includi httpd-ssl.conf situato nel percorso httpd aggiuntivo.

Ma per semplificare le cose creeremo un nuovo file del modulo per SSL nel percorso abilitato per le modalità e lasceremo intatto il file di configurazione principale di Apache. Crea il seguente file per il modulo SSL e aggiungi il contenuto seguente.

sudo nano /etc/httpd/conf/mods-enabled/ssl.conf

Aggiungi il seguente contenuto.

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

Listen 443

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/run/httpd/ssl_scache(512000)"
SSLSessionCacheTimeout  300

15. Ora crea un file host virtuale che punti allo stesso nome localhost ma questa volta utilizzando le configurazioni del server SSL e modifica leggermente il suo nome per ricordarti che sta per localhost con SSL.

sudo nano /etc/httpd/conf/sites-available/localhost-ssl.conf

Aggiungi il seguente contenuto a questo file.

<VirtualHost *:443>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email 
        ErrorLog "/var/log/httpd/localhost-ssl-error_log"
        TransferLog "/var/log/httpd/localhost-ssl-access_log"

SSLEngine on

SSLCertificateFile "/etc/httpd/conf/ssl/localhost.crt"
SSLCertificateKeyFile "/etc/httpd/conf/ssl/localhost.key"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>

<Directory "/srv/http/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog "/var/log/httpd/ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

<Directory />

    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>

Oltre alle direttive Porta e NomeServer, altre direttive importanti qui sono quelle che puntano al file Certificato SSL e al file Chiave SSL che non sono ancora stati creati, quindi non riavviare il server Web Apache altrimenti verranno visualizzati degli errori.

16. Per creare il file e le chiavi del certificato SSL richiesti, installa il pacchetto OpenSSL eseguendo il comando seguente.

sudo pacman -S openssl

17. Quindi crea il seguente script Bash che crea e memorizza automaticamente tutti i tuoi certificati Apache e chiavi in /etc/httpd/conf/ssl/ percorso di sistema.

sudo nano apache_gen_ssl

Aggiungi il seguente contenuto del file, quindi salvalo e rendilo eseguibile.

#!/bin/bash
mkdir /etc/httpd/conf/ssl
cd /etc/httpd/conf/ssl

echo -e "Enter your virtual host FQDN: \nThis will generate the default name for Nginx  SSL certificate!"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt

echo -e " The certificate "$cert" has been generated!\nPlease link it to Apache SSL available website!"

ls -all /etc/httpd/conf/ssl
exit 0

sudo chmod +x apache_gen_ssl

Se vuoi che lo script sia disponibile a livello di sistema, copialo in un ` PATH eseguibile.

sudo cp /apache_gen_ssl  /usr/local/bin/

18. Ora genera il tuo Certificato e le Chiavi eseguendo lo script. Fornisci le tue opzioni SSL e non dimenticare il nome del certificato e il nome comune in modo che corrispondano al tuo dominio ufficiale (FQDN).

sudo ./apache_gen_ssl

Dopo aver creato il certificato e le chiavi, non dimenticare di modificare il certificato dell'host virtuale SSL e le configurazioni delle chiavi in modo che corrispondano al nome di questo certificato.

19. L'ultimo passaggio è attivare il nuovo host virtuale SSL e riavviare il server per applicare le configurazioni.

sudo a2ensite localhost-ssl
sudo systemctl restart httpd

Questo è tutto! Per verificarlo, aprire il browser e aggiungere Arch IP sull'URL utilizzando il protocollo HTTPS: https://localhost o https://system_IP.

Passaggio 7: abilita PHP su Apache

20. Per impostazione predefinita, Apache fornisce solo contenuti di file statici HTML in Arch Linux senza supporto per linguaggi di scripting dinamici. Per attivare PHP aprire prima il file di configurazione principale di Apache, quindi cercare e decommentare la seguente istruzione LoadModule (php-apache non funziona con mod_mpm_event in Arch Linux ).

sudo nano /etc/httpd/conf/httpd.conf

Utilizzando [Ctrl]+[w] cerca e commenta la riga seguente in modo che assomigli a questa.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Quindi crea un nuovo file per il modulo PHP nel percorso abilitato per le modalità con il seguente contenuto.

sudo nano /etc/httpd/conf/mods-enabled/php.conf

Aggiungi esattamente il seguente contenuto (devi utilizzare mod_mpm_prefork).

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule php5_module modules/libphp5.so

Include conf/extra/php5_module.conf

22. Per verificare l'impostazione, crea in PHP un file denominato info.php nel tuo DocumnetRoot (/srv/http/), quindi riavvia Apache e punta il tuo browser nel file info.php: https://localhost/info.php.

<?php

phpinfo();

?>
sudo systemctl restart httpd

Questo è tutto! Se tutto appare come nell'immagine sopra, ora hai il linguaggio di scripting lato server dinamico PHP abilitato su Apache e ora puoi sviluppare siti Web utilizzando CMS Open Source come WordPress ad esempio.

Se desideri verificare le configurazioni della sintassi Apache e visualizzare un elenco dei moduli caricati senza riavviare il demone httpd, esegui i seguenti comandi.

sudo apachectl configtest
sudo apachectl -M

Passaggio 8: installa e configura PhpMyAdmin

23. Se non hai padronanza della riga di comando MySQL e desideri un semplice accesso remoto al database MySQL fornito tramite l'interfaccia web, allora hai bisogno del pacchetto PhpMyAdmin installato sul tuo dispositivo Arch.

sudo pacman -S phpmyadmin php-mcrypt

24. Dopo che i pacchetti sono stati installati è necessario abilitare alcune estensioni PHP (mysqli.so, mcrypt.so – per l'autenticazione interna) e puoi anche abilitare altri moduli necessari per future piattaforme CMS come openssl.so, imap.so o iconv.so ecc.

sudo nano /etc/php/php.ini

Individua e decommenta le estensioni di cui sopra.

extension=mcrypt.so
extension=mssql.so
extension=mysqli.so
extension=openssl.so
extension=iconv.so
extension=imap.so
extension=zip.so
extension=bz2.so

Inoltre, nello stesso file, cerca e individua l'istruzione open_basedir e aggiungi il percorso di sistema PhpMyAdmin (/etc/webapps/ e /usr/share/webapps/) per assicurarsi che PHP possa accedere e leggere i file in quelle directory (se si modifica anche il percorso DocumentRoot degli host virtuali da /srv/http/ a un'altra posizione è necessario aggiungere anche qui il nuovo percorso ).

25. L'ultima cosa che devi fare per accedere all'interfaccia Web PhpMyAdmin è aggiungere le istruzioni Apache PhpMyAdmin sugli host virtuali. Come misura di sicurezza si assicurerà che l'interfaccia Web PhpMyAdmin possa essere accessibile solo dall'host locale (o dall'indirizzo IP del sistema) utilizzando il protocollo HTTPS e non da altri host virtuali diversi. Quindi, apri il tuo file Apache localhost-ssl.conf e in fondo, prima dell'ultima istruzione aggiungi il seguente contenuto.

sudo nano /etc/httpd/conf/sites-enabled/localhost-ssl.conf
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"

<Directory "/usr/share/webapps/phpMyAdmin">
    DirectoryIndex index.html index.php
    AllowOverride All
    Options FollowSymlinks
    Require all granted
</Directory>

26. Successivamente riavvia il demone Apache e punta il browser al seguente indirizzo e dovresti essere in grado di accedere alla tua interfaccia Web PhpMyAdmin: https://localhost/phpmyadmin o https://system_IP/phpmyadmin.

27. Se, dopo aver effettuato l'accesso a PhpMyAdmin, vedi un errore in basso relativo a blowfish_secret, apri e modifica /etc/webapps/phpmyadmin/config.inc. php e inserisci una stringa casuale come quella nella seguente istruzione, quindi aggiorna la pagina.

$cfg['blowfish_secret'] = ‘{^QP+-(3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V’ ;

Passaggio 9: abilitare LAMP a livello di sistema

28. Se desideri che lo stack LAMP venga avviato automaticamente dopo il riavvio del sistema, esegui i seguenti comandi.

sudo systemctl enable httpd mysqld

Queste sono alcune delle principali impostazioni di configurazione su LAMP necessarie per trasformare un sistema Arch Linux in una piattaforma web semplice ma potente, veloce e robusta con software server all'avanguardia per piccoli utenti non -ambienti critici, ma se diventi ostinato e vuoi comunque utilizzarlo in un ambiente di produzione di grandi dimensioni dovresti armarti di molta pazienza e prestare particolare attenzione agli aggiornamenti dei pacchetti e creare immagini di backup regolari del sistema per un rapido ripristino del sistema in caso di fallimenti del sistema.