Macchina Apache Web Server: differenze tra le versioni

Da Webmobili Wiki.
Nessun oggetto della modifica
 
(34 versioni intermedie di 2 utenti non mostrate)
Riga 1: Riga 1:
<!-- {{#breadcrumb: Amazon_Web_Services | Macchina Apache Web Server}} -->
== Installazione Web Server Apache ==
== Installazione Web Server Apache ==


Riga 27: Riga 28:


sudo apt install php-fpm php-mysql
sudo apt install php-fpm php-mysql
sudo apt install php7.4-fpm php7.4-mysql
#sudo apt install php7.4-fpm php7.4-mysql


# Abilitare moduli Apache per PHP FPM
# Abilitare moduli Apache per PHP FPM
sudo a2enmod proxy_fcgi setenvif rewrite http2 brotli
sudo a2enmod proxy_fcgi setenvif rewrite http2 brotli
sudo a2enconf php8.3-fpm
sudo a2enconf php8.4-fpm
sudo systemctl restart apache2.service
sudo systemctl restart apache2.service


Riga 42: Riga 43:
sudo systemctl restart apache2.service
sudo systemctl restart apache2.service
</syntaxhighlight>
</syntaxhighlight>
== Loopback ==
Inserire nel loopback il nome <code>mysql</code> associato all'IP interno della macchina database corrispondente:
<syntaxhighlight lang="bash">
sudo nano /etc/hosts
</syntaxhighlight>
<pre>
172.31.200.10    mysql
</pre>
<code>mysql</code> sarà il ''nome host'' per le ''connection string'' dei siti.


== Certificati SSL ==
== Certificati SSL ==
Riga 61: Riga 72:
max_execution_time = 900
max_execution_time = 900
max_input_vars = 5000
max_input_vars = 5000
memory_limit = 2048M
memory_limit = 4096M
max_input_time = 400
max_input_time = 400
</syntaxhighlight>
</syntaxhighlight>
Riga 69: Riga 80:
sudo systemctl restart php7.4-fpm.service
sudo systemctl restart php7.4-fpm.service
</syntaxhighlight>
</syntaxhighlight>
Modificare <code>/etc/php/7.4/fpm/pool.d/www.conf</code> per i pool<br/>
Documentazione: https://www.php.net/manual/en/install.fpm.configuration.php
<syntaxhighlight lang="bash">
pm.max_children = 10
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 6
pm.max_requests = 500
</syntaxhighlight>
* '''pm.max_children''': Numero di connessioni simultanee.
* '''pm.start_servers''': Questo valore determina il numero di processi PHP-FPM che vengono avviati inizialmente al caricamento.
* '''pm.min_spare_servers e pm.max_spare_servers''': Questi valori controllano il numero minimo e massimo di processi PHP-FPM inattivi mantenuti in standby per gestire eventuali picchi di traffico.
* '''pm.max_requests''': Questo valore specifica il numero massimo di richieste gestite da un singolo processo PHP prima di essere terminato e ricreato. Ho impostato questo valore a 500 per evitare che i processi accumulino troppe richieste nel tempo, riducendo così il rischio di perdita di memoria o di degrado delle prestazioni nel tempo.


=== Designbest Script ===
=== Designbest Script ===
Riga 98: Riga 125:
dominio_escaped=$(echo ${dominio//./_})
dominio_escaped=$(echo ${dominio//./_})
# Eseguo la creazione del database sull'altra macchina
# Eseguo la creazione del database sull'altra macchina
ssh ubuntu@172.31.200.10 -i /opt/script-bash/webmobili-key-pem.pem 'mysql -u designbest --password=W3bm0b1l! -e "CREATE DATABASE wp_'${dominio_escaped}';"'
ssh ubuntu@mysql -i /opt/script-bash/webmobili-key-pem.pem 'mysql -u designbest --password=W3bm0b1l! -e "CREATE DATABASE wp_'${dominio_escaped}';"'
#mysql -u root --password=W3bm0b1l! -e "CREATE DATABASE wp_${dominio_escaped};"
#mysql -u root --password=W3bm0b1l! -e "CREATE DATABASE wp_${dominio_escaped};"
#echo "---> Database MySql creato <---"
#echo "---> Database MySql creato <---"
Riga 116: Riga 143:
virtualhost_str=$(buildVirtualhost $dominio)
virtualhost_str=$(buildVirtualhost $dominio)
echo "$virtualhost_str" > $dominio.conf
echo "$virtualhost_str" > $dominio.conf
mkdir /var/log/apache2/$dominio
chown www-data:www-data /var/log/apache2/$dominio/ -R
chmod 775 /var/log/apache2/$dominio/ -R
a2ensite $dominio.conf
a2ensite $dominio.conf
echo "---> Fine VIRTUALHOST <---"
echo "---> Fine VIRTUALHOST <---"
Riga 130: Riga 154:
</syntaxhighlight>
</syntaxhighlight>
</div>
</div>
'''Ricordarsi''' che in ambiente di ''Staging'' il percorso della macchina database cambia in <code>ubuntu@mysqlstaging</code>


* '''virtualhost-template'''
* '''virtualhost-template'''
Riga 162: Riga 187:
Require all granted
Require all granted
</Directory>
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost"
</FilesMatch>
#Logfiles
#Logfiles
ErrorLog /var/log/apache2/{vhostname}/error.log
ErrorLog /var/log/apache2/{vhostname}.error.log
</VirtualHost>
</VirtualHost>


Riga 190: Riga 212:
* Installare il plugin '''W3 Total Cache'''
* Installare il plugin '''W3 Total Cache'''


=== PHPMyAdmin ===
=== PHPMyAdmin (non usato) ===
Questa guida è da seguire una volta terminata la [[#Installazione_Database_Server_MySQL|Macchina Database]]<br/><br/>
Questa guida è da seguire una volta terminata la [[#Installazione_Database_Server_MySQL|Macchina Database]]<br/><br/>


Riga 222: Riga 244:


=== Python PIP ===
=== Python PIP ===
Appena installato '''python3''' soffre di un bug quando si cerca di usare PIP.<br/>
Appena installato '''python3''' impedisce di usare PIP.<br/>
Fonte: https://www.makeuseof.com/fix-pip-error-externally-managed-environment-linux/<br/>
Fonte: https://www.makeuseof.com/fix-pip-error-externally-managed-environment-linux/<br/>


==== Soluzione veloce ====
La soluzione è quella di cancellare un file di testo presente nella cartella di installazione:
La soluzione è quella di cancellare un file di testo presente nella cartella di installazione:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Riga 230: Riga 253:
sudo rm EXTERNALLY-MANAGED
sudo rm EXTERNALLY-MANAGED
</syntaxhighlight>
</syntaxhighlight>
Ricordiamo che PIP agisce localmente, perciò i moduli installati sono solo per l'utente che li sta installando.
Ricordiamo che PIP agisce localmente, perciò i moduli installati sono solo per l'utente che li sta installando.<br/>
IMPORTANTE: se il programma python viene schedulato o usato da altri utenti (come root), è necessario che tutti questi utenti abbiano runnato <code>pip</code> per installare le librerie.


Copiare il programmino in <code>/opt/script-python/GoogleDriveUpload</code>.<br/>
Copiare il programmino in <code>/opt/script-python/GoogleDriveUpload</code>.<br/>
Riga 242: Riga 266:
</syntaxhighlight>
</syntaxhighlight>
Per installare i pacchetti richiesti.
Per installare i pacchetti richiesti.
==== Soluzione Consigliata ====
Installare un '''virtual environment''' in ogni singolo progetto, non nel globale.
<syntaxhighlight lang="bash">
# Installa la gestione di virtual environment
sudo apt install python3-venv
cd /opt/script-python/NomeProgetto
python3 -m venv venv
source venv/bin/activate
pip3 install -r requirements.txt
deactivate
</syntaxhighlight>
installa i pacchetti nella cartella <code>venv</code>.
<pre>
/opt/mioprogetto/
├── venv/
│  ├── bin/        # Contiene l'interprete Python e altri eseguibili (su Linux/macOS)
│  ├── include/
│  ├── lib/        # Contiene le librerie installate con pip
│  └── pyvenv.cfg  # File di configurazione dell'ambiente virtuale
└── altri_file_del_progetto
</pre>
Il comando <code>deactivate</code> esce dall'environment.
Per eseguire il progetto è necessario usare l'interprete python presente in <code>venv/bin</code>
<syntaxhighlight lang="bash">
/opt/percorsomioprogramma/venv/bin/python3 /opt/percorsomioprogramma/mioprogramma.py
</syntaxhighlight>


== Port Forwarding NAT (Non usato) ==
== Port Forwarding NAT (Non usato) ==
Riga 281: Riga 337:
</syntaxhighlight>
</syntaxhighlight>


== Backup automatici dei siti ==
Un nostro script si occupa di backuppare i siti presenti sulla macchina e di inviarli al '''GoogleDrive''' della casella ''webmobili@gmail.com''.<br/><br/>
Lo script si appoggia un programma python '''GoogleDriveUpload'''<br/>
collocato in <code>/opt/script-python/GoogleDriveUpload</code><br/>
che prende come argomento un file di tipo ''tar.gz'' e lo uploada nella cartella scelta di Drive.<br/><br/>
Lo script principale si trova sotto <code>/opt/script-bash/sitesbackup/wordpressbackup</code>
<syntaxhighlight lang="bash">
#!/bin/sh
# Recupero la data in formato YYYYmmgg
DATE=$(date +%Y%m%d)
SCRIPT_PYTHON="/opt/script-python/GoogleDriveUpload/main.py"
SCRIPT_PYTHON_DELETE="/opt/script-python/GoogleDriveUpload/delete.py"
script_dir=$(realpath $(dirname $0))
cd /opt/script-python/GoogleDriveUpload/
# Eseguo tutti gli script presenti in sites.conf
for script in "$script_dir"/sites.conf/*.sh; do
  . "$script"
done
python3 $SCRIPT_PYTHON_DELETE
chown www-data:www-data /var/www/backup/sites/ -R
chmod 775 /var/www/backup/sites/ -R
# Cancello i  backups più vecchi di 2 giorni
find /var/www/backup/sites -mtime +2 -exec rm {} \;
</syntaxhighlight>
legge tutti i file <code>.sh</code> presenti nella cartella <code>/opt/script-bash/sitesbackup/sites.conf</code> e li esegue.<br/>
<br/>
Il loro contenuto è simile a questo cambiando i percorsi e i nomi a seconda del sito:
<syntaxhighlight lang="bash">
#!/bin/bash
SCRIPT_PYTHON="/opt/script-python/GoogleDriveUpload/main.py"
FOLDER_NAME="designbestmagazine.com"
# Comprimo i file
tar cvzf /var/www/backup/sites/"$DATE"_"$FOLDER_NAME".tar.gz /var/www/"$FOLDER_NAME"
# Carico il file su Drive
python3 $SCRIPT_PYTHON /var/www/backup/sites/"$DATE"_"$FOLDER_NAME".tar.gz
# Rimuovo il backup
rm /var/www/backup/sites/"$DATE"_"$FOLDER_NAME".tar.gz
</syntaxhighlight>
Probabilmente le variabili sono condivise durante l'esecuzione dei diversi script
== Samba server ==
Per avere accesso al file system di questa macchina condividiamo i folder tramite '''Samba'''.<br/>
Sarà possibile accedervi solo passando dalla rete interna, dalla macchina <code>IIS</code>
Credenziali
<pre>
designbest
W3bm0b1l!
</pre>
Liberare la '''porta del gruppo di sicurezza''' <code>445</code> (si trova nei preconfigurati col nome <code>Samba</code>)
<syntaxhighlight lang="bash">
# Creare l'utente designbest
sudo adduser designbest
# password la solita: W3bm0b1l!
# Aggiungere designbest al gruppo dei sudoers
sudo adduser designbest sudo
# Aggiungere designbest al gruppo dei www-data
sudo adduser designbest www-data
# Installare Samba
sudo apt install samba cifs-utils
# Aggiungere l'utente a Samba
sudo smbpasswd -a designbest
# Impostare la password a W3bm0b1l!
</syntaxhighlight>
Poi editare il file di configurazione principale
<syntaxhighlight lang="bash">sudo nano /etc/samba/smb.conf</syntaxhighlight>
andare al fondo e aggiungere una sezione
<pre>
[ApacheWWW]
  comment = Folder dei siti
  read only = no
  locking = yes
  path = /var/www
  guest ok = no
</pre>
specificando in ''path'' la cartella da condividere.
Cambiare l'<code>hostname</code> con un nome ''"amico"''
<syntaxhighlight lang="bash">
sudo nano /etc/hostname
</syntaxhighlight>
ad esempio <code>apache</code>
Restartare il servizio
<syntaxhighlight lang="bash">
sudo systemctl restart smbd
</syntaxhighlight>
Il '''collegamento a SAMBA da Windows non funziona''' perché [[Macchina_IIS_Web_Server#SAMBA_abilitazione|di default è disattivato]].
https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/guest-access-in-smb2-is-disabled-by-default


[[Category:AWS]]
[[Category:AWS]]

Versione attuale delle 09:10, 26 ago 2025

Installazione Web Server Apache

[modifica]

Durante la creazione esplicitare IP privato come 172.31.100.10
(configurazione di rete avanzata => IP Primario)

sudo apt update
sudo apt upgrade
sudo dpkg-reconfigure tzdata

# Cron
sudo apt install cron

#FTP
sudo apt install vsftpd
sudo nano /etc/vsftpd.conf  # configurare come da guida
sudo systemctl reload vsftpd.service

# LAMP
sudo apt install apache2

# Repo per tenere aggiornato PHP e accedere alle versioni precedenti
sudo apt -y install lsb-release apt-transport-https ca-certificates 
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
sudo apt update


sudo apt install php-fpm php-mysql
#sudo apt install php7.4-fpm php7.4-mysql

# Abilitare moduli Apache per PHP FPM
sudo a2enmod proxy_fcgi setenvif rewrite http2 brotli
sudo a2enconf php8.4-fpm
sudo systemctl restart apache2.service

sudo chown www-data:www-data /var/www -R
sudo chmod 775 /var/www -R
sudo chmod g+s /var/www -R
# Aggiungere l'utente corrente al gruppo www-data
sudo adduser admin www-data

sudo systemctl restart apache2.service

Loopback

[modifica]

Inserire nel loopback il nome mysql associato all'IP interno della macchina database corrispondente:

sudo nano /etc/hosts
172.31.200.10    mysql

mysql sarà il nome host per le connection string dei siti.

Certificati SSL

[modifica]
sudo apt install snapd
sudo snap install core
sudo snap refresh
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot


Configurazione PHP per Wordpress

[modifica]

PHP Configuration

[modifica]

A causa della presenza di più istanze Wordpress abbiamo convenuto di modificare i valori di /etc/php/7.4/fpm/php.ini nel seguente modo

upload_max_filesize = 128M
post_max_size = 256M
max_execution_time = 900
max_input_vars = 5000
memory_limit = 4096M
max_input_time = 400

E riavviare il service

sudo systemctl restart php7.4-fpm.service


Modificare /etc/php/7.4/fpm/pool.d/www.conf per i pool
Documentazione: https://www.php.net/manual/en/install.fpm.configuration.php

pm.max_children = 10
pm.start_servers = 4
pm.min_spare_servers = 2
pm.max_spare_servers = 6
pm.max_requests = 500
  • pm.max_children: Numero di connessioni simultanee.
  • pm.start_servers: Questo valore determina il numero di processi PHP-FPM che vengono avviati inizialmente al caricamento.
  • pm.min_spare_servers e pm.max_spare_servers: Questi valori controllano il numero minimo e massimo di processi PHP-FPM inattivi mantenuti in standby per gestire eventuali picchi di traffico.
  • pm.max_requests: Questo valore specifica il numero massimo di richieste gestite da un singolo processo PHP prima di essere terminato e ricreato. Ho impostato questo valore a 500 per evitare che i processi accumulino troppe richieste nel tempo, riducendo così il rischio di perdita di memoria o di degrado delle prestazioni nel tempo.

Designbest Script

[modifica]
  • Piazzare lo script createvirtualhost.sh in /opt/script-bash
  • Piazzare il template virtualhost-template in /etc/apache2/sites-available

Scaricare le dipendenze

sudo apt install unzip
  • createvirtualhost.sh
#!/bin/bash

function buildVirtualhost {
	return_value=$(</etc/apache2/sites-available/virtualhost-template)
	return_value=$(echo -e "${return_value//'{vhostname}'/$1}")
	echo "$return_value"
}

echo -e "Scrivi il dominio, per piacere: \c"
read dominio
#check lowercase
dominio=$(echo $dominio | tr '[:upper:]' '[:lower:]')
echo "Verrà creata un'istanza Wordpress per il dominio $dominio e www.$dominio"

#echo "---> Inizio creazione database MySql..."
dominio_escaped=$(echo ${dominio//./_})
# Eseguo la creazione del database sull'altra macchina
ssh ubuntu@mysql -i /opt/script-bash/webmobili-key-pem.pem 'mysql -u designbest --password=W3bm0b1l! -e "CREATE DATABASE wp_'${dominio_escaped}';"'
#mysql -u root --password=W3bm0b1l! -e "CREATE DATABASE wp_${dominio_escaped};"
#echo "---> Database MySql creato <---"

echo "---> WORDPRESS, download ed estrazione..."
cd /var/www/
wget -O wp-temp.zip -v https://wordpress.org/latest.zip
unzip wp-temp.zip
mv wordpress $dominio
chown www-data:www-data $dominio -R
chmod 775 $dominio -R
rm wp-temp.zip
echo "---> Fine WORDPRESS <---"

echo "---> VIRTUALHOST, creazione + enable site..."
cd /etc/apache2/sites-available/
virtualhost_str=$(buildVirtualhost $dominio)
echo "$virtualhost_str" > $dominio.conf
a2ensite $dominio.conf
echo "---> Fine VIRTUALHOST <---"

echo "---> CERTIFICATO SSL, creazione..."
#certbot --apache -d $dominio -d www.$dominio
certbot --apache -d $dominio
systemctl reload apache2.service
echo "---> Fine grazie <---"

Ricordarsi che in ambiente di Staging il percorso della macchina database cambia in ubuntu@mysqlstaging

  • virtualhost-template
#
# {vhostname}
#
<VirtualHost *:80>
        ServerName {vhostname}
        Redirect / https://%{SERVER_NAME}%{REQUEST_URI}
</VirtualHost>

<VirtualHost *:443>
	ServerAdmin info@designbest.com
	ServerName {vhostname}
	ServerAlias {vhostname} www.{vhostname}

	DirectoryIndex index.html index.htm index.php
	DocumentRoot /var/www/{vhostname}	

	<Directory />
		Options FollowSymLinks
		AllowOverride All
	</Directory>

	<Directory /var/www/{vhostname}/>
		Options -Indexes +FollowSymLinks +MultiViews
		AllowOverride All
		Order allow,deny
		Allow from all
		Require all granted
	</Directory>
	#Logfiles
	ErrorLog /var/log/apache2/{vhostname}.error.log
</VirtualHost>

Dipendenze raccomandate

[modifica]

Per eliminare tutti i warning dati dalla sezione "Salute del Sito"
procedere con

sudo apt install php7.4-curl php7.4-xml php7.4-imagick php7.4-gd php7.4-mbstring php7.4-zip php7.4-intl
sudo apt install memcached php7.4-memcached

Configurare la memoria di memcached

sudo nano /etc/memcached.conf

e impostare un valore a -m

-m 512
  • Installare il plugin W3 Total Cache

PHPMyAdmin (non usato)

[modifica]

Questa guida è da seguire una volta terminata la Macchina Database

Il database sta su una macchina diversa da localhost, perciò l'installazione standard di phpmyadmin non è appropriata.

sudo apt install phpmyadmin

E scegliere NO quando chiede di installare CommonDatabase in automatico.

sudo dpkg-reconfigure phpmyadmin
  • Specificare che l'istanza del database si trova su un altro host
  • Immettere l'host es. 172.31.200.11 e proseguire

Installare Amazon SSM Agent

[modifica]

Le istanze Debian non hanno questo servizio pre-installato.
Permette all'istanza di comunicare tramite AWS CLI.

mkdir /tmp/ssm
cd /tmp/ssm
wget https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_amd64/amazon-ssm-agent.deb
sudo dpkg -i amazon-ssm-agent.deb

Fonte: https://docs.aws.amazon.com/it_it/systems-manager/latest/userguide/agent-install-deb.html

Python3 per Backup

[modifica]

Abbiamo uno script in Python che backuppa i siti di produzione e li copia sullo spazio di Drive automaticamente.

sudo apt install python3 python3-pip

Python PIP

[modifica]

Appena installato python3 impedisce di usare PIP.
Fonte: https://www.makeuseof.com/fix-pip-error-externally-managed-environment-linux/

Soluzione veloce

[modifica]

La soluzione è quella di cancellare un file di testo presente nella cartella di installazione:

cd /usr/lib/python3.11
sudo rm EXTERNALLY-MANAGED

Ricordiamo che PIP agisce localmente, perciò i moduli installati sono solo per l'utente che li sta installando.
IMPORTANTE: se il programma python viene schedulato o usato da altri utenti (come root), è necessario che tutti questi utenti abbiano runnato pip per installare le librerie.

Copiare il programmino in /opt/script-python/GoogleDriveUpload.

cd /opt/script-python/GoogleDriveUpload
# Importante che il gruppo di culoz.json abbia i permessi 7
sudo chmod 775 culoz.json
pip3 install -r requirements.txt
# Installare le dipendenze anche per l'utente root
sudo pip3 install -r requirements.txt

Per installare i pacchetti richiesti.

Soluzione Consigliata

[modifica]

Installare un virtual environment in ogni singolo progetto, non nel globale.

# Installa la gestione di virtual environment
sudo apt install python3-venv

cd /opt/script-python/NomeProgetto
python3 -m venv venv
source venv/bin/activate
pip3 install -r requirements.txt
deactivate

installa i pacchetti nella cartella venv.

/opt/mioprogetto/
├── venv/
│   ├── bin/        # Contiene l'interprete Python e altri eseguibili (su Linux/macOS)
│   ├── include/
│   ├── lib/        # Contiene le librerie installate con pip
│   └── pyvenv.cfg  # File di configurazione dell'ambiente virtuale
└── altri_file_del_progetto

Il comando deactivate esce dall'environment.

Per eseguire il progetto è necessario usare l'interprete python presente in venv/bin

/opt/percorsomioprogramma/venv/bin/python3 /opt/percorsomioprogramma/mioprogramma.py

Port Forwarding NAT (Non usato)

[modifica]

Utilizziamo iptables per permettere la connessione di Workbench all'istanza privata database.

# Necessario essere superuser
sudo su
# Abilitare l'inoltro dei pacchetti a livello di sistema
sudo nano /etc/sysctl.conf
# net.ipv4.ip_forward = 1

# Attivare la modifica
sudo sysctl -p

# Redirigo il traffico della porta 3306 verso la macchina 172.31.100.75
iptables -t nat -A PREROUTING -p tcp --dport 3306 -j DNAT --to-destination 172.31.100.75:3306
# Verifico la regola con
iptables -t nat -L

# Non so se sia necessaria
iptables -A FORWARD -p tcp -d 172.31.100.75 --dport 3306 -j ACCEPT
# Questa gestisce l'eventuale traffico che ritorna dal forwarding
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Uscire da superuser
exit

Uno strumento per verificare il forward è lanciare

sudo tcpdump -i enX0 port 3306

che si mette in ascolto della porta 3306,
provare una connessione per verificare gli inoltri da terminale.

Con mysql-client si può provare in questo modo

mysql --host=<ippubblico> --user=designbest --password=W3bm0b1l! sys


Backup automatici dei siti

[modifica]

Un nostro script si occupa di backuppare i siti presenti sulla macchina e di inviarli al GoogleDrive della casella webmobili@gmail.com.

Lo script si appoggia un programma python GoogleDriveUpload
collocato in /opt/script-python/GoogleDriveUpload
che prende come argomento un file di tipo tar.gz e lo uploada nella cartella scelta di Drive.

Lo script principale si trova sotto /opt/script-bash/sitesbackup/wordpressbackup

#!/bin/sh

# Recupero la data in formato YYYYmmgg
DATE=$(date +%Y%m%d)

SCRIPT_PYTHON="/opt/script-python/GoogleDriveUpload/main.py"
SCRIPT_PYTHON_DELETE="/opt/script-python/GoogleDriveUpload/delete.py"

script_dir=$(realpath $(dirname $0))

cd /opt/script-python/GoogleDriveUpload/

# Eseguo tutti gli script presenti in sites.conf
for script in "$script_dir"/sites.conf/*.sh; do
  . "$script"
done


python3 $SCRIPT_PYTHON_DELETE

chown www-data:www-data /var/www/backup/sites/ -R
chmod 775 /var/www/backup/sites/ -R

# Cancello i  backups più vecchi di 2 giorni
find /var/www/backup/sites -mtime +2 -exec rm {} \;

legge tutti i file .sh presenti nella cartella /opt/script-bash/sitesbackup/sites.conf e li esegue.

Il loro contenuto è simile a questo cambiando i percorsi e i nomi a seconda del sito:

#!/bin/bash

SCRIPT_PYTHON="/opt/script-python/GoogleDriveUpload/main.py"
FOLDER_NAME="designbestmagazine.com"

# Comprimo i file
tar cvzf /var/www/backup/sites/"$DATE"_"$FOLDER_NAME".tar.gz /var/www/"$FOLDER_NAME"
# Carico il file su Drive
python3 $SCRIPT_PYTHON /var/www/backup/sites/"$DATE"_"$FOLDER_NAME".tar.gz
# Rimuovo il backup
rm /var/www/backup/sites/"$DATE"_"$FOLDER_NAME".tar.gz

Probabilmente le variabili sono condivise durante l'esecuzione dei diversi script

Samba server

[modifica]

Per avere accesso al file system di questa macchina condividiamo i folder tramite Samba.
Sarà possibile accedervi solo passando dalla rete interna, dalla macchina IIS

Credenziali

designbest
W3bm0b1l!

Liberare la porta del gruppo di sicurezza 445 (si trova nei preconfigurati col nome Samba)

# Creare l'utente designbest
sudo adduser designbest
# password la solita: W3bm0b1l!

# Aggiungere designbest al gruppo dei sudoers
sudo adduser designbest sudo
# Aggiungere designbest al gruppo dei www-data
sudo adduser designbest www-data

# Installare Samba
sudo apt install samba cifs-utils
# Aggiungere l'utente a Samba
sudo smbpasswd -a designbest
# Impostare la password a W3bm0b1l!

Poi editare il file di configurazione principale

sudo nano /etc/samba/smb.conf

andare al fondo e aggiungere una sezione

[ApacheWWW]
  comment = Folder dei siti
  read only = no
  locking = yes
  path = /var/www
  guest ok = no

specificando in path la cartella da condividere.

Cambiare l'hostname con un nome "amico"

sudo nano /etc/hostname

ad esempio apache


Restartare il servizio

sudo systemctl restart smbd

Il collegamento a SAMBA da Windows non funziona perché di default è disattivato.

https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/guest-access-in-smb2-is-disabled-by-default