It:HOWTO: Configurare un server LAMP (Linux Apache2 MySQL PHP)

From Sabayon Wiki
Jump to: navigation, search

Descrizione

LAMP è un acronimo che indica una piattaforma software per lo sviluppo di applicazioni web che prende il nome dalle iniziali dei componenti software con cui è realizzata. GNU-LinuxApacheMySQLPhp (MariaDB database alternativo o Perl , Python i linguaggi di programmazione alternativi)

Pacchetti necessari

La guida prenderà in considerazione il linguaggio di programmazione PHP e la gestione di più versioni di questo linguaggio installate simultaneamente nel sistema. Se si necessita di utilizzare un linguaggio di programmazione alternativo , installare il pacchetto corrispondente.

I pacchetti necessari allo scopo per una installazione LAMP di default su Sabayon sono i seguenti :

www-servers/apache
dev-lang/php
dev-db/mariadb

PHP è presente nei repository in più slot ; significa che nel sistema possono coesistere più versioni dello stesso linguaggio e si possono gestire indifferentemente l'una dall'altra.

Filtrando una semplice ricerca del pacchetto è possibile conoscere quali versioni (Slot) sono presenti nei repository

 # equo s dev-lang/php | grep Slot
 ╠          Slot:          5.6
 ╠          Slot:          7.1 

Installazione dei pacchetti

Per una installazione minimale di LAMP installare i pacchetti indicati precedentemente. Per la versione di PHP installare quella necessaria alle vostre esigenze (o più di una).

PHP-5.6

 # equo i www-servers/apache dev-db/mariadb dev-lang/php:5.6 --ask 

PHP-7.1

 # equo i www-servers/apache dev-db/mariadb dev-lang/php:7.1 --ask 

PHP-5.1 e PHP-7.1

 # equo i www-servers/apache dev-db/mariadb dev-lang/php:5.6 dev-lang/php:7.1 --ask 

Configurazione del database

MariaDB è l'alternativa a MySQL. E' un DBMS nato da un fork di MySQL creato dal programmatore originale di tale programma.

Aperto ai contributi della comunità, l'area di sviluppo principale è lo storage engine Aria (precedentemente chiamato Maria, da qui MariaDB); si tratta di un'evoluzione di MyISAM. Viene dedicata attenzione anche ai plugin.

Procedere alla configurazione dell'utente e della password per la connessione al database

 # emerge --config dev-db/mariadb 

Il file di configurazione del database:

File: /etc/mysql/my.conf
  /etc/mysql/my.cnf: The global mysql configuration file.
# $Id$

# The following options will be passed to all MySQL clients
[client]
#password                                       = your_password
port                                            = 3306
socket                                          = /var/run/mysqld/mysqld.sock

[mysql]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8

[mysqladmin]
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8

[...] 


Di default i database vengono installati in /var/lib/mysql.

Configurare il Server Web Apache

La configurazione minimale del Server Web Apache con il linguaggio PHP (o altro) necessita di poche modifiche

Il file di configurazione si trova in /etc/conf.d/apache2 e necessita di editare l'opzione APACHE2_OPTS.

Di default tale opzione è la seguente:

File: /etc/conf.d/apache2
 APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE" 

Configurazione Apache con PHP5

File: /etc/conf.d/apache2
 APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D PHP5" 


Configurazione Apache con PHP7

File: /etc/conf.d/apache2
 APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D PHP7" 


Configurazione Apache con più versioni di PHP

File: /etc/conf.d/apache2
 APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D PHP" 


Il parametro -D PHP non specifica quale versione di PHP utilizzare , per fare ciò , il comando eselect php può aiutarci a gestire più versioni di PHP installate nel sistema.

 # eselect php
Usage: eselect php <action> <options>

Standard actions:
  help                      Display help text
  usage                     Display usage information
  version                   Display version information

Extra actions:
  cleanup                   remove and try to fix stale links
  list <module>             lists valid targets for <module>
    module                    one of: cli apache2 fpm cgi phpdbg
  list-modules              output a space-separated list of valid modules
  set <module> <target>     make <target> active for <module>
    module                    one of: cli apache2 fpm cgi phpdbg
    target                    target name or number (from the "list" action)
  show <module>             show the active target for <module>
    module                    one of: cli apache2 fpm cgi phpdbg
  update <module> [--if-unset]
                            update <module> to latest target
    module                    one of: cli apache2 fpm cgi phpdbg
    --if-unset                do nothing if <module> target already exists

Scegliere la versione di PHP

Visualizzare la versione di PHP corrente:

# eselect php list apache2
  [1]   php5.6 *
  [2]   php7.0


