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

orka13

Client
Регистрация
07.05.2015
Сообщения
2 178
Благодарностей
2 186
Баллы
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 [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] для всех ниже описанных файлов строку:
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К. Ну логику надеюсь поняли.
 

Для запуска проектов требуется программа ZennoPoster.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

Для того чтобы запустить шаблон, откройте программу ZennoPoster. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.

Последнее редактирование:

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
Неудобно в консоли работать.
Работаю через программу winscp.net и обычный блокнот Sublime Text и удачно все сохраняется.
От рута заходить надо.
 

Вложения

  • Спасибо
Реакции: orka13

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 988
Благодарностей
4 445
Баллы
113
Под wp сайты были ещё инструкции, если кому надо завтра скину ссылку.
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 178
Благодарностей
2 186
Баллы
113
Неудобно в консоли работать.
Работаю через программу winscp.net и обычный блокнот Sublime Text и удачно все сохраняется.
От рута заходить надо.
Это уже каждый себе выбирает как лучше. плюс работы черерез консоль что потом легче команды портировать в шаблон на зенке и автоматизировать все: гуглим, находим пример с рабочим шабом.
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 075
Благодарностей
6 488
Баллы
113
теперь осталось весь мануал в шаблон перенести :D

спасибо, полезная инфа, пошел тестить ))
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
745
Баллы
113
Это уже каждый себе выбирает как лучше. плюс работы черерез консоль что потом легче команды портировать в шаблон на зенке и автоматизировать все: гуглим, находим пример с рабочим шабом.
У меня не стояло такой задачи, все делать постером, у меня пару сайтов и один сервер. Задача была, сайт кешировать и выжать с сервера все что можно. В итоге на ovh.ie за 9 евро 120к трафа держал, через раз падал, перешел на другой тариф за 30 евро 150к свободно держит, а больше у меня и не было. Там все в ручную по мануалам в интернете.
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 178
Благодарностей
2 186
Баллы
113
Ну как видишь проблемы весты в том что она даже с нулевым трафиком не может поднять много сайтов по умолчанию. По этому мануалу у меня получалось поднимать планку в 3 раза на VPS за 5 €:
“Vesta + nginx + httpd (апач)” = 6500 доменов
“Vesta + nginx + php-fpm + правки” = 20500 доменов
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 075
Благодарностей
6 488
Баллы
113
странно последние 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 \ выкачал на локалку и там их отредактировал
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 178
Благодарностей
2 186
Баллы
113
странно последние 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", тогда советую переустановить ОС и накатить именно такую как в мануале.
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 075
Благодарностей
6 488
Баллы
113

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113
1) На Centos 7 для начала надо вырубить selinux. На юбунту нет с этим плясок.
2) У @backoff статика - ему php-fpm не нужен
3) сам по себе nginx может очень много отдавать статики даже на плохиньком впс. Порядка 4000 запросов в секунду легко.
4) Честно говоря не понял с чем затык добавления доменов. Не знаком с Vesto й - она их биндит ? В смысле днс поднимает на своем хосте ?
5) надо настроивать блокировку плохих ботов. Потому как роботы мегаиндекса или там маджестика - завалят любой хороший сервак.
 

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113
Если ДНС идут от регистратора. Проще всего сделать так - поднял 6 centos 32 битную. Проверил не встал ли на ней selinux, вырубить если встал. Или ubuntu. Далее поставил бы nginx и настроил на один домен. Все работает, по шаблону заводим все остальные. Ну лимиты файлов конечно лучше расширить, в инструкции выше есть про это.
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 075
Благодарностей
6 488
Баллы
113
Ну чего ты пристал )
Он же написал что не админ.
Знаний у меня мало в администрировании, это просто делюсь удачным вариантом, который десятки раз использовал для быстрой настройки серверов

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

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

2) У @backoff статика - ему php-fpm не нужен
php использую, для лайтовых инклюдов, типа метрику на все страницы приджонить
 
  • Спасибо
Реакции: orka13

uuw

Client
Регистрация
04.06.2020
Сообщения
145
Благодарностей
54
Баллы
28

uuw

Client
Регистрация
04.06.2020
Сообщения
145
Благодарностей
54
Баллы
28
5) надо настроивать блокировку плохих ботов. Потому как роботы мегаиндекса или там маджестика - завалят любой хороший сервак.
мегаважно, всякие байду и т.д. туда же, гуглобот если через раз будет достукиваться, то и ходить будет реже чем через раз
через .htacces как сделать в гугле вагон примеров
если без апача - https://winginx.com/ru/htaccess
upd:
ahrefs самый мерзкий по моим наблюдениям, его в первую очередь блочить
 
Последнее редактирование:

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