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

orka13

Client
Регистрация
07.05.2015
Сообщения
2 190
Реакции
2 209
Баллы
113
install-and-configure-vesta-control-panel-on-your-virtual-private-server.png


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

В мануале замените «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 Mail_Smeni@gmail.com --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] для всех ниже описанных файлов строку:
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К. Ну логику надеюсь поняли.
 
Последнее редактирование:
Неудобно в консоли работать.
Работаю через программу winscp.net и обычный блокнот Sublime Text и удачно все сохраняется.
От рута заходить надо.
 

Вложения

  • 1604002581958.png
    1604002581958.png
    98,4 KB · Просмотры: 334
  • Спасибо
Реакции: orka13
Неудобно в консоли работать.
Работаю через программу winscp.net и обычный блокнот Sublime Text и удачно все сохраняется.
От рута заходить надо.
Это уже каждый себе выбирает как лучше. плюс работы черерез консоль что потом легче команды портировать в шаблон на зенке и автоматизировать все: гуглим, находим пример с рабочим шабом.
 
Это уже каждый себе выбирает как лучше. плюс работы черерез консоль что потом легче команды портировать в шаблон на зенке и автоматизировать все: гуглим, находим пример с рабочим шабом.
У меня не стояло такой задачи, все делать постером, у меня пару сайтов и один сервер. Задача была, сайт кешировать и выжать с сервера все что можно. В итоге на ovh.ie за 9 евро 120к трафа держал, через раз падал, перешел на другой тариф за 30 евро 150к свободно держит, а больше у меня и не было. Там все в ручную по мануалам в интернете.
 
Ну как видишь проблемы весты в том что она даже с нулевым трафиком не может поднять много сайтов по умолчанию. По этому мануалу у меня получалось поднимать планку в 3 раза на VPS за 5 €:
“Vesta + nginx + httpd (апач)” = 6500 доменов
“Vesta + nginx + php-fpm + правки” = 20500 доменов
 
странно последние 2 команды не сработали

cp /dev/null /usr/local/vesta/bin/v-restart-web - good
cp /dev/null /usr/local/vesta/bin/v-restart-proxy - bad
cp /dev/null /usr/local/vesta/bin/v-restart-web-backend - bad

при вводе команды задает вопрос, если ставить Y ничего не происходит, если нажать еще раз enter то чистит

ps \ выкачал на локалку и там их отредактировал
 
странно последние 2 команды не сработали

cp /dev/null /usr/local/vesta/bin/v-restart-web - good
cp /dev/null /usr/local/vesta/bin/v-restart-proxy - bad
cp /dev/null /usr/local/vesta/bin/v-restart-web-backend - bad

при вводе команды задает вопрос, если ставить Y ничего не происходит, если нажать еще раз enter то чистит

ps \ выкачал на локалку и там их отредактировал
Так может у тебя сборка не "nginx + php-fpm", тогда советую переустановить ОС и накатить именно такую как в мануале.
 
1) На Centos 7 для начала надо вырубить selinux. На юбунту нет с этим плясок.
2) У @backoff статика - ему php-fpm не нужен
3) сам по себе nginx может очень много отдавать статики даже на плохиньком впс. Порядка 4000 запросов в секунду легко.
4) Честно говоря не понял с чем затык добавления доменов. Не знаком с Vesto й - она их биндит ? В смысле днс поднимает на своем хосте ?
5) надо настроивать блокировку плохих ботов. Потому как роботы мегаиндекса или там маджестика - завалят любой хороший сервак.
 
Если ДНС идут от регистратора. Проще всего сделать так - поднял 6 centos 32 битную. Проверил не встал ли на ней selinux, вырубить если встал. Или ubuntu. Далее поставил бы nginx и настроил на один домен. Все работает, по шаблону заводим все остальные. Ну лимиты файлов конечно лучше расширить, в инструкции выше есть про это.
 
Ну чего ты пристал )
Он же написал что не админ.
Знаний у меня мало в администрировании, это просто делюсь удачным вариантом, который десятки раз использовал для быстрой настройки серверов


и кстати способ отличный, 2 дня бился над решением задачи, вот этот способ помог.
короче говоря делал все по мануалу, переделал немного шаб авто добавлялки доменов по api, оставил только сам пост запрос )
Короче говоря домен добавляется теперь 1 сек - 1 домен
в общем все работает как надо

единственное жалко нет апача 301 редиректы как делать?

2) У @backoff статика - ему php-fpm не нужен
php использую, для лайтовых инклюдов, типа метрику на все страницы приджонить
 
  • Спасибо
Реакции: orka13
5) надо настроивать блокировку плохих ботов. Потому как роботы мегаиндекса или там маджестика - завалят любой хороший сервак.
мегаважно, всякие байду и т.д. туда же, гуглобот если через раз будет достукиваться, то и ходить будет реже чем через раз
через .htacces как сделать в гугле вагон примеров
если без апача - https://winginx.com/ru/htaccess
upd:
ahrefs самый мерзкий по моим наблюдениям, его в первую очередь блочить
 
Последнее редактирование:

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)