Selezionare la versione di PHP desiderata (ad esempio passare alla versione 7.0 (Indice [2])

# eselect php set apache2 2 


Ritornare alla versione precedente di PHP (Indice [1])

# eselect php set apache2 1 

I servizi Apache e MariaDB/MySQL

Se tutto è settatto correttamente, avviare i servizi Apache e MariaDB.

Avvio e controllo del database MariaDB/MySQL

Avviare il database

# systemctl start mariadb 


Controllare se il servizio è correttamente in esecuzione:

# systemctl status mariadb
● mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib64/systemd/system/mariadb.service; enabled; vendor preset: disabled)
   Active: active (running) since sab 2017-05-27 20:39:37 CEST; 9min ago
  Process: 7512 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 7371 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
  Process: 7368 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
 Main PID: 7481 (mysqld)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─7481 /usr/sbin/mysqld

mag 27 20:39:36 sabayon.local systemd[1]: Starting MariaDB database server...
mag 27 20:39:37 sabayon.local mysqld[7481]: 2017-05-27 20:39:37 140257335244800 [Note] /usr/sbin/mysqld (mysqld 10.1.23-MariaDB) starting a...7481 ...
mag 27 20:39:37 sabayon.local systemd[1]: Started MariaDB database server.
Hint: Some lines were ellipsized, use -l to show in full.

Avvio e controllo del Server Web Apache

Avviare il servizio

# systemctl start apache2 


Controllare se il servizio è correttamente in esecuzione:

# systemctl status apache2
    ● apache2.service - The Apache HTTP Server
       Loaded: loaded (/usr/lib64/systemd/system/apache2.service; disabled; vendor preset: disabled)
       Active: active (running) since sab 2017-05-27 20:47:26 CEST; 2s ago
      Process: 8415 ExecStop=/usr/sbin/apache2 $APACHE2_OPTS -k graceful-stop (code=exited, status=1/FAILURE)
     Main PID: 8532 (apache2)
       CGroup: /system.slice/apache2.service
               ├─8532 /usr/sbin/apache2 -D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D SUEXEC -D LANGUAGE -DFOREGROUND
               ├─8534 /usr/sbin/apache2 -D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D SUEXEC -D LANGUAGE -DFOREGROUND
               ├─8535 /usr/sbin/apache2 -D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D SUEXEC -D LANGUAGE -DFOREGROUND
               ├─8536 /usr/sbin/apache2 -D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D SUEXEC -D LANGUAGE -DFOREGROUND
               ├─8537 /usr/sbin/apache2 -D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D SUEXEC -D LANGUAGE -DFOREGROUND
               ├─8538 /usr/sbin/apache2 -D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D SUEXEC -D LANGUAGE -DFOREGROUND
               └─8539 /usr/sbin/apache2 -D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D SUEXEC -D LANGUAGE -DFOREGROUND

    mag 27 20:47:26 sabayon.local systemd[1]: Started The Apache HTTP Server.


oppure collegarsi all'host locale http://localhost o all'indirizzo esterno del server http://<server-URL> ; si dovrebbe ottenere il messaggio:

It Works !

Abilitare i servizi all'avvio del sistema

Per avviare i servizi all'avvio del sistema, abilitarli con :

# systemctl enable apache2 && systemctl enable mariadb.

Alternativa: Gestire i database da una interfaccia web

phpMyAdmin è un'applicazione web scritta in PHP, distribuita con licenza GPL, che consente di amministrare un database MySQL o MariaDB tramite un qualsiasi browser. L'applicazione è indirizzata sia agli amministratori del database, sia agli utenti. Gestisce i permessi prelevandoli dal database.

phpMyAdmin permette di creare un database da zero, creare le tabelle ed eseguire operazioni di ottimizzazione sulle stesse. Presenta un feedback sulla creazione delle tabelle per evitare eventuali errori. Sono previste delle funzionalità per l'inserimento dei dati (popolazione del database), per le query, per il backup dei dati, ecc.

L'amministratore ha anche a disposizione un'interfaccia grafica per la gestione degli utenti: l'interfaccia permette l'inserimento di un nuovo utente, la modifica della relativa password e la gestione dei permessi che l'utente ha sul database.

Installare phpMyAdmin

# equo i  dev-db/phpmyadmin --ask

Per procedere alla configurazione di phpMyAdmin (entrambi i servizi Apache e MariaDB devono essere in esecuzione) collegarsi al server locale o remoto e seguire la procedura visualizzata.

Collegarsi a http://localhost/phpmyadmin o http://<server-URL>/phpmyadmin

Di default phpMyAdmin verrà installato nella directory di lavoro del server web Apache (/var/www/localhost/htdocs )

/var/www/localhost/htdocs/phpmyadmin
Stop.png
Apache Web Server permette l'installazione di funzionalità aggiuntive chiamate moduli e sono disponibili nei repository e in Portage sotto il nome di www-apache/mod_<nome-modulo>, Permette inoltre la configurazione di Server Virtuali e di altre funzionalità avanzate non trattate in questa guida. Fare riferimento alla documentazione ufficiale per ulteriori approfondimenti : Apache Docs.

Consultare inoltre i file di configurazione (ampiamente commentati) presenti in :

/etc/apache2/httpd.conf
/etc/apache2/vhosts.d/00_default_*.conf

Links utili

Gentoo Wiki : Apache2

Gentoo Wiki : MariaDB

Apache Docs

MySQL Docs

MariaDB Docs