напиши скрипт на языке bash для развертывания на linux debian сервера для wordpress работающего на php-fpm, nginx, mysql
#!/bin/bash
# Установка необходимых пакетов
apt-get update
apt-get install nginx php-fpm mysql-server php-mysql -y
# Настройка PHP-FPM
sed -i 's/^listen = .*/listen = \/run\/php\/php7.3-fpm.sock/' /etc/php/7.3/fpm/pool.d/www.conf
sed -i 's/^;listen.owner = .*/listen.owner = www-data/' /etc/php/7.3/fpm/pool.d/www.conf
sed -i 's/^;listen.group = .*/listen.group = www-data/' /etc/php/7.3/fpm/pool.d/www.conf
sed -i 's/^;listen.mode = .*/listen.mode = 0660/' /etc/php/7.3/fpm/pool.d/www.conf
# Создание базы данных для WordPress
mysql -u root -p -e "CREATE DATABASE wordpress;"
mysql -u root -p -e "GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';"
mysql -u root -p -e "FLUSH PRIVILEGES;"
# Настройка Nginx
rm /etc/nginx/sites-enabled/default
touch /etc/nginx/sites-available/wordpress
echo "server {
listen 80;
server_name yourdomain.com;
root /var/www/wordpress;
index index.php;
location / {
try_files \$uri \$uri/ /index.php?\$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
fastcgi_param PATH_INFO \$fastcgi_path_info;
}
}" > /etc/nginx/sites-available/wordpress
ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
# Скачивание и распаковка WordPress
cd /var/www/
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
mv wordpress/* wordpress/.htaccess /var/www/wordpress/
chown -R www-data:www-data /var/www/wordpress/
# Завершение установки
systemctl restart php7.3-fpm
systemctl restart nginx
echo "WordPress installation complete!"
модифицируй полученный выше скрипт для использования php версии новее 8.0
#!/bin/bash
# Установка необходимых пакетов
apt-get update
apt-get install nginx php-fpm mysql-server php-mysql -y
# Настройка PHP-FPM
sed -i 's/^listen = .*/listen = \/run\/php\/php8.0-fpm.sock/' /etc/php/8.0/fpm/pool.d/www.conf
sed -i 's/^;listen.owner = .*/listen.owner = www-data/' /etc/php/8.0/fpm/pool.d/www.conf
sed -i 's/^;listen.group = .*/listen.group = www-data/' /etc/php/8.0/fpm/pool.d/www.conf
sed -i 's/^;listen.mode = .*/listen.mode = 0660/' /etc/php/8.0/fpm/pool.d/www.conf
# Создание базы данных для WordPress
mysql -u root -p -e "CREATE DATABASE wordpress;"
mysql -u root -p -e "GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';"
mysql -u root -p -e "FLUSH PRIVILEGES;"
# Настройка Nginx
rm /etc/nginx/sites-enabled/default
touch /etc/nginx/sites-available/wordpress
echo "server {
listen 80;
server_name yourdomain.com;
root /var/www/wordpress;
index index.php;
location / {
try_files \$uri \$uri/ /index.php?\$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
fastcgi_param PATH_INFO \$fastcgi_path_info;
}
}" > /etc/nginx/sites-available/wordpress
ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
# Скачивание и распаковка WordPress
cd /var/www/
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
mv wordpress/* wordpress/.htaccess /var/www/wordpress/
chown -R www-data:www-data /var/www/wordpress/
# Завершение установки
systemctl restart php8.0-fpm
systemctl restart nginx
echo "WordPress installation complete!"
модифицируй полученный выше скрипт с дополнительным получением сертификатов letsencrypt для домена
#!/bin/bash
# Установка необходимых пакетов
apt-get update
apt-get install nginx php-fpm mysql-server php-mysql certbot python3-certbot-nginx -y
# Настройка PHP-FPM
sed -i 's/^listen = .*/listen = \/run\/php\/php8.0-fpm.sock/' /etc/php/8.0/fpm/pool.d/www.conf
sed -i 's/^;listen.owner = .*/listen.owner = www-data/' /etc/php/8.0/fpm/pool.d/www.conf
sed -i 's/^;listen.group = .*/listen.group = www-data/' /etc/php/8.0/fpm/pool.d/www.conf
sed -i 's/^;listen.mode = .*/listen.mode = 0660/' /etc/php/8.0/fpm/pool.d/www.conf
# Создание базы данных для WordPress
mysql -u root -p -e "CREATE DATABASE wordpress;"
mysql -u root -p -e "GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';"
mysql -u root -p -e "FLUSH PRIVILEGES;"
# Настройка Nginx
rm /etc/nginx/sites-enabled/default
touch /etc/nginx/sites-available/wordpress
echo "server {
listen 80;
server_name yourdomain.com;
return 301 https://\$server_name\$request_uri;
}
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
root /var/www/wordpress;
index index.php;
location / {
try_files \$uri \$uri/ /index.php?\$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
fastcgi_param PATH_INFO \$fastcgi_path_info;
}
}" > /etc/nginx/sites-available/wordpress
ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
# Получение сертификата Let's Encrypt
certbot --nginx -d yourdomain.com -m your-email@example.com --agree-tos --non-interactive --redirect
# Скачивание и распаковка WordPress
cd /var/www/
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
mv wordpress/* wordpress/.htaccess /var/www/wordpress/
chown -R www-data:www-data /var/www/wordpress/
# Завершение установки
systemctl restart php8.0-fpm
systemctl restart nginx
echo "WordPress installation complete!"
модифицируй полученный выше скрипт таким образом, чтобы имя пользователя базы данных, имя базы данных, пароль, домен сайта пользователь задавал в интерактивном режиме
#!/bin/bash
# Установка необходимых пакетов
apt-get update
apt-get install nginx php-fpm mysql-server php-mysql certbot python3-certbot-nginx -y
# Запрос имени пользователя базы данных, имени базы данных, пароля и домена сайта
read -p "Введите имя пользователя базы данных: " db_user
read -p "Введите имя базы данных: " db_name
read -p "Введите пароль для базы данных: " db_password
read -p "Введите домен вашего сайта: " domain
# Настройка PHP-FPM
sed -i 's/^listen = .*/listen = \/run\/php\/php8.0-fpm.sock/' /etc/php/8.0/fpm/pool.d/www.conf
sed -i 's/^;listen.owner = .*/listen.owner = www-data/' /etc/php/8.0/fpm/pool.d/www.conf
sed -i 's/^;listen.group = .*/listen.group = www-data/' /etc/php/8.0/fpm/pool.d/www.conf
sed -i 's/^;listen.mode = .*/listen.mode = 0660/' /etc/php/8.0/fpm/pool.d/www.conf
# Создание базы данных для WordPress
mysql -u root -p -e "CREATE DATABASE $db_name;"
mysql -u root -p -e "GRANT ALL PRIVILEGES ON $db_name.* TO '$db_user'@'localhost' IDENTIFIED BY '$db_password';"
mysql -u root -p -e "FLUSH PRIVILEGES;"
# Настройка Nginx
rm /etc/nginx/sites-enabled/default
touch /etc/nginx/sites-available/wordpress
echo "server {
listen 80;
server_name $domain;
return 301 https://\$server_name\$request_uri;
}
server {
listen 443 ssl;
server_name $domain;
ssl_certificate /etc/letsencrypt/live/$domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/$domain/privkey.pem;
root /var/www/wordpress;
index index.php;
location / {
try_files \$uri \$uri/ /index.php?\$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
fastcgi_param PATH_INFO \$fastcgi_path_info;
}
}" > /etc/nginx/sites-available/wordpress
ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
# Получение сертификата Let's Encrypt
certbot --nginx -d $domain -m your-email@example.com --agree-tos --non-interactive --redirect
# Скачивание и распаковка WordPress
cd /var/www/
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
mv wordpress/* wordpress/.htaccess /var/www/wordpress/
chown -R www-data:www-data /var/www/wordpress/
# Завершение установки
systemctl restart php8.0-fpm
systemctl restart nginx
echo "Установка WordPress завершена!"
модифицируй выше полученный скрипт таким образом чтобы создавать отдельного системного пользователя, от имени которого будет работать сайт, и у которого будут права только на директорию в которой сайт располагается
#!/bin/bash
# Установка необходимых пакетов
apt-get update
apt-get install nginx php-fpm mysql-server php-mysql certbot python3-certbot-nginx -y
# Создание системного пользователя и директории для сайта
read -p "Введите имя пользователя сайта: " site_user
mkdir /var/www/$site_user
useradd -d /var/www/$site_user -s /usr/sbin/nologin $site_user
chown -R $site_user:$site_user /var/www/$site_user
# Запрос имени пользователя базы данных, имени базы данных, пароля и домена сайта
read -p "Введите имя пользователя базы данных: " db_user
read -p "Введите имя базы данных: " db_name
read -p "Введите пароль для базы данных: " db_password
read -p "Введите домен вашего сайта: " domain
# Настройка PHP-FPM
sed -i 's/^listen = .*/listen = \/run\/php\/php8.0-fpm.sock/' /etc/php/8.0/fpm/pool.d/www.conf
sed -i 's/^;listen.owner = .*/listen.owner = www-data/' /etc/php/8.0/fpm/pool.d/www.conf
sed -i 's/^;listen.group = .*/listen.group = www-data/' /etc/php/8.0/fpm/pool.d/www.conf
sed -i 's/^;listen.mode = .*/listen.mode = 0660/' /etc/php/8.0/fpm/pool.d/www.conf
# Создание базы данных для WordPress
mysql -u root -p -e "CREATE DATABASE $db_name;"
mysql -u root -p -e "GRANT ALL PRIVILEGES ON $db_name.* TO '$db_user'@'localhost' IDENTIFIED BY '$db_password';"
mysql -u root -p -e "FLUSH PRIVILEGES;"
# Настройка Nginx
rm /etc/nginx/sites-enabled/default
touch /etc/nginx/sites-available/wordpress
echo "server {
listen 80;
server_name $domain;
return 301 https://\$server_name\$request_uri;
}
server {
listen 443 ssl;
server_name $domain;
ssl_certificate /etc/letsencrypt/live/$domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/$domain/privkey.pem;
root /var/www/$site_user/wordpress;
index index.php;
location / {
try_files \$uri \$uri/ /index.php?\$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
fastcgi_param PATH_INFO \$fastcgi_path_info;
}
}" > /etc/nginx/sites-available/wordpress
ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
# Получение сертификата Let's Encrypt
certbot --nginx -d $domain -m your-email@example.com --agree-tos --non-interactive --redirect
# Скачивание и распаковка WordPress
cd /var/www/$site_user/
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
mv wordpress/* wordpress/.htaccess /var/www/$site_user/wordpress/
chown -R $site_user:$site_user /var/www/$site_user/wordpress/
# Завершение установки
systemctl restart php8.0-fpm
systemctl restart nginx
echo "Установка WordPress завершена!"
модифицируй полученный выше скрипт таким образом, чтобы скрипты сайты выполнялись от имени пользователя которому они принадлежат
#!/bin/bash
# Установка необходимых пакетов
apt-get update
apt-get install nginx php-fpm mysql-server php-mysql certbot python3-certbot-nginx -y
# Создание системного пользователя и директории для сайта
read -p "Введите имя пользователя сайта: " site_user
mkdir /var/www/$site_user
useradd -d /var/www/$site_user -s /usr/sbin/nologin $site_user
chown -R $site_user:$site_user /var/www/$site_user
# Запрос имени пользователя базы данных, имени базы данных, пароля и домена сайта
read -p "Введите имя пользователя базы данных: " db_user
read -p "Введите имя базы данных: " db_name
read -p "Введите пароль для базы данных: " db_password
read -p "Введите домен вашего сайта: " domain
# Настройка PHP-FPM
sed -i 's/^listen = .*/listen = \/run\/php\/php8.0-fpm.sock/' /etc/php/8.0/fpm/pool.d/www.conf
sed -i 's/^;listen.owner = .*/listen.owner = www-data/' /etc/php/8.0/fpm/pool.d/www.conf
sed -i 's/^;listen.group = .*/listen.group = www-data/' /etc/php/8.0/fpm/pool.d/www.conf
sed -i 's/^;listen.mode = .*/listen.mode = 0660/' /etc/php/8.0/fpm/pool.d/www.conf
# Создание базы данных для WordPress
mysql -u root -p -e "CREATE DATABASE $db_name;"
mysql -u root -p -e "GRANT ALL PRIVILEGES ON $db_name.* TO '$db_user'@'localhost' IDENTIFIED BY '$db_password';"
mysql -u root -p -e "FLUSH PRIVILEGES;"
# Настройка Nginx
rm /etc/nginx/sites-enabled/default
touch /etc/nginx/sites-available/wordpress
echo "server {
listen 80;
server_name $domain;
return 301 https://\$server_name\$request_uri;
}
server {
listen 443 ssl;
server_name $domain;
ssl_certificate /etc/letsencrypt/live/$domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/$domain/privkey.pem;
root /var/www/$site_user/wordpress;
index index.php;
location / {
try_files \$uri \$uri/ /index.php?\$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
fastcgi_param PATH_INFO \$fastcgi_path_info;
}
}" > /etc/nginx/sites-available/wordpress
ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
# Получение сертификата Let's Encrypt
certbot --nginx -d $domain -m your-email@example.com --agree-tos --non-interactive --redirect
# Скачивание и распаковка WordPress
cd /var/www/$site_user/
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
mv wordpress/* wordpress/.htaccess /var/www/$site_user/wordpress/
chown -R $site_user:$site_user /var/www/$site_user/wordpress/
# Настройка прав доступа к файлам сайта
find /var/www/$site_user/wordpress/ -type d -exec chmod 755 {} \;
find /var/www/$site_user/wordpress/ -type f -exec chmod 644 {} \;
chown -R $site_user:$site_user /var/www/$site_user/wordpress/
# Завершение установки
systemctl restart php8.0-fpm
systemctl restart nginx
echo "Установка WordPress завершена!"
модифицируй полученный выше скрипт таким образом, чтобы php-fpm выполнялся от имени того пользователя который был создан
#!/bin/bash
# Установка необходимых пакетов
apt-get update
apt-get install nginx php-fpm mysql-server php-mysql certbot python3-certbot-nginx -y
# Создание системного пользователя и директории для сайта
read -p "Введите имя пользователя сайта: " site_user
mkdir /var/www/$site_user
useradd -d /var/www/$site_user -s /usr/sbin/nologin $site_user
chown -R $site_user:$site_user /var/www/$site_user
# Запрос имени пользователя базы данных, имени базы данных, пароля и домена сайта
read -p "Введите имя пользователя базы данных: " db_user
read -p "Введите имя базы данных: " db_name
read -p "Введите пароль для базы данных: " db_password
read -p "Введите домен вашего сайта: " domain
# Настройка PHP-FPM
sed -i 's/^user = www-data/user = '$site_user'/' /etc/php/8.0/fpm/pool.d/www.conf
sed -i 's/^group = www-data/group = '$site_user'/' /etc/php/8.0/fpm/pool.d/www.conf
sed -i 's/^listen = .*/listen = \/run\/php\/php8.0-fpm.sock/' /etc/php/8.0/fpm/pool.d/www.conf
sed -i 's/^;listen.owner = .*/listen.owner = '$site_user'/' /etc/php/8.0/fpm/pool.d/www.conf
sed -i 's/^;listen.group = .*/listen.group = '$site_user'/' /etc/php/8.0/fpm/pool.d/www.conf
sed -i 's/^;listen.mode = .*/listen.mode = 0660/' /etc/php/8.0/fpm/pool.d/www.conf
# Создание базы данных для WordPress
mysql -u root -p -e "CREATE DATABASE $db_name;"
mysql -u root -p -e "GRANT ALL PRIVILEGES ON $db_name.* TO '$db_user'@'localhost' IDENTIFIED BY '$db_password';"
mysql -u root -p -e "FLUSH PRIVILEGES;"
# Настройка Nginx
rm /etc/nginx/sites-enabled/default
touch /etc/nginx/sites-available/wordpress
echo "server {
listen 80;
server_name $domain;
return 301 https://\$server_name\$request_uri;
}
server {
listen 443 ssl;
server_name $domain;
ssl_certificate /etc/letsencrypt/live/$domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/$domain/privkey.pem;
root /var/www/$site_user/wordpress;
index index.php;
location / {
try_files \$uri \$uri/ /index.php?\$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
fastcgi_param PATH_INFO \$fastcgi_path_info;
}
}" > /etc/nginx/sites-available/wordpress
ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
# Получение сертификата Let's Encrypt
certbot --nginx -d $domain -m your-email@example.com --agree-tos --non-interactive --redirect
# Скачивание и распаковка WordPress
cd /var/www/$site_user/
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
mv wordpress/* wordpress/.htaccess /var/www/$site_user/wordpress/
chown -R $site_user:$site_user /var/www/$site_user/wordpress/
# Настройка прав доступа к файлам сайта
find /var/www/$site_user/wordpress/ -type d -exec chmod 755 {} \;
find /var/www/$site_user/wordpress/ -type f -exec chmod 644 {} \;
chown -R $site_user:$site_user /var/www/$site_user/wordpress/
# Завершение установки
systemctl restart php8.0-fpm
systemctl restart nginx
echo "Установка WordPress завершена!"
модифицируй полученный выше скрипт таким образом, чтобы создаваемый файл конфигурации php-fpm имел имя созданного пользователя
#!/bin/bash
# Установка необходимых пакетов
apt-get update
apt-get install nginx php-fpm mysql-server php-mysql certbot python3-certbot-nginx -y
# Создание системного пользователя и директории для сайта
read -p "Введите имя пользователя сайта: " site_user
mkdir /var/www/$site_user
useradd -d /var/www/$site_user -s /usr/sbin/nologin $site_user
chown -R $site_user:$site_user /var/www/$site_user
# Запрос имени пользователя базы данных, имени базы данных, пароля и домена сайта
read -p "Введите имя пользователя базы данных: " db_user
read -p "Введите имя базы данных: " db_name
read -p "Введите пароль для базы данных: " db_password
read -p "Введите домен вашего сайта: " domain
# Настройка PHP-FPM
sed -i 's/^user = www-data/user = '$site_user'/' /etc/php/8.0/fpm/pool.d/$site_user.conf
sed -i 's/^group = www-data/group = '$site_user'/' /etc/php/8.0/fpm/pool.d/$site_user.conf
sed -i 's/^listen = .*/listen = \/run\/php\/php8.0-fpm.sock/' /etc/php/8.0/fpm/pool.d/$site_user.conf
sed -i 's/^;listen.owner = .*/listen.owner = '$site_user'/' /etc/php/8.0/fpm/pool.d/$site_user.conf
sed -i 's/^;listen.group = .*/listen.group = '$site_user'/' /etc/php/8.0/fpm/pool.d/$site_user.conf
sed -i 's/^;listen.mode = .*/listen.mode = 0660/' /etc/php/8.0/fpm/pool.d/$site_user.conf
# Создание базы данных для WordPress
mysql -u root -p -e "CREATE DATABASE $db_name;"
mysql -u root -p -e "GRANT ALL PRIVILEGES ON $db_name.* TO '$db_user'@'localhost' IDENTIFIED BY '$db_password';"
mysql -u root -p -e "FLUSH PRIVILEGES;"
# Настройка Nginx
rm /etc/nginx/sites-enabled/default
touch /etc/nginx/sites-available/wordpress
echo "server {
listen 80;
server_name $domain;
return 301 https://\$server_name\$request_uri;
}
server {
listen 443 ssl;
server_name $domain;
ssl_certificate /etc/letsencrypt/live/$domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/$domain/privkey.pem;
root /var/www/$site_user/wordpress;
index index.php;
location / {
try_files \$uri \$uri/ /index.php?\$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
fastcgi_param PATH_INFO \$fastcgi_path_info;
}
}" > /etc/nginx/sites-available/wordpress
ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
# Получение сертификата Let's Encrypt
certbot --nginx -d $domain -m your-email@example.com --agree-tos --non-interactive --redirect
# Скачивание и распаковка WordPress
cd /var/www/$site_user/
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
mv wordpress/* wordpress/.htaccess /var/www/$site_user/wordpress/
chown -R $site_user:$site_user /var/www/$site_user/wordpress/
# Настройка прав доступа к файлам сайта
find /var/www/$site_user/wordpress/ -type d -exec chmod 755 {} \;
find /var/www/$site_user/wordpress/ -type f -exec chmod 644 {} \;
chown -R $site_user:$site_user /var/www/$site_user/wordpress/
# Завершение установки
systemctl restart php8.0-fpm
systemctl restart nginx
echo "Установка WordPress завершена!"
модифицируй полученный выше скрипт таким образом, чтобы использовать php версии не ниже 8.1
#!/bin/bash
# Установка необходимых пакетов
apt-get update
apt-get install nginx php8.1-fpm mysql-server php8.1-mysql certbot python3-certbot-nginx -y
# Создание системного пользователя и директории для сайта
read -p "Введите имя пользователя сайта: " site_user
mkdir /var/www/$site_user
useradd -d /var/www/$site_user -s /usr/sbin/nologin $site_user
chown -R $site_user:$site_user /var/www/$site_user
# Запрос имени пользователя базы данных, имени базы данных, пароля и домена сайта
read -p "Введите имя пользователя базы данных: " db_user
read -p "Введите имя базы данных: " db_name
read -p "Введите пароль для базы данных: " db_password
read -p "Введите домен вашего сайта: " domain
# Настройка PHP-FPM
sed -i 's/^user = www-data/user = '$site_user'/' /etc/php/8.1/fpm/pool.d/$site_user.conf
sed -i 's/^group = www-data/group = '$site_user'/' /etc/php/8.1/fpm/pool.d/$site_user.conf
sed -i 's/^listen = .*/listen = \/run\/php\/php8.1-fpm.sock/' /etc/php/8.1/fpm/pool.d/$site_user.conf
sed -i 's/^;listen.owner = .*/listen.owner = '$site_user'/' /etc/php/8.1/fpm/pool.d/$site_user.conf
sed -i 's/^;listen.group = .*/listen.group = '$site_user'/' /etc/php/8.1/fpm/pool.d/$site_user.conf
sed -i 's/^;listen.mode = .*/listen.mode = 0660/' /etc/php/8.1/fpm/pool.d/$site_user.conf
# Создание базы данных для WordPress
mysql -u root -p -e "CREATE DATABASE $db_name;"
mysql -u root -p -e "GRANT ALL PRIVILEGES ON $db_name.* TO '$db_user'@'localhost' IDENTIFIED BY '$db_password';"
mysql -u root -p -e "FLUSH PRIVILEGES;"
# Настройка Nginx
rm /etc/nginx/sites-enabled/default
touch /etc/nginx/sites-available/wordpress
echo "server {
listen 80;
server_name $domain;
return 301 https://\$server_name\$request_uri;
}
server {
listen 443 ssl;
server_name $domain;
ssl_certificate /etc/letsencrypt/live/$domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/$domain/privkey.pem;
root /var/www/$site_user/wordpress;
index index.php;
location / {
try_files \$uri \$uri/ /index.php?\$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
fastcgi_param PATH_INFO \$fastcgi_path_info;
}
}" > /etc/nginx/sites-available/wordpress
ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
# Получение сертификата Let's Encrypt
certbot --nginx -d $domain -m your-email@example.com --agree-tos --non-interactive --redirect
# Скачивание и распаковка WordPress
cd /var/www/$site_user/
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
mv wordpress/* wordpress/.htaccess /var/www/$site_user/wordpress/
chown -R $site_user:$site_user /var/www/$site_user/wordpress/
# Настройка прав доступа к файлам сайта
find /var/www/$site_user/wordpress/ -type d -exec chmod 755 {} \;
find /var/www/$site_user/wordpress/ -type f -exec chmod 644 {} \;
chown -R $site_user:$site_user /var/www/$site_user/wordpress/
# Завершение установки
systemctl restart php8.1-fpm
systemctl restart nginx
echo "Установка WordPress завершена!"
модифицируй полученный выше скрипт таким образом, чтобы была выполнена установка необходимых для работы wordpress модулей php
#!/bin/bash
# Установка необходимых пакетов
apt-get update
apt-get install nginx php8.1-fpm mysql-server php8.1-mysql certbot python3-certbot-nginx php8.1-curl php8.1-gd php8.1-mbstring php8.1-xml php8.1-xmlrpc php8.1-intl php8.1-zip -y
# Создание системного пользователя и директории для сайта
read -p "Введите имя пользователя сайта: " site_user
mkdir /var/www/$site_user
useradd -d /var/www/$site_user -s /usr/sbin/nologin $site_user
chown -R $site_user:$site_user /var/www/$site_user
# Запрос имени пользователя базы данных, имени базы данных, пароля и домена сайта
read -p "Введите имя пользователя базы данных: " db_user
read -p "Введите имя базы данных: " db_name
read -p "Введите пароль для базы данных: " db_password
read -p "Введите домен вашего сайта: " domain
# Настройка PHP-FPM
sed -i 's/^user = www-data/user = '$site_user'/' /etc/php/8.1/fpm/pool.d/$site_user.conf
sed -i 's/^group = www-data/group = '$site_user'/' /etc/php/8.1/fpm/pool.d/$site_user.conf
sed -i 's/^listen = .*/listen = \/run\/php\/php8.1-fpm.sock/' /etc/php/8.1/fpm/pool.d/$site_user.conf
sed -i 's/^;listen.owner = .*/listen.owner = '$site_user'/' /etc/php/8.1/fpm/pool.d/$site_user.conf
sed -i 's/^;listen.group = .*/listen.group = '$site_user'/' /etc/php/8.1/fpm/pool.d/$site_user.conf
sed -i 's/^;listen.mode = .*/listen.mode = 0660/' /etc/php/8.1/fpm/pool.d/$site_user.conf
# Создание базы данных для WordPress
mysql -u root -p -e "CREATE DATABASE $db_name;"
mysql -u root -p -e "GRANT ALL PRIVILEGES ON $db_name.* TO '$db_user'@'localhost' IDENTIFIED BY '$db_password';"
mysql -u root -p -e "FLUSH PRIVILEGES;"
# Настройка Nginx
rm /etc/nginx/sites-enabled/default
touch /etc/nginx/sites-available/wordpress
echo "server {
listen 80;
server_name $domain;
return 301 https://\$server_name\$request_uri;
}
server {
listen 443 ssl;
server_name $domain;
ssl_certificate /etc/letsencrypt/live/$domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/$domain/privkey.pem;
root /var/www/$site_user/wordpress;
index index.php;
location / {
try_files \$uri \$uri/ /index.php?\$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
fastcgi_param PATH_INFO \$fastcgi_path_info;
}
}" > /etc/nginx/sites-available/wordpress
ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
# Получение сертификата Let's Encrypt
certbot --nginx -d $domain -m your-email@example.com --agree-tos --non-interactive --redirect
# Скачивание и распаковка WordPress
cd /var/www/$site_user/
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
mv wordpress/* wordpress/.htaccess /var/www/$site_user/wordpress/
chown -R $site_user:$site_user /var/www/$site_user/wordpress/
# Настройка прав доступа к файлам сайта
find /var/www/$site_user/wordpress/ -type d -exec chmod 755 {} \;
find /var/www/$site_user/wordpress/ -type f -exec chmod 644 {} \;
chown -R $site_user:$site_user /var/www/$site_user/wordpress/
# Завершение установки
systemctl restart php8.1-fpm
systemctl restart nginx
echo "Установка WordPress завершена!"
модифицируй полученный выше скрипт таким образом, чтобы перед изменением конфигурации php-fpm, файл конфигурации копировался из стандартного файла конфигурации в ту же директорию с именем созданного пользователя
#!/bin/bash
# Установка необходимых пакетов
apt-get update
apt-get install nginx php8.1-fpm mysql-server php8.1-mysql certbot python3-certbot-nginx php8.1-curl php8.1-gd php8.1-mbstring php8.1-xml php8.1-xmlrpc php8.1-intl php8.1-zip -y
# Создание системного пользователя и директории для сайта
read -p "Введите имя пользователя сайта: " site_user
mkdir /var/www/$site_user
useradd -d /var/www/$site_user -s /usr/sbin/nologin $site_user
chown -R $site_user:$site_user /var/www/$site_user
# Запрос имени пользователя базы данных, имени базы данных, пароля и домена сайта
read -p "Введите имя пользователя базы данных: " db_user
read -p "Введите имя базы данных: " db_name
read -p "Введите пароль для базы данных: " db_password
read -p "Введите домен вашего сайта: " domain
# Копирование конфигурационного файла PHP-FPM для нового пользователя
cp /etc/php/8.1/fpm/pool.d/www.conf /etc/php/8.1/fpm/pool.d/$site_user.conf
# Настройка PHP-FPM
sed -i 's/^user = www-data/user = '$site_user'/' /etc/php/8.1/fpm/pool.d/$site_user.conf
sed -i 's/^group = www-data/group = '$site_user'/' /etc/php/8.1/fpm/pool.d/$site_user.conf
sed -i 's/^listen = .*/listen = \/run\/php\/php8.1-fpm.sock/' /etc/php/8.1/fpm/pool.d/$site_user.conf
sed -i 's/^;listen.owner = .*/listen.owner = '$site_user'/' /etc/php/8.1/fpm/pool.d/$site_user.conf
sed -i 's/^;listen.group = .*/listen.group = '$site_user'/' /etc/php/8.1/fpm/pool.d/$site_user.conf
sed -i 's/^;listen.mode = .*/listen.mode = 0660/' /etc/php/8.1/fpm/pool.d/$site_user.conf
# Создание базы данных для WordPress
mysql -u root -p -e "CREATE DATABASE $db_name;"
mysql -u root -p -e "GRANT ALL PRIVILEGES ON $db_name.* TO '$db_user'@'localhost' IDENTIFIED BY '$db_password';"
mysql -u root -p -e "FLUSH PRIVILEGES;"
# Настройка Nginx
rm /etc/nginx/sites-enabled/default
touch /etc/nginx/sites-available/wordpress
echo "server {
listen 80;
server_name $domain;
return 301 https://\$server_name\$request_uri;
}
server {
listen 443 ssl;
server_name $domain;
ssl_certificate /etc/letsencrypt/live/$domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/$domain/privkey.pem;
root /var/www/$site_user/wordpress;
index index.php;
location / {
try_files \$uri \$uri/ /index.php?\$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
fastcgi_param PATH_INFO \$fastcgi_path_info;
}
}" > /etc/nginx/sites-available/wordpress
ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
# Получение сертификата Let's Encrypt
certbot --nginx -d $domain -m your-email@example.com --agree-tos --non-interactive --redirect
# Скачивание и распаковка WordPress
cd /var/www/$site_user/
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
mv wordpress/* wordpress/.htaccess /var/www/$site_user/wordpress/
chown -R $site_user:$site_user /var/www/$site_user/wordpress/
# Настройка прав доступа к файлам сайта
find /var/www/$site_user/wordpress/ -type d -exec chmod 755 {} \;
find /var/www/$site_user/wordpress/ -type f -exec chmod 644 {} \;
chown -R $site_user:$site_user /var/www/$site_user/wordpress/
# Завершение установки
systemctl restart php8.1-fpm
systemctl restart nginx
echo "Установка WordPress завершена!"