Aiuto Debian GNU/Linux Apache Webserver
Sommario
- Aiuto Debian GNU/Linux Apache Webserver
- Linux, Apache, MariaDB, PHP (LAMP)
- Configura più versioni PHP in Apache
- Configura più versioni PHP nella console
- Composer
- elasticsearch
Linux, Apache, MariaDB, PHP (LAMP)
Linux
apt update && apt upgrade -y && apt full-upgrade -y && apt autoremove -y
Apache
apt install apache2
apache2 -v
- Test
Richiama 127.0.0.1 nel browser.ifconfig
Attiva mod_rewrite
a2enmod rewrite
systemctl restart apache2
nano /etc/apache2/apache2.conf
- Modificare quanto segue nelle righe seguenti
‹Directory /var/www/›
Options Indexes FollowSymLinks
AllowOverride None
(CambiaNone
inAll
)Require all granted
DirectoryIndex index.php index.html
(Aggiungi una riga in modo cheindex.php
venga caricato per primo)‹/Directory›
- Riavvia Apache
systemctl restart apache2
- Cambia utente e gruppo Apache
nano /etc/apache2/envvars
Cambia utente e gruppo www-datasystemctl restart apache2
Aumentare il timeout in modo che gli script non vengano interrotti prematuramente
nano /etc/apache2/apache2.conf
(in altre configurazionihttpd.conf
)- Modificare quanto segue nelle righe seguenti
Timeout 3600
(Standard 600)ProxyTimeout 600
(in altre configurazioni questo aumento può aiutare) systemctl restart apache2
MariaDB
apt install mariadb-server
(O il pacchettodefault-mysql-server
, a seconda del sistema, questo porta a MariaDB tramite dipendenza)- Proteggi MariaDB
mysql_secure_installation
5xYes
- Test
mysql -u root -p
SHOW databases;
EXIT;
- Cambia la password
USE mysql;
UPDATE user SET password=[PASSWORD] WHERE user='root';
FLUSH PRIVILEGES;
EXIT;
MariaDB Upgrade
systemctl stop mysql
- Crea backup
cp -R /etc/mysql/ /etc/mysql-[VERSIONE]_[DATA]
cp -R /var/lib/mysql/ /var/lib/mysql-[VERSIONE]_[DATA]
- Lo script viene scaricato ed eseguito.
Crea '/etc/apt/sources.list.d/mariadb.list
', '/etc/apt/preferences.d/mariadb-enterprise.pref
' e 'GPG Keys'.curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
- Aggiornamento del sistema
apt update && apt upgrade -y && apt full-upgrade -y && apt autoremove -y
- Disinstallare la vecchia installazione e gli elementi correlati
apt remove mariadb-*
- Installa il nuovo MariaDB
apt-get install mariadb-server
- Upgrade banche dati
mysql_upgrade
Variabili di sistema
MariaDB in Debian
character_set_server utf8mb4
collation_server utf8mb4_general_ci
Standard MariaDB
character_set_server latin1
collation_server latin1_swedish_ci
Modifica le variabili di sistema
Per questa sessione
mysql
SHOW VARIABLES LIKE 'character%';
SET character_set_server = 'utf8mb4';
SHOW VARIABLES LIKE 'collation%';
SET collation_server = 'utf8mb4_general_ci';
exit
systemctl restart mariadb.service
systemctl restart apache2
Tramite file di configurazione (riavvio richiesto)
- Rinomina il link simbolico '
my.cnf
' in 'my.cnf.backup
' - Poiché il collegamento '
/etc/mysql/my.cnf
' punta a 'my.cnf.fallback
' fino alla fine, copiamo questo file e salviamo la copia in '/etc/mysql/my.cnf
'. - Alla fine del file '
/etc/mysql/my.cnf
' aggiungiamo quanto segue.[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
- Riavvia. Test. Test. Test.
PHP
- Esegui query sulla versione standard di PHP
apt show php
- Installa la versione standard di PHP
apt install php
- Installa importanti moduli PHP
apt install php7.0-[MODULO]
(Costruzione)apt install php7.0-mysql
(per MariaDB)apt install php7.0-gd
(per Grafica)apt install php7.0-opcache
(per ottimizzare la velocità dello script; impostaopcache.save_comments=1
inphp.ini
)apt install php7.0-mcrypt
apt install php7.0-intl
apt install php7.0-soap
apt install php7.0-bcmath
- Mostra i moduli installati
php -m
- Impostazioni PHP
nano /etc/php/7.0/apache2/php.ini
systemctl restart apache2
Abilita/disabilita l'estensione PHP
Questi comandi creano o rimuovono il collegamento simbolico '20-xdebug.ini
' in '/etc/php/7.1/cli/conf.d
' e '/etc/php/7.1/fpm/conf.d
'.
- Attivare
php5enmod xdebug
(per PHP 5)phpenmod xdebug
(per la versione PHP standard) - Disattivare
php5dismod xdebug
(per PHP 5)phpdismod xdebug
(per la versione PHP standard) - Riavvia
systemctl restart php5.6-fpm.service
systemctl restart apache2
phpMyAdmin
apt install phpmyadmin
- Test
Chiama localhost/phpmyadmin nel browser. - Se non seleziona (= barra spaziatrice) la configurazione automatica per apache2
nano /etc/apache2/apache2.conf
Include /etc/phpmyadmin/apache.conf
(Inserisci una linea in basso) - Crea un nuovo utente per MariaDB
Per motivi di sicurezza, non puoi più accedere al server MariaDB direttamente come utente root utilizzando la normale autenticazione con password (per esempio con phpMyAdmin).USE mysql;
CREATE USER '[UTENTE]'@'localhost' IDENTIFIED BY '[PASSWORD]';
GRANT ALL PRIVILEGES ON *.* TO '[UTENTE]'@'localhost' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON [BANCA DATI].* TO '[UTENTE]'@'localhost';
(Crea utente per una banca dati specifico)FLUSH PRIVILEGES;
EXIT;
Xdebug
apt install php-xdebug
- Aggiungi quanto segue al file '
/etc/php/7.0/mods-available/xdebug.ini
'xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000
timeout 300 seconds
systemctl restart apache2
ImageMagick
apt install imagemagick
apt install php7.0-imagick
systemctl restart apache2
Invio di e-mail
sendmail
Il modulo sendmail è impostato come standard in php.ini ed è già installato su Debian, devi solo avviare Thunderbird.
- Crea un account Thunderbird per leggere i messaggi
Nome account: [NOME UTENTE]@debian.com
Il tuo nome: [NOME]
Indirizzo e-mail: [E-MAIL]
Server di posta in uscita (SMTP): [SMTP-SERVER]
Impostazioni del serverTipo di server: Unix Movemail
Server: localhost
Nome utente:[NOME UTENTE]
- Posizione di archiviazione della posta elettronica
/var/spool/mail/
- Coda di posta elettronica in uscita
ATTENZIONE: la cartella non esisteva sul mio sistema./var/spool/mqueue/
- Ecco tutti i file di configurazione
/etc/mail/
per esempio/etc/mail/access/
- Informazioni
Solo i file*.db
vengono utilizzati da sendmail.
Dopo le modifiche ai file di configurazione, i rispettivi file*.db
vengono rigenerati dal Makefile.
ATTENZIONE: Se non è disponibile alcun Makefile:cat ./Filename | makemap hash Filename
ATTENZIONE: Anche qui le eccezioni confermano la regola. L'aliases.db
è l'unico generato con il comandonewaliases
.makemap
crea anche unaliases.db
, ma può rendere inutilizzabile sendmail.
sSMTP
Invia e-mail con sSMTP tramite la console.
apt install ssmtp
nano /etc/ssmtp/ssmtp.conf
Modificare quanto segue nelle righe seguentiroot=[E-MAIL]
mailhub=[SMTP-SERVER]:[SMTP-PORT]
hostname=
(Non è necessario. Se è stata inserita la variabile, l'invio dell'e-mail viene accelerato.)rewriteDomain=
AuthUser=[E-MAIL]
AuthPass=[PASSWORD]
UseSTARTTLS=yes
UseTLS=yes
FromLineOverride=yes
nano /etc/ssmtp/revaliases
Aggiungi quanto segue[UTENTE]:[E-MAIL]:[SMTP-SERVER]:[SMTP-PORT]
root:mail@xoobit.com:smtp.xoobit.com:465
- Test
echo "This is a test message" | mailx -s 'Test Message' [E-MAIL]
Aggiungi tipi MIME
nano /etc/mime.types
Crea host
nano /etc/hosts
Crea Apache VirtualHost e configura SSL
- Creare una cartella
mkdir /etc/apache2/ssl
cd /etc/apache2/ssl
- Crea chiave privata
openssl genrsa -out sslcert.key 2048
- Genera file CSR dalla chiave privata
Il file CSR contiene le informazioni sul certificatoopenssl req -new -key sslcert.key -out sslcert.csr
- Genera certificato dal file CSR
openssl x509 -req -days 365 -in sslcert.csr -signkey sslcert.key -out sslcert.crt
- Attiva il modulo SSL Apache2
a2enmod ssl
- Verificare se la porta 443 è in ascolto
cat /etc/apache2/ports.conf
Dovrebbero apparire le seguenti righeListen 80
‹IfModule ssl_module›
Listen 443
‹/IfModule›
‹IfModule mod_gnutls.c›
Listen 443
‹/IfModule›
- Crea una nuova configurazione VirtualHost per la porta SSL
nano /etc/apache2/sites-available/[DOMINIO].conf
Inserisci le seguenti righe nella nuova configurazione di VirtualHost‹VirtualHost *:80›
ServerAdmin info@[DOMINIO]
ServerName [DOMINIO]
ServerAlias www.[DOMINIO]
DocumentRoot /var/www/[PERCORSO]
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
‹/VirtualHost›
‹VirtualHost *:443›
ServerAdmin info@[DOMINIO]
ServerName [DOMINIO]
ServerAlias www.[DOMINIO]
DocumentRoot /var/www/[PERCORSO]
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/sslcert.crt
SSLCertificateKeyFile /etc/apache2/ssl/sslcert.key
‹/VirtualHost›
- Attiva la pagina
a2ensite [DOMINIO].conf
systemctl restart apache2
- Disattiva la pagina
a2dissite [DOMINIO].conf
systemctl restart apache2
File di registro importanti
- Errori di Apache e PHP
nano /var/log/apache2/error.log
- Errori di MariaDB
nano /var/log/mysql/error.log
Configura più versioni PHP in Apache
Disattiva PHP 5.6, attiva PHP 7.1
a2dismod php5.6
a2enmod php7.1
systemctl restart apache2
PHP, FPM e FastCGI
- Aggiungi elenco di fonti
apt install ca-certificates apt-transport-https
wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -
echo "deb https://packages.sury.org/php/ stretch main" | sudo tee /etc/apt/sources.list.d/php.list
- Installa PHP e FPM
apt update && apt upgrade -y && apt full-upgrade -y && apt autoremove -y
apt install php5.6 php5.6-fpm
apt install php7.4 php7.4-fpm
- Test
systemctl status php5.6-fpm
systemctl status php7.4-fpm
- Installa Apache FastCGI
apt update && apt upgrade -y && apt full-upgrade -y && apt autoremove -y
apt install apache2 libapache2-mod-fcgid
- Configurazione di Apache
a2enmod actions fcgid alias proxy_fcgi
systemctl restart apache2
- Modifica la configurazione di VirtualHost
nano /etc/apache2/sites-available/[DOMAIN].conf
Aggiungi le seguenti righe alla configurazione di VirtualHost‹VirtualHost *:[PORT]›
...
‹FilesMatch \.php$›
# Apache 2.4.10+ can proxy to unix socket
SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/"
‹/FilesMatch›
‹/VirtualHost›
Riavvia Apachesystemctl restart apache2
- Regola le impostazioni PHP
ATTENZIONE: i moduli installati vengono aggiunti automaticamente durante l'installazione.nano /etc/php/7.0/fpm/php.ini
- Cambia utente www-data se necessario
nano /etc/php/7.0/fpm/pool.d/www.conf
Cambia tutti gli utentiwww-data
con il tuo nome utente (ad esempioxoobit
)systemctl restart php7.0-fpm.service
- File importanti
/var/log/php7.0-fpm.log
/etc/php/7.0/fpm/php-fpm.conf
Se manca la cartella apache2 in '/etc/php/7.3/'
- Installa quanto segue
apt install libapache2-mod-php7.3
Disattiva versione PHP
systemctl disable php5.6-fpm.service
Configura più versioni PHP nella console
- Verificare la configurazione corrente
which php
Il file '/usr/bin/php
' si riferisce a '/etc/alternatives/php
'.
Il file '/etc/alternatives/php
' si riferisce a '/usr/bin/php7.3
'. - Cambia alternatives
update-alternatives --set php /usr/bin/php7.1
update-alternatives --set phar /usr/bin/phar7.1
update-alternatives --set phar.phar /usr/bin/phar.phar7.1
ATTENZIONE: il comando phpize e php-config è disponibile nel pacchetto php[VERSIONE PHP]-dev. Questo è più utile per compilare moduli PHP usando pecl.update-alternatives --set phpize /usr/bin/phpize7.1
update-alternatives --set php-config /usr/bin/php-config7.1
Composer
Installa System Composer (potrebbe non essere aggiornato)
apt install composer
- Test
composer
Se tutto è andato bene, verranno visualizzati tutti i comandi.
Installa Composer da getcomposer.org
- Aggiungi elenco di fonti
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '8a6138e2a05a8c28539c9f0fb361159823655d7ad2deecb371b04a83966c61223adc522b0189079e3e9e277cd72b8897') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
- Rendi disponibile a livello globale
mv composer.phar /usr/bin/composer
Comandi del Composer
- Upgrade versione
composer require [PRODUTTORE]/[PACCHETTO]
composer require friendsofphp/php-cs-fixer
Configura più versioni PHP nel Composer
Status
- Informazioni sul Composer
composer -vvv about
which php
/usr/bin/php/usr/bin/php -v
PHP 7.1.33php -v
PHP 7.2.24type -a php
php is aliased to '/usr/bin/php7.2'
php is /usr/bin/phpwhich composer
/usr/bin/composer
Soluzione
- Modifica il file
.bash_aliases
alias php="/usr/bin/php7.2"
alias composer="/usr/bin/php7.2 /usr/bin/composer"
- Riavvia la console
- Controlla le impostazioni
type -a composer
composer is aliased to '/usr/bin/php7.2 /usr/bin/composer'
composer is /usr/bin/composer - Il Composer ora sta usando la versione php corretta.
elasticsearch
- Aggiungi elenco di fonti
Scarica e installa la chiave di firma pubblicawget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
apt install apt-transport-https
Salva la definizione del repository in '/etc/apt/sources.list.d/elastic-7.x.list
'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
apt update && apt upgrade -y && apt full-upgrade -y && apt autoremove -y
apt install elasticsearch
- Impostazioni
nano /etc/elasticsearch/elasticsearch.yml
- Rapporto di errore
/var/log/elasticsearch/
Configurare l'avvio automatico di SysVInit
- Aggiungi elasticsearch
update-rc.d elasticsearch defaults 95 10
- Avvia il servizio
service elasticsearch start
- Test
curl -X GET http://127.0.0.1:9200
Configurare l'avvio automatico di SystemD
- Ricarica il processo SystemD
systemctl daemon-reload
- Avvia il servizio
systemctl start elasticsearch
systemctl enable elasticsearch
- Test
curl -X GET http://127.0.0.1:9200