Установка VestaCP (CentOS7 + nginx + php-fpm) под доры (максимум сайтов)

Вот небольшой мануал, а то часто спрашивают, как поднять весту новичку под редиректы доры и т.д. Знаний у меня мало в администрировании, это просто делюсь удачным вариантом, который десятки раз использовал для быстрой настройки серверов. Возможно какая-то часть информации уже устарела и неактуальна, или есть решение получше.

В мануале замените «111.111.111.111» на свой IP сервера, и «luboeimiya» на желаемое имя сервера.
И обратите внимание что не все ниженаписанное надо без мозгов вставлять в консоль:

Clip2net_201029220739.png

1. Сначала вам нужен сервер. Сойдет любой дешевый VPS, но с чистой CentOS7 без предустановленных панелей, веб-сервисов и прочей лабуды. То есть ни в коем случае не выбирайте ОС с уже установленной сборкой VestaCP, а то она там обычно перенастроена на вкус админов хостинга, что не всегда хорошо.
Я ради экономии обычно беру у разных европейских компаний дешевые VPS (~ в 2 раза дешевле чем такие же с ру-говорящим сервисом). Но в поддержку никогда не обращаюсь, все настраиваю самостоятельно с помощью гугла. Может не всегда по феншую, но в итоге работает. Например, вот такой сервер за 4.99 €
https://contabo.com/?show=configurator&vserver_id=221 . Либо ищите подходящие на poiskvps.
2. Подготовим слегка почву, хотя иногда эти проги могут уже стоять:
Установим типа тоталкокмандера для SSH:

Bash:
yum install mc

Установим текстовый редактор nano:

Bash:
yum install nano

По этому редактуру клавиши управления гуглите. Подскажу самые популярные: сохранить изменения и закрыть редактор: “Ctrl+X, Y, Enter”, удалить строку: «F9», удалить все ниже курсора «Alt+T».
Пропишем типа имя для виртуального сервера:

Bash:
hostnamectl set-hostname luboeimiya

И в конец файла добавляем строку через nano:

Bash:
nano /etc/sysconfig/network
sysctl kernel.hostname=luboeimiya

3. Скачиваем файлы установки панели:

Bash:
curl -O http://vestacp.com/pub/vst-install.sh

Идете на сайт конструктора и формируете команду установки: https://vestacp.com/install/
Вот мой пример под доры на статике без БД и апача (nginx + php-fpm):

Bash:
bash vst-install.sh --nginx yes --phpfpm yes --apache no --named no --remi yes --vsftpd yes --proftpd no --iptables yes --fail2ban yes --quota no --exim no --dovecot no --spamassassin no --clamav no --softaculous no --mysql no --postgresql no --hostname luboeimiya.ru --email [email protected] --password Password_Smeni

luboeimiya.ru – это «первый сайт» который панель создает сама при установке. У меня он обычно вымышленный несуществующий. Не удаляйте его потом, так как на его каталог будут ссылаться все сайты которые по А-записям прикреплены к вашему IP, но не добавлены в панель еще. А это даст возможность «заглушку» настроить, или даже редирект общий для всех сайтов без добавления их в панель.
4. Удалить index.html и robot.txt для шаблона по умолчанию, тогда сайты будет без них создавать. Это удобно, а то потом при заливке доров не всегда хочет заменять их корректно.

