В крайней 6 версии isp панели разработчики учинили конкретный дебилизмус, распределив fpm сокеты под каждый сайт и обозвав их тупо цифрами. Ранее это был один сокет на каждого пользователя и носил имя пользователя. Теперь сокет на каждай сайт, так: fastcgi_pass unix:/var/www/php-fpm/18.sock;
И вот решили вы переехать, импортируете в новую панельку 100-200 сайтов. Создался пул php-fpm конфигов и пул nginx конфигов. Циферки сокетов, естественно соответствовать должны для каждого сайта. Только вот nginx конфиги не импортировались, а создались по умолчанию полупустые. А в старых nginx конфигах циферки другие! Либо там вообще имя пользователя, а не циферка, если это старая версия isp. Приятно теперь поправить каждый конфиг? А если сетку 1000 сайтов переносим? Дебилы, блядь!
Перед процедурой, не забываем забекапить /etc/nginx на всякий, чтобы не обосраться если что.
tar -cvzf etc_nginx_`date '+%Y-%m-%d-%H-%M-%S'`.tar.gz /etc/nginx
На новом сервере сохраняем все сокеты из вновь созданных nginx конфигов в файлик себе:
grep -rn 'fastcgi_pass' /etc/nginx/vhosts > sockets.txt
Разворачиваем необходимый пул сайтов в nginx конфиги нового сервера, прямо в том виде, в котором он был на старом сервере. Архивом или насрать как.
Патчим все сокеты на новые:
IFS=$'\n';for str in $(cat sockets.txt) ; do file=$(echo $str | cut -d':' -f1); sock=$(echo $str | awk '{print $2 " " $3}' | sed 's/\//\\\//g'); sed -i "s/fastcgi_pass.*sock;/$sock/" $file; done
Теперь циферки соответствуют конфигам php-fpm. Тяжело баранам это было встроить?
Убедимся, что не обосрались:
nginx -t
Патчим IP в конфигах на новый:
IFS=$'\n';for str in $(cat sockets.txt) ; do file=$(echo $str | cut -d':' -f1); sed -i "s/OLD_IP_SERVER/NEW_IP_SERVER/g" $file; done
Сложно баранам вот это было сделать?
Если не обосрались, перезагружаем конфиги
nginx -t nginx -s reload
Если сайты нагруженные, поправим нужное кол-во дочерних процессов php-fpm ещё
for file in /etc/php/7.3/fpm/pool.d/pool.d/* ; do sed -i 's/pm.max_children = 5/pm.max_children = 15/' $file ; done
И перезапустим сервис:
systemctl restart php7.3-fpm.service
И идем менять записи днс со своим списком:
cat sockets.txt | cut -d'/' -f6 | cut -d':' -f1 | sed 's/.conf//' > domains.txt
Если пул за клоудом, поздравляю, дрочиться долго — там нет массовой замены ip, можно написать скрипт по их api для этой цели, но это ещё дольше.