From f741686510316c9b2e92d6da6fb6d70e51726fd9 Mon Sep 17 00:00:00 2001 From: mirivlad Date: Wed, 28 Feb 2024 13:41:19 +0800 Subject: [PATCH] Add create_host.sh - script for create and configuration web-server with mysql and php-fpm --- create_host.sh | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100755 create_host.sh diff --git a/create_host.sh b/create_host.sh new file mode 100755 index 0000000..56cdaa5 --- /dev/null +++ b/create_host.sh @@ -0,0 +1,91 @@ +#!/bin/bash +#Проверка запуска скрипта из под root +if [[ $EUID -ne 0 ]]; then + echo "This script must be run as root" + exit 1 +fi + +CUR_USER="$(printenv SUDO_USER)" +if [[ -z "$USER" ]]; then + CUR_USER="www-data" +fi + +echo "Script run under user: $CUR_USER" +read -n 1 -s -r -p "Press any key to continue... " key + +# Проверяем, установлены ли необходимые пакеты +if ! command -v nginx > /dev/null; then + echo "Установка nginx..." + sudo apt-get install nginx -y +fi + +if ! command -v php > /dev/null; then + echo "Установка php-fpm..." + sudo apt-get install php-fpm -y +fi + +if ! command -v mysql > /dev/null; then + echo "Установка mysql..." + sudo apt-get install mysql-server -y +fi + +PHP_VER="$(php -v | head -n 1 | cut -d " " -f 2 | cut -f1-2 -d".")" +echo "Installed PHP version: $PHP_VER" + +# Запрашиваем у пользователя необходимые данные +read -p "Введите имя домена: " domain +read -p "Введите имя базы данных: " db_name +read -p "Введите имя пользователя базы данных: " db_user +read -p "Введите пароль пользователя базы данных: " db_pass + +echo "Создаем директорию для сайта и даем на нее права пользователю" +mkdir -p /var/www/$domain +chmod -R 775 /var/www/$domain +chown -R $CUR_USER:www-data /var/www/$domain +echo "Генерируем конфигурационный файл php-fpm" +echo "[$domain] +user = $CUR_USER +group = $CUR_USER +listen = /run/php/php$PHP_VER-fpm_$CUR_USER.sock +listen.owner = www-data +listen.group = www-data +listen.mode=0660 +pm = dynamic +pm.max_children = 5 +pm.start_servers = 2 +pm.min_spare_servers = 1 +pm.max_spare_servers = 3 + +" > /etc/php/$PHP_VER/fpm/pool.d/$domain.conf +echo "Генерируем конфигурационный файл виртуального хоста nginx" +echo "server { + listen 80; + server_name $domain; + root /var/www/$domain; + index index.php index.html index.htm; + location ~ \.php$ { + fastcgi_pass unix:/run/php/php$PHP_VER-fpm_$CUR_USER.sock; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; + include fastcgi_params; + } +}" > /etc/nginx/sites-available/$domain + +echo "Создаем базу данных, пользователя и даем на нее права" +echo "CREATE DATABASE $db_name;" | mysql -u root +echo "CREATE USER '$db_user'@'localhost' IDENTIFIED BY '$db_pass';" | mysql -u root +echo "GRANT ALL ON $db_name.* TO '$db_user'@'localhost';" | mysql -u root +echo "FLUSH PRIVILEGES;" | mysql -u root + +echo "Включаем конфигурацию виртуального хоста nginx" +ln -s /etc/nginx/sites-available/$domain /etc/nginx/sites-enabled/ + +echo "Добавляем запись в /etc/hosts" +echo "127.0.0.1 $domain" >> /etc/hosts + +echo "Перезапускаем сервисы" +service nginx restart +service php$PHP_VER-fpm restart + +# Выводим сообщение об успешном завершении +echo "Установка и настройка завершены!"