Как запилить более 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
Спасибо за внимание. Рекомендую всё-таки заплатить.
Следующая статья: Интервью с Яндексом 2013 г. https://capweb.ru/yandex_interview.html
Предыдущая статья: YML для староверов MODx Evolution https://capweb.ru/yml-yandex-modx-evolution.html