-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLEMP_install.sh
More file actions
141 lines (108 loc) · 3.8 KB
/
LEMP_install.sh
File metadata and controls
141 lines (108 loc) · 3.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#!/bin/bash
echo "=== LEMP AUTO SETUP FOR DEBIAN 12 (NGINX + PHP + MARIADB + PHPMYADMIN) ==="
# --- Default values ---
DEF_WWW="/srv/www"
# Ask web root directory
read -p "Каталог для сайтов [$DEF_WWW]: " WWW_DIR
WWW_DIR=${WWW_DIR:-$DEF_WWW}
# Ask MySQL root password
read -s -p "Пароль для root MySQL: " MYSQL_PASS
echo
read -s -p "Повторите пароль: " MYSQL_PASS2
echo
if [ "$MYSQL_PASS" != "$MYSQL_PASS2" ]; then
echo "Ошибка: пароли не совпадают!"
exit 1
fi
echo
echo "=== Обновление системы и установка пакетов ==="
apt update -y
apt install -y nginx mariadb-server acl wget curl unzip
echo "=== Установка PHP и модулей ==="
apt install -y php php-fpm php-mysql php-cli php-curl php-zip php-xml php-gd php-mbstring php-intl php-simplexml php-common
echo
echo "=== Настройка каталога сайтов ==="
mkdir -p "$WWW_DIR"
chmod -R 775 "$WWW_DIR"
chown -R www-data:www-data "$WWW_DIR"
setfacl -R -m g:www-data:rwx "$WWW_DIR"
echo
echo "=== Создание тестовой страницы ==="
cat <<EOF > "$WWW_DIR/index.php"
<?php
phpinfo();
?>
EOF
chown www-data:www-data "$WWW_DIR/index.php"
echo
echo "=== Настройка Nginx ==="
NGINX_CONF="/etc/nginx/sites-available/default"
cp "$NGINX_CONF" "$NGINX_CONF.bak.$(date +%Y%m%d-%H%M%S)"
cat <<EOF > "$NGINX_CONF"
server {
listen 80 default_server;
listen [::]:80 default_server;
root $WWW_DIR;
index index.php index.html index.htm;
server_name _;
location / {
try_files \$uri \$uri/ /index.php?\$query_string;
}
location ~ \.php\$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
EOF
echo
echo "=== Установка phpMyAdmin (неинтерактивно) ==="
apt install -y debconf-utils
# Автоматический ответ на вопросы phpMyAdmin
echo "phpmyadmin phpmyadmin/reconfigure-webserver multiselect none" | debconf-set-selections
echo "phpmyadmin phpmyadmin/dbconfig-install boolean false" | debconf-set-selections
apt install -y phpmyadmin
# Делаем символическую ссылку для nginx
if [ ! -d "/usr/share/phpmyadmin" ]; then
echo "ОШИБКА: phpMyAdmin не установлен!"
else
ln -s /usr/share/phpmyadmin "$WWW_DIR/phpmyadmin" 2>/dev/null
fi
echo
echo "=== Настройка MariaDB root-пароля ==="
echo "Определение текущего метода аутентификации root..."
AUTH_METHOD=$(sudo mariadb -N -e "SELECT plugin FROM mysql.user WHERE User='root' AND Host='localhost';" 2>/dev/null)
echo "Текущий метод: $AUTH_METHOD"
if [[ "$AUTH_METHOD" != "unix_socket" ]]; then
echo "Временно переключаем root на unix_socket..."
sudo systemctl stop mariadb
sudo mysqld_safe --skip-grant-tables >/dev/null 2>&1 &
sleep 5
sudo mariadb <<EOF
UPDATE mysql.user SET plugin='unix_socket' WHERE User='root';
FLUSH PRIVILEGES;
EOF
sudo systemctl restart mariadb
sleep 3
fi
echo "Установка нового root-пароля..."
sudo mariadb <<EOF
ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('$MYSQL_PASS');
FLUSH PRIVILEGES;
EOF
echo
echo "=== Перезапуск служб ==="
systemctl restart nginx
systemctl restart php8.2-fpm
systemctl restart mariadb
systemctl enable nginx
systemctl enable php8.2-fpm
systemctl enable mariadb
echo
echo "=== УСПЕХ! СЕРВЕР ГОТОВ ==="
echo "Каталог сайтов: $WWW_DIR"
echo "Тестовая страница: $WWW_DIR/index.php"
echo "phpMyAdmin: http://IP_СЕРВЕРА/phpmyadmin"
echo "root-пароль MariaDB установлен."