Скрипт сетапа вебхостинга
Итак, скрипт нашел неожиданно положительный отклик у сообщества, видимо, инструкции по тонкой настройке - быть.
Дисклеймер: скрипт полностью рабочий, конфиги - выстраданы годами и провПерены сотнями впс и дедиков. Автор сам ежедневно пользуется ими. Но много зависит от вашего хостера, его конфигов и прочих внешних, не зависящих факторов. Пожалуйста, проверяйте работоспособность перед запуском в продакшн!
Информация
Что делает.
Полностью автоматически настривает с 0 впс или дедик для работы веб-сервера.
Ставит:
NginxPHP-FPM версий 7.4 и 8.2 (переключается в конфиге)MariaDB
В чем польза.
- заливает универсальный конфиг, который дает прекрасные возможности для автоматизации (об это ниже)- ваш сервер невозможно взломать через дыры в панели управления, если у вас нет панели управления- не засоряет систему, не тянет ненужных пакетов и прочего мусора в систему- дает возможность тонкой настройки всего и вся. в том числе, очень хитрых пробросов и редиректов внутри сервера
Что за универсальный конфиг?
Это конфиг веб-сервера, который АВТОМАТИЧЕСКИ определит на какой домен пришел запрос и перенаправит его в нужную директорию. Вам нужно лишь создать папку в /var/www/ с названием домена (например /var/www/google.com), залить туда файлы и оно автоматически заработает! Без каких-либо дополнительных манипуляций и кликов.
Базовое использование.
ВАЖНО! Скрипт 100% корректно работает на Rocky 9, с вероятностью 99,99% корректно сработает на Centos 9. Нежелательно, но допускается использование Rocky 8 или Centos 8.
ТОЛЬКО ЧИСТЫЙ СЕРВЕР! НИКАКИХ LAMPов и прочих сборок. ТОЛЬКО ГОЛАЯ ОС! Требуйте чистую ОС у своего хостера!
curl -s https://repo.privateflare.com/webhostscript/webhostscript.bash | bash...и через пару минут ваш сервер будет готов. Можете заходить по SFTP с помощью FileZilla, WinSCP, Transmit и заливать свой лендинги, сайты и прочее.
Проверить работоспособность можете привязав любой домен на ип сервера и перейти открыть его. Предварительно создайте информационный файл:
echo "<? phpinfo();" > /var/www/noroot/index.phpНе забудьте его удалить после проверки!
rm -f /var/www/noroot/index.phpРасширенное использование.
Все манипуляции производятся по SFTP с помощью FileZilla (win), WinSCP (win, рекомендуется), Transmit (macOS).
Использование индивидуальных конфигов для доменов
Может пригодиться когда вы хотите разместить на вашем сервере с обычными вайтами, лендингами или другими простыми сайтами, например, блог на WordPress.
В таком случае, первым делом редактируем основной конфиг Nginx. Он расположен в дирreктории /etc/nginx. И редактируем его:
Было
Добавляем строку include conf.d/*.conf; . Стало
И перезагружаем конфиг через консоль:
nginx -t && nginx -s reloadДалее, из болванки копируем нужный конфиг. Копируем из host_nossl.conf_ (в данном примере используем конфиг без SSL сертификатов и https) в google.com.conf.
Открываем новый файл google.com.conf и первым делом меняем массовой заменой VHOST на наш домен (google.com). Далее, меняем по своему вкусу. Например, для WordPress он будет выглядеть вот так:
server {
listen 80;
server_name google.com; <-- изменили
#access_log off;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log main;
root /var/www/google.com; <-- изменили
index index.php index.html;
location ~ /.well-known {
root /var/www/noroot;
}
location / {
try_files $uri $uri/ /index.php?$args; <-- изменили
}
location ~ \.php$ {
index index.php;
include php82.conf; <-- изменили
}
}Сохраняем и перезагружаем конфиги:
nginx -t && nginx -s reloadУже сейчас ваш блог должен заработать.
Использование SSL (TLS) сертификатов
Это может быть полезно, если вы хотите использовать хостинг напрямую, без PrivateFlare или Cloudflare.
Генерируем сертификат.
ВАЖНО! LetsEncrypt иногда не с первого раза делает сертификаты в силу тех работ, не полного обновления NS записей или других причин. Мы не имеем отношения к организации и не можем повлиять на работоспособность. В случае неполадок - проверьте A записи по попробуйте позже.
# в этом примере google.com - ваш домен, замените его на свой
# user@gmail.com - ваша почта, так же, замените на свою
certbot certonly -d google.com -n --email user@gmail.com --agree-tos --webroot -w /var/www/norootЕсли сертификат успешно сгенерировался, вы увидите примерно такое сообщение:
Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/api.param.me/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/api.param.me/privkey.pem
Your cert will expire on 2019-06-27. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"Далее, делаем все то же самое, но используем шаблон host_nossl.conf_. Итоговый конфиг будет выглядеть так:
server {
listen 80;
server_name google.com; <-- изменили
#access_log off;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log main;
location ~ /.well-known {
root /var/www/noroot;
}
location / {
# try_files $uri $uri/ /index.php?$args;
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl
http2 on;
server_name google.com; <-- изменили
client_max_body_size 32m;
root /var/www/google.com;
index index.php index.html;
ssl_certificate /etc/letsencrypt/live/google.com/fullchain.pem; <-- изменили
ssl_certificate_key /etc/letsencrypt/live/google.com/privkey.pem; <-- изменили
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_stapling on;
ssl_stapling_verify on;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log main;
location / {
try_files $uri $uri/ /index.php?$args; <-- изменили
}
location ~ \.php$ {
index index.php;
include php82.conf;
}
}Создаем крон задачу для обновления сертификатов.Moved
Пишем в консоль команду
export EDITOR=nano && crontab -eи вписываем туда строку:
0 0 1 * * /usr/bin/certbot renew --post-hook "systemctl reload nginx" > /var/log/renewals.logнажимаем Control+x, соглашаемся с сохранением нажатием кнопки y и задача создана.
На этом, собственно, все. Это несложно и каждый может сделать такое для себя, чтобы спать спокойно!

