Как запилить более 10 сайтов на бесплатной версии ISP Manager
Задача: есть VDS, установлен бесплатный ispmanager, нужно разместить 11й сайт (12й, 13й и т. д., насколько хватит дискового пространства), денег нет.
Решение
Любая ошибка в алгоритме может привести к тому, что слетят все ваши настройки, и придётся восстанавливать диск из бэкапа. Перед всеми подобными манипуляциями рекомендую сделать копии соответствующих папок, хотя это вам не поможет.
/etc/bind/named.conf. Копируем последнюю запись, изменяя имя домена. Должен добавиться примерно такой кусок:
zone "my.digital-hosting.biz" { type master; file "/etc/bind/domains/my.digital-hosting.biz"; };
/etc/bind/domains В этой папке добавляем файл аналогично соседним. В моём случае это файл с именем my.digital-hosting.biz такого содержания:
$TTL 3600 my.digital-hosting.biz. IN SOA @@@@@@@@.fvds.ru. root.@@@@@@@@.fvds.ru. (2022110700 10800 3600 604800 86400) my.digital-hosting.biz. IN NS ns1.firstvds.ru. my.digital-hosting.biz. IN NS ns2.firstvds.ru. my.digital-hosting.biz. IN TXT "v=spf1 ip4:86.110.212.97 a mx ~all" my.digital-hosting.biz. IN MX 10 mail my.digital-hosting.biz. IN MX 20 mail my.digital-hosting.biz. IN A 86.110.212.97 www IN A 86.110.212.97 ftp IN A 86.110.212.97 mail IN A 86.110.212.97 smtp IN A 86.110.212.97 pop IN A 86.110.212.97
/etc/nginx/vhosts/www-root Копируем файлик с конфигурацией, переименовываем и изменяем там параметры. В моем случае my.digital-hosting.biz.conf. Здесь особенно важны строки 43-44, в которых прописаны пути к сертификатам. Эти файлы при перезапуске служб должны реально физически существовать. /var/www/www-root/data/my.digital-hosting.biz — это путь к папке, где валяются файлы сайта, куда нужно загрузить хотя-бы index.html (лучше, чтобы название отличалась от имени домена).
server { server_name my.digital-hosting.biz www.my.digital-hosting.biz; charset off; index index.php index.html; disable_symlinks if_not_owner from=$root_path; include /etc/nginx/vhosts-includes/*.conf; include /etc/nginx/vhosts-resources/my.digital-hosting.biz/*.conf; access_log /var/www/httpd-logs/my.digital-hosting.biz.access.log; error_log /var/www/httpd-logs/my.digital-hosting.biz.error.log notice; ssi on; set $root_path /var/www/www-root/data/my.digital-hosting.biz; root $root_path; gzip on; gzip_comp_level 5; gzip_disable "msie6"; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript; location / { location ~ [^/]\.ph(p\d*|tml)$ { try_files /does_not_exists @fallback; } location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ { expires 24h; try_files $uri $uri/ @fallback; } location / { try_files /does_not_exists @fallback; } } location @fallback { proxy_pass http://127.0.0.1:8080; proxy_redirect http://127.0.0.1:8080 /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; access_log off; } return 301 https://$host:443$request_uri; listen 86.110.212.97:80; } server { server_name my.digital-hosting.biz www.my.digital-hosting.biz; ssl_certificate "/var/www/httpd-cert/www-root/my.digital-hosting.biz_le1.crtca"; ssl_certificate_key "/var/www/httpd-cert/www-root/my.digital-hosting.biz_le1.key"; ssl_ciphers EECDH:+AES256:-3DES:RSA+AES:!NULL:!RC4; ssl_prefer_server_ciphers on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_dhparam /etc/ssl/certs/dhparam4096.pem; charset off; index index.php index.html; disable_symlinks if_not_owner from=$root_path; include /etc/nginx/vhosts-includes/*.conf; include /etc/nginx/vhosts-resources/my.digital-hosting.biz/*.conf; access_log /var/www/httpd-logs/my.digital-hosting.biz.access.log; error_log /var/www/httpd-logs/my.digital-hosting.biz.error.log notice; ssi on; set $root_path /var/www/www-root/data/my.digital-hosting.biz; root $root_path; gzip on; gzip_comp_level 5; gzip_disable "msie6"; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript; location / { location ~ [^/]\.ph(p\d*|tml)$ { try_files /does_not_exists @fallback; } location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ { expires 24h; try_files $uri $uri/ @fallback; } location / { try_files /does_not_exists @fallback; } } location @fallback { proxy_pass http://127.0.0.1:8080; proxy_redirect http://127.0.0.1:8080 /; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; access_log off; } listen 86.110.212.97:443 ssl http2; }
/etc/apache2/vhosts/www-root Тут создаём копию конфигурации для Apache.
ServerName my.digital-hosting.biz DocumentRoot /var/www/www-root/data/my.digital-hosting.biz ServerAdmin webmaster@my.digital-hosting.biz AddDefaultCharset off AssignUserID www-root www-root CustomLog /var/www/httpd-logs/my.digital-hosting.biz.access.log combined ErrorLog /var/www/httpd-logs/my.digital-hosting.biz.error.log SetHandler application/x-httpd-php Include /etc/apache2/users-php/www-root.conf Include /etc/apache2/vhosts-php/my.digital-hosting.biz.conf php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f webmaster@my.digital-hosting.biz" php_admin_value upload_tmp_dir "/var/www/www-root/data/mod-tmp" php_admin_value session.save_path "/var/www/www-root/data/mod-tmp" php_admin_value open_basedir "/var/www/www-root/data:." Include /etc/apache2/users-php/www-root.conf Include /etc/apache2/vhosts-php/my.digital-hosting.biz.conf php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f webmaster@my.digital-hosting.biz" php_admin_value upload_tmp_dir "/var/www/www-root/data/mod-tmp" php_admin_value session.save_path "/var/www/www-root/data/mod-tmp" php_admin_value open_basedir "/var/www/www-root/data:." Include /etc/apache2/users-php/www-root.conf Include /etc/apache2/vhosts-php/my.digital-hosting.biz.conf php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f webmaster@my.digital-hosting.biz" php_admin_value upload_tmp_dir "/var/www/www-root/data/mod-tmp" php_admin_value session.save_path "/var/www/www-root/data/mod-tmp" php_admin_value open_basedir "/var/www/www-root/data:." SetEnvIf X-Forwarded-Proto https HTTPS=on ServerAlias www.my.digital-hosting.biz DirectoryIndex index.php index.htmlSetHandler application/x-httpd-php-source Options +Includes -ExecCGI php_admin_flag engine on php_admin_flag engine on php_admin_flag engine on /etc/apache2/vhosts-php Тут просто создаём копию нулевого файла соответствующим именем my.digital-hosting.biz.conf
Теперь создадим видимость присутствия SSL-сертификата (позже запилим его сертботом). Идем сюда /var/www/httpd-cert/www-root и просто копируем старые файлы сертификатов с заменой имён. Соответственно, имена должны совпадать с прописанными выше в файлах конфигурации (строки 43,44 /etc/nginx/vhosts/www-root/my.digital-hosting.biz.conf).
Наконец-то можно перезагрузить службы nginx и apache в ispmanager. Если они перезапустились нормально, лампочки горят, то вы всё сделали правильно. Если какая-то служба не запускается, ищете косяки в правке файлов. Я рекомендую перезапускать службы непосредственно из ispmanager, хотя можно это делать и из ssh-консоли соответствующими командами.
Осталось не много. Идём заниматься управлением доменами в DNS-менеджер типа https://msk-dns2.hoztnode.net/dnsmgr. Там нужно всего лишь создать домен и прописать IP. Если у вас уже были прописаны NS в настройках домена там, где вы его оформляли, сразу после этого можно открывать сайт смотреть на ваш index.html и всё, что вы закачали в папку файлов. Вопросы модерирования баз данных я здесь не рассматриваю.
Когда сайт открывается и браузер ругается на отсутствие SSL, самое время установить настоящий сертификат сертботом командой в SSH-консоли типа (надеюсь, certbot на вашу версию Linux установите сами, если не справитесь — звоните)
sudo certbot --nginx -d my.digital-hosting.biz -d www.my.digital-hosting.biz
Дополнение от 09.03
Впиливал новый сайтик в свежую триальную версию Ispmanager с ограничением по времени, допустил невнимательность, из-за которой не стартовал nginx. Оплошность была в том, что файлы сертефикатов на 6м шаге скопировал не все, забыл .key. Благо, подсказали логи из /var/log/nginx/error.log.
Заодно нашел еще конфиги, которые нужно править копированием.
Это файлик /etc/nginx/conf.d/isplimitreq.conf (там внутри увидите, как добавить такую же строчку) и папка /etc/nginx/vhosts-resources, в которой нужно создать одноимённую домену папку с соответствующими правками внутри (файлик reqlimit.conf, в котором нужно только поменять домен).
Другой мелкой неприятностью стало то, что nginx и apache2 в этой триальной версии нельзя перезапускать из Ispmanager, приходится командами из консоли (выбрать нужное по вкусу):
sudo systemctl start nginx sudo systemctl stop nginx sudo systemctl restart nginx sudo service apache2 start sudo systemctl stop apache2 sudo systemctl restart apache2 apachectl configtest systemctl status apache2.service
Можно конечно ребутнуть сервак лёгким движением пальца, но зачем тревожить все службы, когда кочевряжится только nginx.
Еще совет напоследок: лучше заранее закинуть домен в DNSmanager, т. к. пока не пройдет обновление, нельзя будет установить сертботом новый ssl-сертификат, будет отбивка, что "Invalid response from https:/....com:443".
Спасибо за внимание. Рекомендую всё-таки заплатить.
Следующая статья: SEO-аудит сайта https://capweb.ru/seo-audit-sajta.html
Предыдущая статья: YML для староверов MODx Evolution https://capweb.ru/yml-yandex-modx-evolution.html