Bash:
rm -rf /usr/local/vesta/data/templates/web/skel/public_html/*

Если у вас распаковка доров по PHP не успевает нормально пройти, то зайти в etc и увеличить память\время исполнения пхп, таймауты:

Bash:
cd /etc
Bash:
find . -type f -name 'php.ini' -exec sed -i -r 's/memory_limit = 128M/memory_limit = 1613M/g' {} \;
find . -type f -name 'php.ini' -exec sed -i -r 's/max_execution_time = 30/max_execution_time = 313/g' {} \;
cd /etc/nginx/
find . -type f -name 'nginx.conf' -exec sed -i -r 's/proxy_connect_timeout   90;/proxy_connect_timeout   290;/g' {} \; && find . -type f -name 'nginx.conf' -exec sed -i -r 's/proxy_send_timeout  90;/proxy_send_timeout  290;/g' {} \; && find . -type f -name 'nginx.conf' -exec sed -i -r 's/proxy_read_timeout  90;/proxy_read_timeout  290;/g' {} \;

5. Сменить язык, лимиты пакета в веста по этим урлам:

6. Отключить в кроне ( https://111.111.111.111:8083/list/cron/ )ежедневное обновление статистике занимаемого места на диске (оно жрет RAM). Строку ниже НЕ в консоли вводить а на странице просто найти и заблокировать:

sudo /usr/local/vesta/bin/v-update-sys-queue disk

7. Отключить стандартную страницу приветствия пустого сайта (код ниже закомментирует все строки в файле welcome.conf):

Bash:
find /etc/httpd/conf.d/ -type f -name 'welcome.conf' -exec sed -i -r 's/^/#/g' {} \;

8. увеличить лимиты ( https://skurudo.ru/all/nginx-too-many-open-files/ ):

Bash:
nano /etc/systemd/system/php-fpm.service.d/limits.conf

Вставить в него:

[Service]
LimitNOFILE=500000

9. Логи отключить полностью:

Bash:
find /usr/local/vesta/data/templates/web/httpd/ \( -name "default.tpl" -o -name "default.stpl" \) -exec sed -i -r 's/( *CustomLog| *ErrorLog)/#\1/g' {} \;
find /usr/local/vesta/data/templates/web/nginx/ \( -name "default.tpl" -o -name "default.stpl" \) -exec sed -i -r 's/( *access_log| *error_log)/#\1/g' {} \;
find /home/admin/conf/web \( -name "httpd.conf" -o -name "nginx.conf" \) -exec sed -i -r 's/( *access_log| *error_log| *CustomLog| *ErrorLog)/#\1/g' {} \;

10. Увеличим таймаут ожидания успешного запуска служб, именно он растет при увеличении количества доменов:
https://unix.stackexchange.com/questions/227017/how-to-change-systemd-service-timeout-value )
добавляем в конец раздела [Service] для всех ниже описанных файлов строку:

TimeoutStartSec=1200
Bash:
nano /usr/lib/systemd/system/httpd.service
Bash:
nano /usr/lib/systemd/system/nginx.service
Bash:
nano /usr/lib/systemd/system/php-fpm.service

после чего либо ребут сервака либо строку ниже и ребут служб:

Bash:
systemctl daemon-reload

проверяем командой ( https://server-gu.ru/systemd-scripts/ ):

Bash:
systemctl -a show httpd.service | grep -i timeout
Bash:
systemctl -a show nginx.service | grep -i timeout

В итоге если у вас тысячи доменов то Vesta очень долго запускает веб-службы после старта сервака. И по умолчанию там обычно в ошибку все вываливается. Но мы указываем серверу подождать 20 минут прежде чем проверять все ли запустилось. В итоге этого хватает для весты чтобы все поднять.
11. Если надо отключить автоперегрузку сервисов при удалении\добавлении доменов:
https://forum.vestacp.com/viewtopic.php?f=36&t=17754&p=73834 )
Вот команды чтобы очистить эти три файла (обязательно “Y” ввести когда переспросит):

Bash:
cp /dev/null /usr/local/vesta/bin/v-restart-web
Bash:
cp /dev/null /usr/local/vesta/bin/v-restart-proxy
Bash:
cp /dev/null /usr/local/vesta/bin/v-restart-web-backend

В итоге если я покупаю новый VPS и не знаю сколько реально он выдержит, то делаю все по мануалу, а потом по API добавляю (вот шаблон открытый) 1 реальный домен и 5К левых вымышленных доменов. Перегружаю сервер, жду 20 минут и проверяю работает ли реальный домен. Если да, то добавляю еще 5К, и так по кругу пока веб-сервер не сдохнет (не запустится реальный домен даже после 20 минут). Тогда удаляю левые домены и добавляю уже реальные где то на 90% от найденного максимума. Если у вас очень слабый сервер, то вместо 5К добавляйте по 1К. Ну логику надеюсь поняли.

 

Источник https://zennolab.com/discussion/threads/ustanovka-vestacp-centos7-nginx-php-fpm-pod-dory-maksimum-sajtov.84906/