|
1 | 1 | #!/bin/bash |
2 | 2 |
|
3 | | -echo "Aggiorno la lista dei pacchetti" |
4 | | -sudo apt-get update && sudo apt-get full-upgrade -y |
| 3 | +# Configurazione |
| 4 | +WP_DIR="/var/www/html" |
| 5 | +WP_URL="https://wordpress.org/latest.tar.gz" |
5 | 6 |
|
6 | | -echo "Installo Apache2" |
7 | | -sudo apt-get install apache2 -y |
| 7 | +# Colori per output |
| 8 | +RED='\033[0;31m' |
| 9 | +GREEN='\033[0;32m' |
| 10 | +YELLOW='\033[1;33m' |
| 11 | +NC='\033[0m' |
8 | 12 |
|
9 | | -echo "Installo PHP e i moduli necessari" |
10 | | -sudo apt-get install php php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip -y |
| 13 | +# Funzioni di utilità |
| 14 | +log_info() { |
| 15 | + echo -e "${GREEN}[INFO]${NC} $1" |
| 16 | +} |
11 | 17 |
|
12 | | -echo "Installo MariaDB per il database" |
13 | | -sudo apt-get install mariadb-server -y |
| 18 | +log_warn() { |
| 19 | + echo -e "${YELLOW}[WARN]${NC} $1" |
| 20 | +} |
14 | 21 |
|
15 | | -echo "Riavvio Apache2" |
| 22 | +log_error() { |
| 23 | + echo -e "${RED}[ERROR]${NC} $1" |
| 24 | +} |
| 25 | + |
| 26 | +check_root() { |
| 27 | + if [[ $EUID -eq 0 ]]; then |
| 28 | + log_error "Non eseguire questo script come root. Usa sudo quando necessario." |
| 29 | + exit 1 |
| 30 | + fi |
| 31 | +} |
| 32 | + |
| 33 | +check_command() { |
| 34 | + if ! command -v $1 &> /dev/null; then |
| 35 | + log_error "$1 non è installato" |
| 36 | + return 1 |
| 37 | + fi |
| 38 | + return 0 |
| 39 | +} |
| 40 | + |
| 41 | +# Controlli preliminari |
| 42 | +check_root |
| 43 | + |
| 44 | +log_info "Avvio installazione WordPress..." |
| 45 | + |
| 46 | +# Aggiornamento sistema |
| 47 | +log_info "Aggiornamento sistema in corso..." |
| 48 | +if ! sudo apt-get update && sudo apt-get full-upgrade -y; then |
| 49 | + log_error "Errore durante l'aggiornamento del sistema" |
| 50 | + exit 1 |
| 51 | +fi |
| 52 | + |
| 53 | +# Installazione Apache2 |
| 54 | +log_info "Installazione Apache2..." |
| 55 | +if ! sudo apt-get install apache2 -y; then |
| 56 | + log_error "Errore durante l'installazione di Apache2" |
| 57 | + exit 1 |
| 58 | +fi |
| 59 | + |
| 60 | +# Installazione PHP e moduli |
| 61 | +log_info "Installazione PHP e moduli..." |
| 62 | +PHP_PACKAGES="php php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip" |
| 63 | +if ! sudo apt-get install $PHP_PACKAGES -y; then |
| 64 | + log_error "Errore durante l'installazione di PHP" |
| 65 | + exit 1 |
| 66 | +fi |
| 67 | + |
| 68 | +# Installazione MariaDB |
| 69 | +log_info "Installazione MariaDB..." |
| 70 | +if ! sudo apt-get install mariadb-server -y; then |
| 71 | + log_error "Errore durante l'installazione di MariaDB" |
| 72 | + exit 1 |
| 73 | +fi |
| 74 | + |
| 75 | +# Avvio e abilitazione servizi |
| 76 | +log_info "Configurazione servizi..." |
| 77 | +sudo systemctl enable apache2 |
| 78 | +sudo systemctl enable mariadb |
16 | 79 | sudo systemctl restart apache2 |
| 80 | +sudo systemctl restart mariadb |
17 | 81 |
|
18 | | -echo "Mi sposto nella cartella /var/www/html" |
19 | | -cd /var/www/html/ |
| 82 | +# Verifica servizi |
| 83 | +if ! sudo systemctl is-active --quiet apache2; then |
| 84 | + log_error "Apache2 non è in esecuzione" |
| 85 | + exit 1 |
| 86 | +fi |
20 | 87 |
|
21 | | -echo "Scarico WordPress" |
22 | | -sudo rm -rf * && sudo wget http://wordpress.org/latest.tar.gz |
| 88 | +if ! sudo systemctl is-active --quiet mariadb; then |
| 89 | + log_error "MariaDB non è in esecuzione" |
| 90 | + exit 1 |
| 91 | +fi |
23 | 92 |
|
24 | | -echo "Estraggo i file di WordPress" |
25 | | -sudo tar xzf latest.tar.gz |
| 93 | +# Backup directory esistente |
| 94 | +if [ -d "$WP_DIR" ] && [ "$(ls -A $WP_DIR 2>/dev/null)" ]; then |
| 95 | + log_warn "Directory $WP_DIR non vuota. Creazione backup..." |
| 96 | + sudo mv "$WP_DIR" "${WP_DIR}.backup.$(date +%Y%m%d_%H%M%S)" |
| 97 | + sudo mkdir -p "$WP_DIR" |
| 98 | +fi |
26 | 99 |
|
27 | | -echo "Sposto i file da WordPress a html" |
28 | | -sudo mv wordpress/* . |
| 100 | +# Spostamento nella directory web |
| 101 | +cd "$WP_DIR" || { |
| 102 | + log_error "Impossibile accedere a $WP_DIR" |
| 103 | + exit 1 |
| 104 | +} |
29 | 105 |
|
30 | | -echo "Elimino la cartella WordPress che è vuota" |
31 | | -sudo rm -rf wordpress latest.tar.gz |
| 106 | +# Download WordPress |
| 107 | +log_info "Download WordPress..." |
| 108 | +if ! sudo wget "$WP_URL" -O latest.tar.gz; then |
| 109 | + log_error "Errore durante il download di WordPress" |
| 110 | + exit 1 |
| 111 | +fi |
| 112 | + |
| 113 | +# Verifica integrità file |
| 114 | +if [ ! -s latest.tar.gz ]; then |
| 115 | + log_error "File WordPress scaricato è vuoto o corrotto" |
| 116 | + sudo rm -f latest.tar.gz |
| 117 | + exit 1 |
| 118 | +fi |
| 119 | + |
| 120 | +# Estrazione WordPress |
| 121 | +log_info "Estrazione WordPress..." |
| 122 | +if ! sudo tar xzf latest.tar.gz; then |
| 123 | + log_error "Errore durante l'estrazione di WordPress" |
| 124 | + exit 1 |
| 125 | +fi |
32 | 126 |
|
33 | | -echo "Cambio il proprietario dei file dal tuo nome utente a www-data" |
34 | | -sudo chown -R www-data: . |
| 127 | +# Verifica estrazione |
| 128 | +if [ ! -d "wordpress" ]; then |
| 129 | + log_error "Cartella wordpress non trovata dopo l'estrazione" |
| 130 | + exit 1 |
| 131 | +fi |
35 | 132 |
|
36 | | -echo "Configuro i permessi dei file di WordPress" |
| 133 | +# Spostamento file |
| 134 | +log_info "Configurazione file WordPress..." |
| 135 | +sudo mv wordpress/* . 2>/dev/null || true |
| 136 | +sudo mv wordpress/.[^.]* . 2>/dev/null || true |
| 137 | + |
| 138 | +# Pulizia |
| 139 | +sudo rm -rf wordpress latest.tar.gz |
| 140 | + |
| 141 | +# Configurazione permessi |
| 142 | +log_info "Configurazione permessi..." |
| 143 | +sudo chown -R www-data:www-data . |
37 | 144 | sudo find . -type d -exec chmod 755 {} \; |
38 | 145 | sudo find . -type f -exec chmod 644 {} \; |
39 | 146 |
|
40 | | -echo "WordPress è stato installato con successo!" |
| 147 | +# Configurazione wp-config.php |
| 148 | +if [ -f "wp-config-sample.php" ]; then |
| 149 | + log_info "Creazione wp-config.php..." |
| 150 | + sudo cp wp-config-sample.php wp-config.php |
| 151 | + sudo chown www-data:www-data wp-config.php |
| 152 | +fi |
| 153 | + |
| 154 | +# Test finale |
| 155 | +log_info "Test configurazione Apache..." |
| 156 | +if sudo apache2ctl configtest; then |
| 157 | + sudo systemctl reload apache2 |
| 158 | + log_info "WordPress installato con successo!" |
| 159 | + log_info "Visita http://$(hostname -I | awk '{print $1}') per completare la configurazione" |
| 160 | + log_warn "Ricorda di:" |
| 161 | + log_warn "1. Configurare MariaDB: sudo mysql_secure_installation" |
| 162 | + log_warn "2. Creare database per WordPress" |
| 163 | + log_warn "3. Configurare il firewall se necessario" |
| 164 | +else |
| 165 | + log_error "Errore nella configurazione di Apache" |
| 166 | + exit 1 |
| 167 | +fi |
0 commit comments