Bash-скрипт для установки LEMP на домашний Ubuntu
Вот пример bash-скрипта, который автоматизирует установку и настройку LEMP-стека (Linux, Nginx, MySQL, PHP) на домашней машине с Ubuntu. Скрипт выполняет все необходимые шаги, включая установку, настройку и проверку работы компонентов.
LEMP Installer Script
#!/bin/bash
# Функция для вывода сообщений с цветом
print_message() {
echo -e "\e[1;32m$1\e[0m"
}
# Проверка, запущен ли скрипт от root
if [ "$EUID" -ne 0 ]; then
echo "Пожалуйста, запустите скрипт от имени root."
exit 1
fi
# 1. Обновление системы
print_message "=== Обновление системы ==="
apt update
apt upgrade -y
# 2. Установка Nginx
print_message "=== Установка Nginx ==="
apt install nginx -y
systemctl start nginx
systemctl enable nginx
# Проверка статуса Nginx
if systemctl is-active --quiet nginx; then
print_message "Nginx успешно установлен и запущен."
else
print_message "Ошибка: Nginx не запущен."
exit 1
fi
# 3. Установка MySQL
print_message "=== Установка MySQL ==="
apt install mysql-server -y
systemctl start mysql
systemctl enable mysql
# Настройка безопасности MySQL
print_message "=== Настройка безопасности MySQL ==="
mysql_secure_installation <<EOF
n
y
y
y
y
y
EOF
# Проверка статуса MySQL
if systemctl is-active --quiet mysql; then
print_message "MySQL успешно установлен и запущен."
else
print_message "Ошибка: MySQL не запущен."
exit 1
fi
# 4. Установка PHP
print_message "=== Установка PHP ==="
apt install php-fpm php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip -y
# Проверка версии PHP
php -v
# 5. Настройка Nginx для работы с PHP
print_message "=== Настройка Nginx для работы с PHP ==="
cat > /etc/nginx/sites-available/default <<EOF
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm;
server_name _;
location / {
try_files \$uri \$uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
EOF
# Перезапуск Nginx
systemctl restart nginx
# 6. Проверка работы PHP
print_message "=== Проверка работы PHP ==="
cat > /var/www/html/info.php <<EOF
<?php
phpinfo();
?>
EOF
# Проверка доступа к PHP
if curl -s http://localhost/info.php | grep -q "phpinfo"; then
print_message "PHP работает корректно."
else
print_message "Ошибка: PHP не работает."
exit 1
fi
# 7. Настройка прав доступа
print_message "=== Настройка прав доступа ==="
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
# 8. Установка phpMyAdmin (опционально)
read -p "Хотите установить phpMyAdmin? (y/n): " INSTALL_PHPMYADMIN
if [ "$INSTALL_PHPMYADMIN" = "y" ]; then
print_message "=== Установка phpMyAdmin ==="
apt install phpmyadmin -y
# Создание символической ссылки
ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin
# Перезапуск Nginx
systemctl restart nginx
print_message "phpMyAdmin установлен. Доступен по адресу: http://localhost/phpmyadmin"
fi
# 9. Установка Certbot для HTTPS (опционально)
read -p "Хотите настроить HTTPS с помощью Certbot? (y/n): " INSTALL_CERTBOT
if [ "$INSTALL_CERTBOT" = "y" ]; then
print_message "=== Установка Certbot ==="
apt install certbot python3-certbot-nginx -y
# Получение SSL-сертификата
certbot --nginx
print_message "HTTPS настроен с помощью Certbot."
fi
# 10. Завершение
print_message "=== Установка LEMP завершена ==="
echo "Nginx: http://localhost"
echo "PHP: http://localhost/info.php"
if [ "$INSTALL_PHPMYADMIN" = "y" ]; then
echo "phpMyAdmin: http://localhost/phpmyadmin"
fi
if [ "$INSTALL_CERTBOT" = "y" ]; then
echo "HTTPS: https://localhost"
fi
Как использовать скрипт
- Сохраните скрипт в файл, например,
lemp_installer.sh
. - Сделайте файл исполняемым:
chmod +x lemp_installer.sh
- Запустите скрипт от имени root:
sudo ./lemp_installer.sh
Что делает скрипт
- Обновляет систему.
- Устанавливает и настраивает Nginx.
- Устанавливает и настраивает MySQL.
- Устанавливает PHP и настраивает его для работы с Nginx.
- Проверяет работу PHP.
- Настраивает права доступа к веб-каталогу.
- Опционально устанавливает phpMyAdmin для управления MySQL.
- Опционально настраивает HTTPS с помощью Certbot.
- Выводит информацию о завершении установки.
Примечания
- Скрипт предназначен для домашней машины, поэтому он не включает сложные настройки безопасности, такие как настройка брандмауэра.
- Если вы используете доменное имя, замените
localhost
на ваше доменное имя при настройке Certbot. - После завершения работы скрипта удалите файл
info.php
для безопасности:
rm /var/www/html/info.php
Теперь у вас есть автоматизированный скрипт для установки LEMP-стека на Ubuntu!