Руководство для создания сервера

Привет, Хабр! Относительно недавно после пары лет перерыва в айти, потраченных на изучение японского языка, мне пришлось срочно обновлять свои знания на работе. Ну знаете, искать возможности исполнить все хотелки начальника, как и положено эникею. Меня ждало много увлекательных открытий, но при этом, как водится, и немало боли и борьбы с непонятками. Docker, контейнеры, реверс DNS и реверс прокси, получение TLS сертификатов. В какой-то момент я наконец дошёл до удобного решения, которым я теперь хочу поделиться.

В своё время домашний сервер очень облегчил бы мне понимание Docker’а, да и удобство работы с ним неслабо бы повысил. Поэтому возникла идея написать эту статью, после прочтения которой любой человек даже с поверхностными знаниями в информационных технологиях сможет поставить себе постоянно доступный домашний сервер на базе Docker Swarm с удобной веб-мордой, простым получением TLS-сертификатов и Heroku-подобным функционалом (для чего будем использовать PaaS CapRover). 

Статья, в общем-то, рассчитана на новичков, обладающих какими-то техническими знаниями — школьников старших классов, студентов и просто любителей — а потому вряд ли будет интересна серьёзным профессионалам.

Зачем оно нужно?

Ну как минимум потому что это круто, иметь домашний сервер! Да и настраивать всё это дело интересно. При этом он уже за месяца три отобьёт свою стоимость в сравнении с VPS’ом схожей конфигурации. Ну и наконец он просто радует глаз и миленький.

Что же до использования — иметь возможность развернуть в пару кликов дома Docker-контейнеры сразу в формате http://контейнер.мой.домен/ и в ещё один клик подключить к нему SSL неплохо упрощает жизнь. Сейчас всё больше и больше разнообразных приложений и сервисов переезжают в контейнеры и, если вы не любите лишний раз платить большим компаниям, иметь свои аналоги платных сервисов на домашнем сервере это очень удобно.

Ну а удобство для разработчиков и так понятно.

Подготовка

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

Port Forwarding

Схема работы перенаправления портов

Схема работы перенаправления портов

Проверьте наличие у вашего маршрутизатора (роутера) опции Fort forwarding/Port mapping/Перенаправление портов. Это не самый безопасный, но самый простой способ дать нашему серверу путь во внешний мир. Убедитесь что 80, 443 и 3000 порты у вас ничем не заняты — именно их вы будете прописывать IP адресу вашего сервера. Возможно в будущем, например, если вы захотите поднять почтовый сервер, вам придётся прописать дополнительные порты, но пока нужно только это.

Если проводить аналогию для понимания перенаправления портов, то представьте работу мамы в детстве. По умолчанию охранник туда не пустит, но стоит только сказать волшебную фразу «Я к маме», как строгий охранник уже пускает и говорит куда пройти. Вот и тут так же, с нашим NAT’ом роутера, только вместо «Я к маме» вы говорите порт, на что вас направляют куда надо.

Так же стоит убедиться, что у DHCP вашего роутера есть возможность зарезервировать выданный IP адрес за MAC. Скорее всего ваш сервер будет стоять включённым всё время и не просрочит свой выданный IP адрес, но подстраховаться никогда не бывает лишним. Если нельзя — выпишите машине статичный IP вне зоны выдачи адресов DHCP. Это сложнее и неудобнее, но тоже вариант (Кто-то даже скажет что так даже лучше сделать. Но я сейчас за простоту).

Нету этих опций? Возможно ещё не всё потеряно. Проверьте базу https://dd-wrt.com/support/router-database/ на наличие вашего роутера и есть ли тема по нему на 4pda. Если и там пусто… Ну, либо сворачивайте это руководство, либо пора купить новый роутер.

Домен

Конечно, ничто не мешает нам обращаться к нашему домашнему серверу и напрямую по IP адресу, но делать так не рекомендуется: и не особо безопасно, и запоминать IP адрес не просто, да и если у вас динамический, меняющийся каждый раз как вы заново подключаетесь к интернету, IP адрес, то запоминать его вообще бессмысленно. Ну и наконец, у нас много сервисов планируется, а чтобы к ним доступ был тупо по IP адресу, придётся их на разные порты навешивать. Оно вам надо?

Именно поэтому мы будем использовать домен.

Ну, знаете, ту самую штуку, которую вы вводите в адресной строке. В результате сможем давать сервисам поддомены для удобства и не страдать. Ну, например https://пароли.мой.домен/ для парольного сервиса или https://почта.мой.домен/ для почты. Удобно, в общем, запоминается. Делать это будет Ngnix под капотом нашего PaaS, при желании всегда можете разобраться в конкретике.

Схема работы обратного прокси Ngnix в случае контейнеров

Схема работы обратного прокси Ngnix в случае контейнеров

Рекомендую я, конечно, домен купить. Цены на домены в популярных зонах достаточно либеральные, платить раз в год, регистраторов куча. В плане выбора регистратора я ничего конкретного советовать не буду. Адекватнее всего ориентироваться по цене и отзывам. Разве что маленькое наблюдение: если регистратор требует миллиарды шекелей за такие вещи, как банальное управление DNS записями, то возможно это не очень хороший регистратор и следует посмотреть в другую сторону.

Впрочем если вы только пощупать пришли, то домен можно получить и бесплатно. Есть такой регистратор — Freenom, там можно бесплатно достать домен в зонах .tk, .ml, .ga, .cf или .gq. Правда как часто бывает с чем-то бесплатным, сайт глючный. Если на проверке доменов у вас всё время пишется, что домен занят, попробуйте поставить сразу полный путь. То есть вводите в проверочное поле не мой_домен, а сразу, скажем, мой_домен.tk

Очевидно, что если что-то досталось бесплатно, то и потерять его легко — отзывы у Freenom в этом плане далеки от хороших. Так что если планируете что-то серьёзное, то лучше домен себе всё-таки купить у регистратора. Однако для маленького домашнего сервера потенциальная потеря домена не критична.

Cloudflare

Тут мы уже входим в пространство вкусовщины. Вам ничто не мешает использовать и редактор DNS записей вашего регистратора или любой другой сервис управления DNS записями домена. Тут, на хабре, вон вообще CloudFlare раком интернета недавно называли. Но с другой стороны, CloudFlare даже в базовой, бесплатной версии имеет достаточно много приятных фишек, которые ваш регистратор скорее всего не предоставляет. Тут и какая-никакая защита от DDoS, кеширование, расширенные возможности управления доступом и так далее и в том же духе. Плюс в одном из следующих пунктов, когда мы поднимем контейнер для DDNS, будет использоваться именно CloudFlare (впрочем настроить DDNS с другим провайдером вроде DuckDNS — задача достаточно тривиальная). 

Правда многие фишки пройдут мимо нас, поскольку проксирование у CloudFlare на wildcard-записи (ну, это записи включающие всё пространство имён *.мой.домен) не работает (ну, за бесплатно). Однако ничего не мешает потом, уже для отдельных сервисов, сделать конкретную запись и пожать все плюшки платформы. Ну или ещё лучше, если у вас статический IP адрес, вообще без DDNS обойтись.

Платформа

Физический путь

Удобство физического пути очевидно — стоит отдельная машинка, не мешает основной работе, радует глаз.

Если спросить, что же использовать как платформу, наверняка многие ответят Малинку (то есть Raspberry Pi). На мой взгляд это не самый лучший выбор для данного случая. 

Raspberry Pi отлично подходят для самодельных решений разнообразной направленности, но по соотношению цена/производительность не являются каким-либо лидером. И, хотя сейчас уже множество софта доступно под ARM системы, под x86 программы всё-таки чувствуют себя постабильнее.

Кто-то захочет переоборудовать старую машину или собрать на старых Xeon’ах себе компьютер для веб-сервера. И это тоже вариант, хотя по потреблению электроэнергии не оптимальный.

Я же советовал бы купить для данных целей недорогой (или не очень дешёвый, если вы хотите постоянно запускать «тяжёлые» задачи на вашем сервере) мини-пк (иначе называемый неттоп). Доступные варианты с 8 гигабайтами оперативной памяти, четырёхядерным Celeron и SSD на 128 гигабайт можно найти за 150-200 долларов и этого более чем хватит для домашних задач. При этом он будет компактным, тихим, удобным в размещении, достаточно приятно выглядящим и с низким TDP. Даже в самые дешёвые модели обычно можно доставить как минимум один, а порой и два 2,5 дюймовых диска, так что как файловую помойку его, в общем-то, тоже можно использовать. Хотя лучше превратить его в личное облако, а как файловый сервер использовать отдельное NAS-устройство — для отказоустойчивого хранения большого количества данных форм фактор мини-пк не слишком располагает.

Помимо этого, если вы «наиграетесь» и решите, что оно не ваше, такому компьютеру будет легко найти место. Например поставить обратно Windows и отдать маме/тёте Вале из третьего подъезда. Для офисной работы и использования браузера он подойдёт прекрасно.

А если вы за чуточку большую цену взяли мини-пк с несколькими сетевыми портами, то сможете превратить его в невероятно мощный и функциональный маршрутизатор, поставив сверху OpenWRT, PFsense, ClearOS или ещё какую-нибудь систему для роутеров. Ну и вообще альтернатив много, когда и если наиграетесь с предложенным мной вариантом.

Сразу, правда, надо учесть: шансы, что у такой машинки не будет работать Wi-Fi под линуксом, мягко говоря, не самые маленькие. Так что планируйте проводное соединение.

Заранее погуглите, на какую клавишу вызвать boot menu у вашей машинки. А образ для установки, если вы на Windows, лучше всего на флешку записывать программой Rufus.

Виртуальный путь

Если у вас есть просто живой интерес к тому, что и как настроить, определиться надо ли оно или не надо, то настраиваем виртуальную машину.

Тут стоит провести некоторое разграничение в понимании, поскольку дальше у нас будут ещё и контейнеры Docker. Внешне и по структуре они очень похожи, но вот по использованию неплохо так различаются.

Виртуальная машина — это именно то, как оно звучит — компьютер, которой на самом деле не существует, живущий внутри нашего. Её в какой-то мере можно сравнить с картонной коробкой. Её нужно где-то достать, развернуть, заполнить. Она стоит и занимает место, даже если не до конца заполнена. И залезть внутрь этой коробки иначе как сверху достаточно проблематично.

А контейнер — это как пакетик из магазина. Вроде и служит примерно той же цели, что и коробка, но внутрь что-то положить и достать проще, укладывать по-особому не нужно,места много не занимает, и выкинуть не жалко, и продырявить просто. Говоря же чуть более нормальным языком — контейнер это такая недо-виртуалка, которая ведёт себя скорее как процесс программы.

Конкретный гипервизор (ну, программа, где ваши виртуальные машины создаются и управляются) — на ваше усмотрение. Лучше, конечно, использовать гипервизор первого типа (они, как правило, быстрее, поскольку работают “под” операционной системой, а не “над” ней, как гипервизоры второго типа), но нашему серверу это не очень критично. 

Внимание, любители всяких игруль, мобильных и не очень, на Windows — большая часть гипервизоров конфликтуют с эмуляторами Android для игр и с некоторыми античит решениями. Нормально только Bluestacks для Hyper-V работает, так что заранее выберите, что вам важнее.

VirtualBox

Для начала распишу для VirtualBox, который доступен на всех основных платформах, хотя и не отличается высокой скоростью.

Нажмите на кнопку New (Создать) для создания новой машины, и, ориентируясь по своей логике, задайте все настройки — если что, то потом всегда сможете поправить. Правда, меньше чем 2 гигабайта оперативной памяти лучше не ставить.

После создания машины войдите в её настройки. В разделе Storage (Носители) добавьте ваш образ к дисководу (синяя иконка), а в разделе Network (сеть) поменяйте тип подключения на Bridged Adapter (Сетевой мост) и выберите сетевую карту, по которой к вам приходят интернеты, после чего сохраните. 

Hyper-V

Поскольку сам я в основном пользуюсь Windows, то предпочитаю использовать Hyper-V — встроенный в Pro версию системы гипервизор первого типа. Если вы пользователь Windows, то вам я тоже его советую — как и положено гипервизору первого типа, он весьма радует своей производительностью.  

Чтобы использовать Hyper-V, активируйте его в Turn Windows Features on or off (Включение или отключение компонентов Windows) и перезагрузите компьютер. Вероятно, вам ещё придётся включить аппаратную виртуализацию в BIOS, если вы ещё не делали это. Также необходимо создать в Hyper-V manager (Диспетчер Hyper-V) сетевой интерфейс, ведущий во внешнюю сеть. Кликните справа на Virtual Switch Manager (Диспетчер виртуальных коммутаторов), выберите External (Внешний) и нажмите Create Virtual Switch (Создать виртуальный коммутатор). Далее в настройках External Network (Внешняя сеть) выберите сетевую карту, по которой к вам приходят интернеты, а потом сохраните. 

После этого создайте новую машину в Hyper-V manager (но только не создавайте «быструю» машину, там всё не слава богу), а потом пройдите в её свойства и отключите Secure Boot (если машина 2-ого поколения). Остальные параметры по вкусу, но меньше 2 гигабайт оперативной памяти лучше не ставить. Ну и как сетевой интерфейс, очевидно, нужно поставить свежесозданный.

Установка и настройка системы

При выборе дистрибутива для установки у нас есть некоторый выбор (Но свериться с поддерживаемыми платформами на https://docs.docker.com/engine/install/ не помешает). Официально докер рекомендуется ставить на Ubuntu, я обычно предпочитаю Debian, но нам в целом не принципиально. Однако возможные подводные камни я распишу только для этих двух дистрибутивов.

И да, если можете, то лучше напрямую смотрите инструкции. А то информация в интернете имеет привычку устаревать и есть шанс, что к моменту, как вы это читаете, всё уже десять раз поменялось.

В случае с Ubuntu скачайте Ubuntu Server — на сервере графический интерфейс ни к чему, вы даже не будете подключать к нему монитор после изначальной установки. При установке важный момент — НЕ отмечайте Docker в качестве установки по умолчанию. Иначе он поставится как snap пакет, будет глючить, тупить и вообще, зачем вам лишние проблемы, не дружите со snap’ами, это плохая компания.

После установки системы копипастим по одной эти строчки (вы же уже подключились по SSH, правда ведь? Если нет, то чуть подальше будет инструкция) или вбиваем вручную:

sudo apt-get update
sudo apt-get install 
    ca-certificates 
    curl 
    gnupg 
    lsb-release
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo 
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu 
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

При установке Debian не надо отмечать web server, поскольку в качестве него у нас Nginx внутри контейнера Docker’а с нашим PaaS работать будет.

После установки системы копипастим эти строчки:

sudo apt-get update
sudo apt-get install 
    ca-certificates 
    curl 
    gnupg 
    lsb-release
    curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo 
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian 
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

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

Помимо того, чтобы вводить команды вручную, вы можете использовать Ansible или другие системы для развёртывания, но данное руководство их проигнорирует, поскольку ничего сложного мы не делаем. Просто знайте, что если вам потребуется однотипно настраивать несколько машин, то можно по ssh удобненько это делать через Ansible. Но ssh игнорировать всё же не стоит, ведь как минимум подключившись к своей машине по нему, вы сможете тупо копипастить все команды из руководств, а не вводить вручную.

Ansible это достаточно важный инструмент для Linux-админа и, если вы планируете сдавать или хотя бы просто учиться на сертификации от RedHat, то он вам понадобится. Ну так, на будущее.

Ssh клиентов великое множество, я обычно пользуюсь встроенным в Windows OpenSSH (хотя он встроен, но в старых версиях Windows 10 может быть по-умолчанию отключен. Включается в Turn Windows Features On and Off (Управление дополнительными компонентами)). Просто открываете PowerShell и пишите:

ssh логин_в_linux@IPшник_сервера

А после вводите пароль своего пользователя. Тут стоит отметить, что использовать ssh с паролем это не особо безопасно (но зато проще всего), и, если у вас будет желание с этим разобраться, то лучше настроить ssh ключ.

Систему мы настроили, но не спешите ставить CapRover. Сначала вернёмся к роутеру. Найдите в нём ваш сервер и зарезервируйте его IP адрес в DHCP. Ну или поменяйте его на что-нибудь приятное и зарезервируйте. У вас есть чувство прекрасного, я уверен. После этого пропишите перенаправление с 80, 443 и 3000 портов маршрутизатора на 80, 443 и 3000 порты нашего сервера.

Вот пример того, как оно выглядит в моём роутере TP-Link:

Теперь идём к домену. Войдите в CloudFlare или DNS редактор вашего регистратора и создайте следующую запись:

Тип: A
Хост: *.ваш.домен
Запись: указывает на ваш внешний IP адрес

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

Можете сразу не отходя от кассы создать токен, если планируете динамически обновлять DNS при изменении вашего IP адреса.

Для этого пройдите по ссылке https://dash.cloudflare.com/profile/api-tokens и создайте токен со следующими свойствами:

Zone — Zone Settings — Read
Zone — Zone — Read
Zone — DNS — Edit

Include — All zones

Сохраните длинный Cloudflare API токен, но далеко не убирайте.

Всё, теперь заходим на сервер и пишем волшебную команду, которая поднимает нашу систему для управления контейнерами:

docker run -p 80:80 -p 443:443 -p 3000:3000 -v /var/run/docker.sock:/var/run/docker.sock -v /captain:/captain caprover/caprover

Если вы плохо знакомы с Docker’ом, то тут мы запускаем наш первый контейнер — небольшой PaaS CapRover. Помимо этого мы даём портам в контейнере путь на волю (-p 80:80 -p 443:443 -p 3000:3000), позволяем контейнеру иметь доступ к демону Docker на хост-машине (-v /var/run/docker.sock:/var/run/docker.sock) и делаем так, чтобы папка из контейнера хранила своё содержимое в папке на хосте (-v /captain:/captain). Если так не сделать, то при перезапуске контейнера всё содержимое: настроечные файлы и другие данные нашего контейнера, потеряются навсегда. Так что никогда не забывайте указывать команду -v при работе docker в консоли, чтобы потом не плакать у разбитого корыта. Ну а caprover/caprover — это образ на Docker Hub.

Подождите немного и зайдите либо по айпи адресу, либо по адресу вашего домена:3000 (например http://мой.домен:3000), введите пароль captain42 . После этого тут же введите в нижнее поле ваш домен и нажмите Update Domain. Можете также нажать на Enable HTTPS, но вот на Force HTTPS не надо нажимать — Cloudflare и так трафик у вас (если вы оставили рекомендуемые настройки) с http на https переводит. Конфликтов на этом поводе нам не надо.

Вы великолепны! 

Настала пора запустить наш первый контейнер внутри PaaS.

Перейдите в веб панели в раздел Apps, нажмите на One-Click Apps/Database, найдите CloudFlare DDNS. Это достаточно простой контейнер, весь смысл которого сводится к тому чтобы раз в пять минут проверять, изменился ли IP адрес сервера, и, если изменился, обновлять DNS запись на CloudFlare.

После того как вы нажали на него, вы увидите много опций для ввода. Вообще говоря, чтобы всё заработало нам достаточно просто указать наш сохранённый токен CloudFlare и задать какое-нибудь имя. Но давайте всё-таки разберёмся, что именно мы видим.

А видим мы опции ввода так называемых переменных окружения. Не всех правда, а только тех, которые указал автор конфигурационного файла для CapRover. Значения из этих переменных контейнер может достать и использовать в своих целях, проще говоря через них задаётся начальная конфигурация контейнера.

Так вот, задайте какое-нибудь имя, вставьте ранее сохранённый токен и нажмите Deploy. Контейнер заработал. Теперь можете делать что угодно!

Чуть сложнее

Этот контейнер был простым, без веб доступа, но что у тех, к которым мы будем иметь доступ? Да в общем всё так же, разве что ещё можно включить https, задать домен, указать HTTP порт контейнера и включить websocket. Попробуйте, это просто и интересно!

Использование

И вот наконец у нас всё стоит и работает.

Зачем оно вам? Ну, если вы до сих пор не знаете — придумайте. Для установки в один клик в CapRover доступно множество приложений для повседневного использования. Например менеджер паролей Vaultwarden. Торрент-клиент Qbittorrent. Сервер Minecraft. Боты для Discord. Вариантов много.

Я, например, держу стол для игры в DnD с друзьями Foundry VTT, веб-интерфейс для пробуждение от спячки моего домашнего компьютера (чтобы потом подключаться по RDP), свой маленький гит на базе Gitea, удобный фронтэнд для чтения Reddit’а libReddit, веб-архив для закладок и ещё кучу всякой всячины для тестов и изучения. 

Ничто не мешает вам самому поэкспериментировать с контейнерами, которых в списке ещё нет, а если результат будет удовлетворительным — опубликовать свой конфиг на Github среди других приложений для установки в один клик.

В самом начале мы установили SSH, так что если вы захотите более тонкой настройки, подключите и тыкайтесь. Советую также зайти на SSH через VS Studio Code с установленным расширением Docker’а, и установить его же сразу там на ваш сервер. Теперь наблюдать, управлять и чистить мусор в контейнерах гораздо удобнее.

Что дальше?

Возможно, вам уже хватило, вы поняли что это не ваше и вообще. Тоже неплохой результат. Возможно, вы просто хотели домашний сервер и получили его — опять же, к результату мы пришли. Или же вы хотите большего — и это тоже прекрасный результат! Надо понимать, что хотя Docker Swarm уже несколько протух, для небольших нагрузок, вроде домашнего использования, он подходит на отлично. А если вам мало, то, разобравшись как и что тут работает, вы можете медленно начать своё движение к изучению kubernetes. 

Что можно посоветовать конкретного? Ну, если Docker вам интересен и хочется в нём разобраться поглубже, то вводный цикл статей от Microsoft достаточно приятно и наглядно объясняет как и что оно.

Если хотите покрупнее брать — и в Hyper-V получше разобраться, и в контейнерах и чуточку затронуть кубер, то вот ещё у них есть неплохие материалы.

Не, не, вы не подумайте, я хоть и виндовый админ (ну хорошо-хорошо, эникей а не админ), но не сказать чтобы прям топлю за Microsoft, просто материалы у них бесплатные и достаточно толковые, на мой взгляд.

Коли от Microsoft тошнит — ищите курсы. В англоязычных интернетах с этим проще — идёшь на Udemy или Pluralsight и выбираешь курс по теме, где люди поменьше в комментах бугуртят на качество, и в бой. С русскоязычными курсами посложнее в выборе, но кто ищет — тот найдёт. 

Ну и наконец если в целом вся эта тема с сервисами на своём домашнем сервере вам интересна, то вот отличный список selfhosted решений на все случаи жизни.

В общем, да пребудет с вами IT сила!

Я расскажу о том, при каких обстоятельствах понадобится виртуальный сервер, какие существуют программы для его создания и как взаимодействовать с ними.

Для чего нужен виртуальный сервер на компьютере

VDS-сервер (если быть точнее, локальный сервер), развернутый на локальном компьютере, пригодится при тестировании уже готового сайта, при внедрении в него новых скриптов и дополнений, которые окажут то или иное влияние на общую работоспособность проекта. Помимо тестирования, на виртуальном сервере происходит и отладка добавленных компонентов. У вас появляется возможность редактировать их под себя до момента релиза.

Однако стоит уточнить, что полноценную реализацию VDS-сервера на одном локальном компьютере все равно не развернуть, поэтому за помощью придется обращаться к программам для создания локальных серверов, которые и помогут обойтись без приобретения услуг на сторонних сайтах.

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Создание локального сервера на компьютере

Приобретение VDS подходит в том случае, когда у вас уже есть готовый проект. Для тестирования же целесообразно использовать локальный сервер при помощи специальных программ. Одним из лучших решений можно считать OpenServer. Этот инструмент подойдет начинающим, поскольку легко устанавливается и настраивается. Ниже я даю ссылку на тематическую инструкцию, которая поможет разобраться с тем, как начать пользоваться этой программой.

Подробнее: Установка и настройка OpenServer

Использование программы OpenServer для настройки локального сервера

Второй популярный вариант – Denwer. Это приложение еще более простое в использовании, оно позволяет запустить локальный сервер сразу же после установки, выполнив для этого всего несколько команд. Скачать Denwer можно с официального сайта, где разработчики любезно предоставили видеоинструкции для тех, кто впервые будет работать с данным решением. В этих руководствах есть ответы на все вопросы по поводу настройки и первого запуска Denwer.

Существует огромный список локальных серверов, доступных для установки как в Windows, так и Linux. Ознакомиться с ними можно в отдельной статье, перейдя по ссылке ниже.

Подробнее: 8 лучших локальных серверов

Переход на виртуальный сервер

Выше вы ознакомились с информацией об организации виртуального сервера и подключении локального на своем компьютере. Из этого уже понятно, что все процессы довольно сложны и подходят только в определенных ситуациях. Зачем создавать сервер самостоятельно, когда за небольшую плату можно купить виртуальный сервер и использовать его для своих целей? Например, Timeweb предлагает высокопроизводительные VDS от 45 рублей в месяц. 

Подробнее: VDS-хостинг под любые задачи

Приобретение услуги VDS-сервера на сайте Timeweb

Приведу несколько примеров, для чего нужен VDS-сервер, а в каких ситуациях он просто необходим.

  1. Организация безопасности сайта. При работе на виртуальных серверах у каждого участника своя операционная система и настройки межсетевого экрана. Соответственно, при взломе физического сервера хакер не сможет так просто получить данные сразу всех подключенных сайтов.
  2. При работе с интернет-магазином. Чаще всего для интернет-магазинов подключается услуга оплаты картой, а это значит, что клиент будет вводить свои банковские данные. В этом случае появляется требование перехода на безопасный VDS-сервер для одобрения PCI DSS сертификации.
  3. Ускорение работы сайта. Приобретение данной услуги позволяет ускорить сайт, особенно когда тот становится все больше и больше с каждым днем. Виртуальный сервер предоставляет больше ресурсов, за счет чего и происходит оптимизация работы.

Существуют и другие факторы, но это самые основные. Теперь вы можете сформировать полную картину того, нужно ли вам переходить на VDS-сервер или подойдет локальный вариант. 

Можно ли самому запустить VDS-хостинг?

В сети есть много статей, рассказывающих о том, что создать VDS самому – не такая уж и сложная задача. Особенно если запустить его на своем компьютере и продавать. Хочу уверить, что это полный абсурд. 

Разумеется, VDS или VPS-хостинг можно запустить самостоятельно, предоставляя услуги всем желающим, но точно не на своем компьютере. Это целый бизнес, требующий ответственного подхода, определенных знаний и вложений средств. Рассказывать об этом детально нет смысла, однако для общего развития уточню несколько основных деталей.

Выбор типа продажи виртуальных серверов и оборудования – самый важный финансовый вопрос, поскольку он имеет несколько вариантов развития.

  1. Простой вариант – перепродажа купленного у стороннего провайдера виртуального сервера по более высокой цене (ресселинг). В этом случае нужно найти оптимального поставщика, который предоставляет надежный VDS. Сам хостинг должен предоставлять тарифную линейку серверов под разные нужды. 
  2. Аренда физического сервера – дорогой вариант, но позволяющий разбить его на несколько VDS при помощи технологии виртуализации. При правильном подходе это позволяет сократить расходы и более гибко организовать всю систему.
  3. Можно разместить собственное оборудование в готовом дата-центре. Этот метод требует больших вложений, поскольку вы самостоятельно приобретаете все оборудование и находите место, где его разместить.
  4. Самый безумный вариант – построить свой дата-центр. Здесь уже речь идет о масштабном бизнесе с миллионами затрат и продуманным планом развития.

Следует посчитать все затраты, найти помощников или заняться организацией хостинга самостоятельно. Открыть его не так уж и просто, ведь это требует серьезного подхода. Обычному пользователю для тестирования своих сайтов этот вариант, естественно, не подойдет, поэтому предлагаю ограничиться локальным сервером.

Содержание:

  • Установка веб-сервера, размещений фалов сайта

  • Шаг №1

  • Шаг №2

  • Настройка доступа к сайту по локальной сети с помощью Open Server

  • Шаг №1

  • Шаг №2

  • Шаг №3

  • Шаг №4

  • Настройка доступа к сайту из сети интернет по IP и по имени домена

  • Шаг №1

  • Шаг №2

  • Шаг №3

  • Шаг №4

  • Установка движка

  • Шаг №1

  • Шаг №2

  • Шаг №3

  • Шаг №4

При создании собственного сайта с нуля и необходимости, чтобы он работал исключительно в вашей локальной сети, его нужна сначала тщательно протестировать, а только потом выкладывать в сеть. С этой целью можно использовать свой ноутбук или персональный компьютер, создав на нем сервер.

Сделать это достаточно просто и быстро. Самая главная и сложная задача – обеспечить непрерывность и стабильность работы сервера, ведь контролировать ее самостоятельно каждый день или даже час, а также постоянно следить за компьютером и его подключением к интернету практически невозможно.

В целом, создать надежный и бесперебойно работающий сервер бесплатно возможно, но нужно учитывать несколько нюансов. Компьютер или ноутбук должен быть подключен к сети интернет или к локальной (возможно использование даже домашнего Wi-Fi-роутера). Способ, изложенный в статье, актуален для операционной системы Windows 10 или 11.

Если все же с созданием сервера возникнут проблемы, то всегда можно обратиться к специалистам. IT-инженеры компании ittelo.ru досконально изучили эту тему и смогут помочь решить вопрос в короткие сроки и по разумным ценам.

Установка веб-сервера, размещений фалов сайта

Создание собственного сервера – процесс этапный, поэтому, чтобы не запутаться, лучше разбираться в нем постепенно, выполняя шаг за шагом.

Шаг №1

Для создания сервера можно использовать Open Server. Это не пиратка, а официальный сервис. Он надежный, стабильный, у него интуитивно понятный интерфейс, много полезных функций (к примеру, возможность настройки автовыполнения скриптов, выбора версии MySQL или PHP). Ознакомиться со всем перечнем опций Open Server можно через сайт. Здесь же можно установить и запустить сервер. После успешной установки на панели задач появится флажок зеленого цвета.

Важно! Если Open Server не запускается, причина может быть в отсутствии Microsoft Visual C++. Поэтому, если при установке сервера вам предлагают его загрузить, дайте разрешение на скачивание.

Шаг №2

На этом этапе необходимо открыть папку установки Open Server (на локальном диске «С»), а затем перейти в раздел «Domains». Здесь нужно создать новую папку и задать ей имя по названию адреса сайта. К примеру, newforme.site можно использовать как newforme.ru, newforme.com.

В созданной под названием домена папке необходимо разместить файлы сайта (HTML-коды, движок и другие). На данном этапе создания сервера будет достаточно размещения одного тестового файла для проверки.

Важно! Необходимо создать такой адрес сайта, который еще никто не использует. В противном случае, если в будущем вы захотите его открыть для общего доступа, зарегистрировать домен будет невозможно. Проверить занятость адресов можно на сервисе Рег.ру.

Настройка доступа к сайту по локальной сети с помощью Open Server

Шаг №1

Для установки необходимых параметров доступа к веб-сайту нужно нажать на значок Open Server (тот самый флажок внизу экрана на панели задач). Появится меню, в котором нужно открыть пункт «Настройки», а затем перейти в раздел «Модули». Здесь потребуется задать параметры MySQL, HTTP, PHP, необходимые для функционирования вашего сайта.

Шаг №2

После настройки модулей следует перейти в раздел «Сервер». Здесь нужно разрешить запуск в агрессивном режиме (поставить галочку напротив соответствующей строки). Это необходимо для того, чтобы сервер продолжил свою работу при возникновении небольших ошибок.

В этом же разделе найдите пункт «IP-адрес сервера» и выберите параметр «Все доступные IP». Нажмите кнопку «Сохранить» в нижнем правом углу окна.

Шаг №3

Задача этого этапа – выяснить локальный IP адрес ноутбука или персонального компьютера, через который вы установили Open Server. Он понадобится для запуска сайта. Легче всего это сделать, если вы подключены к интернету через wi-fi. В таком случае нужно просто открыть настройки роутера и найти в перечне подключенных устройств свой компьютер. Напротив его имени будет написан адрес в цифровом формате (к примеру, 123.345.7.8).

Важно! Если у вас несколько устройств, подключенных к одному и тому же роутеру, то лучше в его настройках закрепить найденный IP за тем компьютером, с которого вы запустили сервер. В противном случае адрес может быть присвоен и другим устройствам в вашей сети.

Шаг №4

После того как адрес IP стал известен, нужно снова открыть настройки Open Server и перейти во вкладку «Алиасы». Здесь его необходимо вписать в поле «Исходный домен», а в соседнем поле «Конечный домен» указать адрес вашего сайта (в рассматриваемом примере это newforme.site).

Настройка доступа к сайту из сети интернет по IP и по имени домена

Теперь, по «Исходному домену» (IP 123.345.7.8) сайт можно будет открыть с любого компьютера, ноутбука, планшета или телефона в пределах локальной сети, то есть с тех устройств, которые будут подключаться к сети от вашего роутера. По «Конечному домену» сайт будет приватным и сможет запуститься только с того ПК или ноутбука, на котором запущен сервер. Чтобы разрешить доступ по имени домена другому устройству, откройте на нем блокнот и отредактируйте системный файл hosts, добавив в него строку по примеру: 123.345.7.8 newforme.site. Это придется проделать со всеми гаджетами, чтобы открывать с них сайт не по IP, а по доменному имени.

Итак, разрешить доступ к устройствам, подключенным к локальной сети не сложно. А как же открыть сайт для всех пользователей интернета? Для начала необходимо определить тип вашего внешнего адреса IP. Он может быть «белым» или «серым». В первом случае, когда такой IP изначально установлен вашим провайдером, дополнительных действий с адресом выполнять не требуется.

Во втором случае просто так ничего не выйдет. Если вы даже не подозреваете, какой тип адреса у вас, можно попробовать разрешить доступ к сайту по описанным ниже рекомендациям. При возникшей ошибке подключения вывод о том, что IP «серый» напросится сам собой. В такой ситуации потребуется заказать у вашего провайдера создание «белого IP-адреса». Ценник разный и сильно варьируется у разных интернет-компаний.

Шаг №1

Итак, если предположить, что у вас уже есть «белый» IP, то можно приступать к разрешению доступа. Чтобы выяснить номер внешнего адреса, необходимо, как и в случае с внутренним, сначала зайти в программу настроек роутера. В появившемся окне найдите вкладку «Состояние/информация о подключении» и откройте ее. Внешний IP будет иметь следующий формат: 10.987.654.321.

Шаг №2

После этого в настройках роутера пробросьте порты 443 и 80 на тот ноутбук или персональный компьютер, на котором создавался веб-сайт, и устанавливался «домашний» хостинг. Этой первый вариант. Второй, более простой и автоматизированный – подключить DMZ-хост для вашего устройства. Для этого в настройках сервера откройте вкладку «Состояние», нажмите кнопку «Вкл» напротив одноименной строки, а в строку ниже «IP адрес» впишите внутренний IP адрес (в данном примере — 123.345.7.8).

Шаг №3

После проброски портов нужно связать имя домена и внешний IP. Для этого войдите в настройки Open Server в раздел «Алиасы». В поле «Исходный домен» впишите внешний IP (10.987.654.321), в «Конечный домен» – адрес веб-сайта (newforme.site).

Эти действия позволят открывать сайт с любых гаджетов, подключенных к интернету. Для этого в поисковой браузерной строке нужно набрать адрес внешнего IP и нажать «поиск».

Шаг №4

Чтобы пользователи интернета могли находить и открывать сайт по имени домена, его нужно будет зарегистрировать. Сделать это можно у IT-специалистов компании ittelo.ru.

Важно! Для регистрации доменного имени необходимо, чтобы оно было свободно и не использовалось ранее на других ресурсах.

После этого у регистратора домена необходимо открыть раздел «Управление записями DNS» и добавить запись вида «А внешний IP» (например, А 10.987.654.321). Это действие связывает адрес с доменным именем и позволяет автоматически открывать нужный сайт при запросе домена.

Примерно через 30–60 минут сервер начинает работать. До этого момента при попытке загрузить сайт может вылетать ошибка или «заглушка», но после обновления информации все откроется.

Важно! При изменении внешнего IP интернет-компанией, перебоях в сети или в случае выключения ПК или ноутбука, на котором установлен Open Server, сайт открываться не будет, поэтому для его бесперебойной работы необходимо всегда оставаться онлайн.

Установка движка

Итак, завершающий этап создания собственного сервера. Он также включает в себя несколько шагов. Реализовать его можно через разные сервисы, здесь рассмотрен пример на базе WordPress.

Шаг №1

Для начала нужно загрузить движок сайта в формате архива (как правило, ZIP) на ноутбук или компьютер, на котором создается сервер. Затем правой кнопкой мыши нажать на значок Open Server на панели задач (зеленый флажок), перейти во вкладку «PHPMyAdmin» и выбрать пункт «Дополнительно».

Шаг №2

В появившемся окне – меню создания базы данных. В соответствующей строке введите нужное название и кликните «Создать».

Шаг №3

Откройте раздел «Domains» в меню Open Server и создайте папку, задав ей имя такое же, как у вашего сайта (в данном примере — newforme.site). В нее необходимо извлечь файлы из архива ZIP движка сайта.

Среди них нужно найти файл под именем «wp-config-sample.php», после чего изменить его название на «wp-config.php», а затем открыть.

Шаг №4

В появившемся окне найдите поле «DB_NAME» и впишите в него название ранее созданной базы данных, в «DB_USER» – имя пользователя, а поле «DB_PASSWORD» оставьте пустым.

Теперь можно вводить адрес сайта в поисковую строку любого браузера и пробовать его открыть. При возникновении ошибки перезагрузите Open Server и повторите предыдущие действия. При успешной загрузке всплывет приветственное окно, в котором нужно будет ввести название сайта, имя пользователя, задать пароль и указать вашу электронную почту.

После этого сайт начнет работать на платформе WordPress, он должен открываться на любых устройствах: как на компьютерах, так и на смартфонах с операционными системами IOS и Андроид.

Рассмотренный пример создания собственного сервера для сайта – быстрый и достаточно легкий способ открыть к нему доступ для пользователей как из локальной, так и из общей сети.

Однако у него есть свои нюансы, ограничивающие применение этого метода:

  1. Необходимость регистрации «белого» IP адреса. Как правило, у всех провайдеров эта услуга платная и у многих не дешевая. Поэтому в ряде случаев даже выгоднее сразу арендовать платный сервер, не тратя на его создание время и силы.
  2. Нужно, чтобы ноутбук или компьютер с установленным сервером был включен круглосуточно, да и работа интернета должна быть бесперебойной. С целью подстраховки можно подключиться сразу к двум провайдерам. В случае отключения ПК или интернета сайт моментально перестает загружаться, поэтому важно постоянно следить за их работой, что крайне неудобно.
  3. При посещении сайта, работающем на «домашнем» сервере, большого количества пользователей возникает значительная нагрузка на центральный процесс, что может негативно сказываться на общей производительности компьютера.

Важно! Для более быстрой загрузки сайта рекомендуется его разместить на SDD диске. HDD накопители дают значительно меньшую производительность.

В целом способ несложный и «рабочий». Однако использовать его ради экономии денежных средств при создании публичного сайта нецелесообразно. Он подойдет скорее для запуска маленького форума для небольшого круга пользователей или с целью тестирования перед основным запуском через крупный хостинг.

Перед созданием виртуального сервера

В панели управления вы можете за несколько минут создать стандартный виртуальный сервер.
Но в некоторых случаях нужны предварительные настройки. Краткий их список собран в таблице, информация продублирована в инструкции.

Опции, для которых нужны предварительные настройки:

Создать сервер на HDD-диске

По умолчанию серверы создаются на SSD-диске.
Чтобы создать сервер с HDD-дискoм, воспользуйтесь инструкцией.

Установить свою операционную систему

По умолчанию вы можете создать сервер из более, чем 20 готовых образов с операционными системами Windows и Linux.
Но также можно загрузить в виртуальный дата-центр свой образ (как загрузить образ).

Использовать Shell-скрипты

Можно заранее подготовить Shell-скрипты и задать их при создании сервера.

Создание сервера. Пошаговая инструкция

Перейдите в панель управления, раздел Серверы, и нажмите кнопку «Создать сервер».

В открывшемся окне происходит создание сервера:

Далее рассмотрим каждую вкладку окна.

Вкладка «Имя и тип ядер»

Имя сервера

Произвольное имя для создаваемого сервера

Количество

Можно указать число одновременно создаваемых серверов. По умолчанию будет создан 1 сервер.

Будьте внимательны, выбирая тип ядер NOVA или STANDART. Чтобы изменить их после создания виртуального сервера, понадобится обращение в техподдержку и остановка сервера.

Вкладка «Источник»

В этой вкладке выберите основу для сервера и задайте размер диска для будущего сервера.

В выпадающем списке «Выберите базовый объект для создания сервера» предлагаются варианты:

Образ

Готовый образ операционной системы

Диск

Имеющийся диск (от удаленного сервера, например)

Снимок диска

Имеющийся снапшот сервера.

Самый простой вариант — создать сервер на основе готового образа.

Далее рассмотрим каждый способ отдельно:

Образ

Рекомендуем этот способ, если хотите создать новый сервер «с нуля».

Укажите желаемый размер для диска.
Выберите образ из таблицы «Доступно» и нажмите кнопку с изображением стрелки напротив выбранного образа.

Образ перемещен в таблицу «Выбрано» и будет использован для создания сервера.

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

Если вы делаете сервер на основе образа, на нем по умолчанию будет использован SSD-диск. В графе «Volume Size (GB)» можно настроить его размер.

Чтобы создать сервер на HDD-диске, используйте инструкцию.

Диск

По умолчанию список доступных дисков будет пуст:

Если вы заранее создали диск, на его основе можно развернуть сервер. Это чаще всего используется:

  • Для восстановления ранее удаленного виртуального сервера, если диск от был сохранен. В этом случае диск можно выбрать в таблице «доступно»
  • Для создания сервера с HDD-диском. По умолчанию серверы создаются на SSD-диске.
    Воспользуйтесь инструкцией, чтобы создать HDD-диск для виртуальной машины.
  • Также диск используется в некоторых специфических случаях, таких как восстановление root-доступа на серверы Linux.

Выберите диск из таблицы «Доступно» и нажмите кнопку с изображением стрелки напротив выбранного диска.

Диск перемещен в таблицу «выбрано» и будет использован для создания сервера.

Снимок диска

Если вы предварительно создавали снимки дисков, они будут в списке «Доступные».

Выберите снимок из таблицы «Доступно» и нажмите кнопку с изображением стрелки напротив выбранного снимка.

Снимок перемещен в таблицу «выбрано» и будет использован для создания сервера.

Как можно использовать снимки дисков:

Например, вы создали снимок, а после внесли на сервер изменения. Затем вам понадобился еще один сервер в состоянии до внесенных изменений. На основе имеющегося снимка можно создать виртуальную машину.

Вкладка «Тип инстанса»

Во вкладке Тип инстанса вам требуется выбрать количество оперативной памяти и ядер процессора для сервера.

Например шаблон «Node 1.11» в таблице «Доступно» включает в себя 1 виртуальное ядро и 1 гб оперативной памяти:

Выберите нужную конфигурацию из таблицы «Доступно» и нажмите кнопку с изображением стрелки напротив выбранной конфигурации.

Конфигурация выбрана, на её основе будет создан сервер.

Если вы не нашли в списке подходящий шаблон, обратитесь в техподдержку – мы добавим кастомную конфигурацию.

Вкладка «Сети»

Во вкладке «Сети» выберите сетевой интерфейс для подключения. При этом серверу будет назначен IP-адрес.
Эта обязательный пункт, однако сеть можно перенастроить и после создания виртуального сервера.

Доступны варианты подключения в любых комбинациях:

  • Подключение сетей (назначить IP из диапазона сети) — простой способ, рекомендуем использовать по умолчанию. IP-адрес будет назначен серверу по DHCP.

  • Подключения портов (назначить IP-адрес через порт) — для назначения выбранного IP-адреса.

Далее рассмотрим каждый вариант отдельно:

Подключение сетей

По умолчанию доступна сеть external_network c белыми IP-адресами. Используйте её для быстрого создания виртуального сервера с доступом в интернет.

На скриншоте сеть external_network выбрана для виртуального сервера.

Сервер с сетью external_network будет иметь выделенный белый IP-адрес и доступен для входящих и исходящих подключений через Интернет.

Также можно заранее создать частную сеть с кастомными настройками. Удобно для построения развитой серверной инфраструктуры. Например, когда нужно связать несколько виртуальных машин.

Подключение портов

Порт позволяет назначать выбранный IP-адрес для виртуального сервера. Порты нужно предварительно создать в разделе «виртуальная сеть / сети» (как создать порт).

Чтобы просмотреть список портов и выбрать нужный нажмите кнопку «Назначить IP-адрес через порт»:

Выберите нужный порт из таблицы «Доступно» и нажмите кнопку с изображением стрелки напротив выбранного IP-адреса.

Теперь порт будет назначен для сервера.

Вкладка «Межсетевые экраны»

Во вкладке по умолчанию выбран межсетевой экран «default».Межсетевой экран «default» позволяет быстро настроить сетевые подключения при первом входе в виртуальную машину — рекомендуем не удалять его при создании сервера.

Правила экрана «default» РАЗРЕШАЮТ:

  • все входящие пинги

  • все исходящие пинги

  • все подключения по протоколам SSH, HTTP, HTTPS, DNS, RDP

Подробнее о настройке межсетевых экранов вы можете почитать в этом инструкции.

В целях безопасности, рекомендуем изменить правила межсетевого экрана после создания сервера и выполнения сетевых настроек.

Вкладка «SSH-ключи»

SSH-ключи необходимы для первого доступа к виртуальным серверам, созданым из готовых образов. В этой вкладке сгенерируйте или загрузите свои SSH-ключи с помощью соттветствующих кнопок.

Чтобы сгенерировать новый ключ, нажмите кнопку «Создать связку ключей».

В открывшемся окне задайте имя для ключевой пары и нажмите кнопку «Создать публичный ключ»:

Сгенирированный ключ требуется скопировать и сохранить. Для этого нажмите кнопку «copy private key to clipboard» и вставьте данные в текстовый редактор. Затем нажмите «Done», чтобы сохранить ключ.

Вкладка «Shell-скрипты»

Вы можете загрузить свой shell-script или скопировать его в текстовое поле. При копировании важно, чтобы в начале каждой строки отсутствовали пробелы.

Функция «разбиение диска»

Функция доступна только только для новых дисков, создаваемых на основе образа.

Автоматически

Весь диск резервируется под системный раздел.

Вручную

Системный раздел равен размеру образа. Остальное место на диске можно будет разметить вручную, средствами операционной системы сервера.

Завершение

Когда все настройки будут готовы, нажмите «Создать сервер». Окно закроется и начнется процесс создания сервера. Это занимает 1-2 минуты.

По готовности статус сервера изменится на «Активно».

Если кнопка «Создать сервер» неактивна, проверьте, есть ли в вертикальном меню вкладки с символом *. Он означает, что в отмеченных вкладках есть не заполненные обязательные поля.

Данное руководство предназначено для развертывания и настройки VDS сервера на примере Ubuntu 20.04 с установкой веб-сервера nginx, php 7 и сервера базы данных MySQL.

Автор материала

Артем. Веб-разработчик, создатель проекта Лектория, эксперт MODX Revolution, директор веб-студии OpenColour. Youtube-канал OpenModx.

Для чего?

Вы уже получили навыки в создании web приложений и хотите разместить созданный сайт в интернете, но как это сделать? Все просто! Есть хостинг провайдеры, которые, как раз и предоставляют услуги, по размещению сайтов в сети. Заходя на страничку к провайдеру, вы видите, что можно взять в аренду виртуальный хостинг или VDS.

В чем разница? Давайте рассмотрим эти продукты и избавимся от боязни их использовать. Начнем по порядку от общего к частному.

Хостинг — это услуга по предоставлению ресурсов для размещения информации на сервере, постоянно имеющем доступ к интернету. Следовательно виртуальный хостинг — вид хостинга, при котором множество веб-сайтов расположено на одном веб-сервере. Это самый экономичный вид хостинга, подходящий для небольших проектов. Исходя из определения разные тарифы на виртуальные хостинг могут отличаться по следующим основным параметрам:

  1. размер дискового пространства;
  2. количество месячного трафика;
  3. количество сайтов, которые можно разместить в рамках хостинга как одной услуги;
  4. количество баз данных и количество места под базы данных;
  5. количество почтовых ящиков и FTP-аккаунтов;
  6. ресурсы CPU;
  7. количество оперативной памяти.
Примеры тарифов (хостинг timeweb)
Примеры тарифов (хостинг timeweb)

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

Альтернативой виртуального хостинга является использование VDSVPS (Virtual DedicatedPrivate Server) — это, виртуальный выделенный или приватный сервер, который предоставляется хостинг провайдером в аренду заказчику.Чтобы не вводить в заблуждение, сразу отмечу, что разницы между аббревиатурами VPS и VDS нет никакой. Дело в том, что два этих понятия появились практически одновременно и параллельно развивались.

Что же такое VDS? Говоря простым языком, поставщик услуг на своем оборудовании, с помощью средств виртуализации разворачивает несколько виртуальных (программных) серверов. С точки зрения функциональности такой сервер ничем не отличается от физического, на него также устанавливаются операционная система и программное обеспечение, он также расположен в сети и управляется, как и остальные ПК, средствами удаленного администрирования. При этом данный сервер находится на удаленной площадке провайдера, которая защищена от сбоев и оптимизирована под работу 24/7/365. В свою очередь хостинг провайдер берет на себя все обязательства по обслуживанию и сопровождению оборудования и системы виртуализации. Но соответственно цену на эту услугу несколько выше чем на виртуальный хостинг.

Примеры тарифов VDS
Примеры тарифов VDS

К достоинствам этой услуги можно отнести, что Вы больше не будете ограничены количеством месячного трафика, размещаемых сайтов, базами данных и прочим. В Ваших силах теперь установить на свой VDS все необходимое программное обеспечение без каких-либо запретов и ограничений.

Но и минусы тоже есть. Настройка и администрирование теперь является Вашей заботой.

Что бы исправить возникшую несправедливость и обучить настройке и азам администрирования VDS и создано это руководство.

Исходные данные

Определим, что у нас есть некоторый сайт, работающий на php+MySQL под управлением некой CMS (в нашем случае это будет MODX Revolution, но на процесс настройки VDS это не влияет), а это значит, что помимо развертывания CMS необходимо установить и настроить основные модули php, nginx, mysql. Для этого определим следующую последовательность наших действий:

  1. Регистрация на хостинге и конфигурация VDS;
  2. Создание VDS из панели управления;
  3. Подключение по SSH;
  4. Обновление и установка пакетов системы;
  5. Установка nginx + php;
  6. Установка mariadb (mysql);
  7. Создание нового пользователя системы;
  8. Конфигурирование php-fpm;
  9. Конфигурация nginx;
  10. Конфигурация mysql;
  11. Создание пароля для root пользователя mysql;
  12. Создание нового пользователя и базы данных для сайта;
  13. Создание недостающих каталогов и перезапуск сервисов;
  14. Установка MODX.

Регистрация на хостинге и конфигурация VDS

В руководстве будем пользоваться услугами компании timeweb. Переходим на вкладку VPS / VDS, из предлагаемых тарифов выбираем тот, который нам подходит по характеристикам и нажимаем кнопку заказать. После этого попадаем в окно регистрации и выбора параметров виртуального сервера.

В текстовые поля вводим свою фамилию, имя и отчество, и адрес электронной почты. В выпадающем списке меняем операционную систему на Ubuntu 20.04

Форма регистрации
Форма регистрации

Далее жмем кнопку «ЗАКАЗАТЬ» и переходим к оплате. После окончания регистрации на электрону почту придет письмо, содержащее данные для подключения к виртуальному серверу (ip адрес сервера, пароль root пользователя).

Root – это суперпользователь в системах *nix. С помощью этой учетной записи можно осуществлять административные операции над важными файлами ОС.

Создание VDS из панели управления

Если вы уже зарегистрированы на этом хостинге, то заходим панель управления, нажимаем кнопку «СОЗДАТЬ СЕРВЕР» (1), вводим имя сервера (2), выбираем операционную систему «Ubuntu 20.04» (3), указываем конфигурацию сервера (выбираем тариф) (4). Чтобы создать виртуальный сервер в верхней части окна, нажимаем на кнопку «СОЗДАТЬ СЕРВЕР».

Панель управления при создании нового сервера
Панель управления при создании нового сервера

Создание сервера занимает некоторое время, обычно оно не превышает нескольких минут. После того как создание будет завершено на электронную почту поступит информационное письмо с данными для подключения и в панели управления отобразится статистика по виртуальному серверу.

Подключение по SSH

Для подключения к серверу мы будем использовать встроенный терминал macOS или, если вы работаете в операционной системе windows, то программой Putty.

SSH — (Secure Shell) — это протокол удаленного управления компьютером с операционной системой Linux. В основном ssh используется для удаленного управления серверами через терминал.

Дальнейшая руководство будет построено на примере работы из под macOS, для windows все действия аналогичны и не различаются.

Откройте окно терминала и введите следующую команду

где ssh — означает подключиться к удаленному компьютеру по протоколу ssh, в записи «root@193.168.3.225» — обозначает имя пользователя (root), @ — разделитель, 193.168.3.225 — ip адрес удаленного компьютера (смените на полученный в письме)

Нажмите клавишу «Enter», введите пароль и нажмите еще раз «Enter». Приглашение терминала изменится и это является свидетельством подключения к серверу.

Вид терминала после успешного подключения по SSH
Вид терминала после успешного подключения по SSH

Обратите внимание!

root@343158-artprog157:~#

Такая запись называется приглашением терминала (командной строки), состоит из:

  1. root — имя подключенного пользователя;
  2. @ — разделитель;
  3. 343158-artprog157 — имя компьютера
  4. знак «#» на конце строки означает, что пользователь имеет права суперпользователя, у обычного пользователя знак «$».

Обновление и установка пакетов системы

Обновление пакетов системы является неотъемлемой частью перед установкой программного обеспечения и настройкой сервера. В Ubuntu используется пакетный менеджер APT (Advanced Package Tool, Улучшенный инструмент для работы с пакетами), который умеет работать с репозиториями, разрешать зависимости и взаимодействовать с dpkg, которая, собственно, и занимается установкой пакетов. APT всегда работает с локальным кешем списков, поэтому перед любыми действиями с пакетным менеджером следует обновить списки в кэше. Это можно сделать следующей командой

Введенная команда проверяет версии списков в репозитории и при необходимости скачивает их новые версии, после чего анализирует список установленных пакетов и сообщает о доступных обновлениях. Далее обновления нужно установить с помощью команды

Это безопасный способ обновления, при котором обновляются только установленные пакеты и не происходит установки новых пакетов, если они затрагивают текущие версии, также не удаляются убранные из репозитория пакеты. На этом обновление системных пакетов закончено, переходим к следующему шагу.

Установка nginx + php

Приступим к установке программного обеспечения, необходимого для функционирования системы MODx, как и на предыдущем шаге мы будем использовать менеджер APT. Синтаксис команды для установки выглядит следующим образом

apt-get install {имя пакета}

Так как, необходимо установить более одного пакета, то не нужно вводить команду каждый раз для конкретного пакета. Можно все имена пакетов вписать в одну команду, отделяя их друг от друга пробелами. Выполните установку необходимых нам пакетов следующей командой:

apt-get install nginx php-common php-cli php-curl php-json php-gd php-mysql php-xml php-zip php-fpm php-mbstring php-bcmath php-pear

И так, мы выполнили установку nginx и php с библиотеками. Проверим, как установились пакеты. Для этого откройте браузер и в адресную строку впишите ip адрес виртуального сервера. У Вас должно отобразится приветственное окно nginx.

Страница приветствия nginx по-умолчанию
Страница приветствия nginx по-умолчанию
apt-get install mariadb-server-10.3

На этом установке завершена, настройка будет происходить в последующих шагах.

Создание нового пользователя системы

Теперь перейдем к созданию пользователя, от имени которого мы будем в дальнейшем работать с удаленным сервером. Так же использование root пользователя, в качестве основного создает предпосылки к нарушению системы безопасности. Определим следующую логику создания пользователей: один сайт — один пользователь с соответствующими настройками nginx, php, mariadb и правами на каталоги своего сайта. Таким образом, если один сайт взломают, то другие будут защищены благодаря нашей настройки.
Создадим пользователя с именем test, который входит в группу www-data командой:

useradd -d /home/test -g www-data -m -s /bin/bash test

-d — определяет домашний каталог (в нашем случае /home/test)
-g — задает группу создаваемого пользователя (www-data)
-m — создает домашний каталог если он не существует
-s — устанавливает командную оболочку

Чтобы в дальнейшем мы могли выполнять какие-либо административные действия добавим созданного пользователя в группу sudo

Осталось задать пароль пользователю, выполним команду

После этого необходимо ввести пароль и повторить его (при вводе пароль не отображается)

Проверим этот путем подключения к удаленному серверу под созданным пользователем, для этого повторим шаг «Подключение по SSH»

Обратите внимание, что приглашение теперь содержит имя пользователя test и заканчивается на знак $, что это значит можно узнать выше. Продолжим настройку сервера. Переподключитесь к нему под пользователем root.

Конфигурирование php-fpm

Начнем настройку php-fpm — это программный пакет, позволяющий выполнить обработку скриптов, написанных на языке PHP.
Настройка в операционной системе Linux, в большинстве случаев, сводится к правке конфигурационных файлов. Соответсвенно, для настройки php-fpm, необходимо перейти в каталог с этими файлами. Введите команду которая сменит каталог

cd /etc/php/7.4/fpm/pool.d/

Посмотрите какие файлы есть в этом каталоге

ls -al

Как видим в этой директории есть только один файл — www.conf. Он содержит конфигурацию сайтов, которые будут запускаться на этом сервере. Теперь удалим его и создадим новый, с описанием запуска нашего сайта.

Новый файл будет состоять из следующих строк

[test.site]
listen = /run/php/php-test.sock //сокет
listen.mode = 0666 //права на запуск
user = test //пользователь от имени которого будет запущен php
group = www-data //принадлежность к группе

//задание директив php
php_admin_value[upload_tmp_dir] = /home/test/tmp  //каталог для загружаемых файлов
php_admin_value[date.timezone] = Europe/Moscow //временная зона
php_admin_value[open_basedir] = /home/test  //корневой каталог сайта
php_admin_value[post_max_size] = 512M  // максимальной размер POST
php_admin_value[upload_max_filesize] = 512M //максимальный размер загружаемого файла
php_admin_value[cgi.fix_pathinfo] = 0
php_admin_value[short_open_tag] = On //использовать короткую запись php
php_admin_value[memory_limit] = 512M //лимит оперативной памяти
php_admin_value[session.gc_probability] = 1 //настройки сессий
php_admin_value[session.gc_divisor] = 100 //настройки сессий
php_admin_value[session.gc_maxlifetime] = 28800; //максимальное время жизни сессии
php_admin_value[error_log] = /home/test/logs/php_errors.log; //файл записи лога ошибок

//задание динамических параметров
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 4

Создадим файл конфигурации test.conf, с помощью встроенного редактора nano вставим строки кода приведеные выше, и сохраним файл.

На этом настройка php-fpm закончена, переходим далее.

Конфигурация nginx

NGINX – это мощный веб-сервер, использующий не потоковую, управляемую событиями архитектуру, которая позволяет ему превосходить Apache. Приступим к его конфигурированию.
Перейдите в каталог веб-сервера

В этой папке нас интересует два каталога, которые хранят настройки сайтов — sites-available, sites-enabled. Перейдем в первый каталог sites-available

Здесь находится файл default, который содержит установки по умолчанию. Удалите его командой

С помощью редактора nano создадим файл конфигураций 00-default. (00 в начале имени файла необходим для того, файл был первым в каталоге т.к. в своей работе nginx обращается сначала к первому файлу)

Внутрь файла поместите следующий код

 server {
    listen [::]:80;
    listen      80;
    server_name "";
    return      444; # закрытие соединения без ответа
}

Данный код запрещает обращаться к сайту через ip адрес и в этом случае выводит пользователю ошибку 444.
Сохраните файл. Далее создайте второй файл конфигураций, который будет задавать правила работы с нашим сайтом

Внутрь файла поместите следующий код, потом сохраните его

upstream backend-test {
  server unix:/run/php/php-test.sock;
}

server {
	listen [::]:80;
	listen 80;
	server_name test.site; # имя нашего сайта
	access_log /home/test/logs/nginx_access.log;
	error_log /home/test/logs/nginx_error.log;
	
	gzip on;
	# Минимальная длина ответа, при которой модуль будет жать, в байтах
	gzip_min_length 1000;
	# Разрешить сжатие для всех проксированных запросов
	gzip_proxied any;
	# MIME-типы которые необходимо жать
	gzip_types text/plain application/xml application/x-javascript text/javascript text/css text/json;
	# Запрещает сжатие ответа методом gzip для IE6 (старый вариант gzip_disable "msie6";)
	gzip_disable "MSIE [1-6].(?!.*SV1)";
	# Уровень gzip-компрессии
	gzip_comp_level 6;
	
	# корневой каталог сайта
	root /home/test/test.site/www;
	index index.php;
	
	# запрет для всех для при обращению к ядру MODx из браузера
	location ~ ^/core/.* {
	  deny all;
	  return 403;
	}
	# переадресация запросов на адрес index.php
	location / {
	  try_files $uri $uri/ @rewrite;
	}
	location @rewrite {
	  rewrite ^/(.*)$ /index.php?q=$1;
	}
	
	# При обращении к файлам php будет происходить запуск сокета php который мы настраивали на предыдущем шаге (Конфигурирование php-fpm)
	location ~ .php$ {
	  try_files  $uri =404;
	  include fastcgi_params;
	  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	  fastcgi_pass backend-test;
	}
  
	# кэширование файлов с указанными расширениями
	location ~* .(jpg|jpeg|gif|png|css|js|woff|woff2|ttf|eot|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|docx|xlsx)$ {
	  try_files $uri @rewrite;
	  access_log off;
	  expires 10d;
	  break;
	}

	location ~ /.ht {
	  deny all;
	}
}

Продолжаем настройку nginx. Перейдите в каталог sites-enabled

В этом каталоге удалите ссылку на уже не существующую конфигурацию

Создайте две ссылки на конфигурационные файлы созданные выше

ln -s ../sites-available/00-default.conf
ln -s ../sites-available/01-test.sites.conf

На этом конфигурация сервера nginx завершена. Двигаемся дальше!

Конфигурация mysql

Переходим в каталог mysql.

В этом каталоге находится файл my.cnf, в котором содержатся настройки нашей системы управления базами данных. Откройте этот файл в редакторе nano и отредактируйте

В конец файла вставьте следующий код, который обеспечит работу системы MODx с базой данных без ошибок

[mysqld]
sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Теперь настроим парольный доступ root пользователя к базе данных. Для этого подключимся к СУБД

Подключение к базе сопровождается выводом ее приветствия (смотри изображение), после этого подключитесь к базе mysql. Обратите внимание, что при работе с базой данных каждая строка должна завершаться точкой с запятой, в случае ее отсутствия СУБД будет воспринимать следующую строку как продолжение предыдущей.

USE mysql;

UPDATE user SET plugin='mysql_native_password' WHERE User='root';

Такую строку можно прочитать следующим образом:»Обнови в таблице user столбец plugin на mysql_native_password для строк где в колонке User значение root». Таким образом, мы разрешили пользователю root авторизироваться в СУБД через пароль БД. Однако сам пароль мы не задали, исправим это

ALTER USER 'root'@'localhost' IDENTIFIED BY 'testtest';

Таким образом, мы задали пароль testtest для локально подключенного пользователя root. После этого, необходимо перезагрузить привелегии пользователей командой

Как проверить правильность выполненных действий? Нужно войти в операционную систему под пользователем test (его мы создали немного выше) и подключиться к СУБД как root. Делаем следующие шаги — подключаемся как test

У вас должно измениться приглашение системы на пользователя test. Теперь настала очередь подключиться к СУБД

В приведенной команде -u — определяет что следующим идет имя пользователя, -р — использовать нативный пароль mysql (именно тот что мы и настраивали). После отправки команды СУБД попросит ввести пароль (нами был задан пароль testtest). Если у Вас все получилось, то шаги, проделанные выше, выполнены правильно. Далее выйдите из СУБД, подключитесь к операционной системе как root, и от имени этого же пользователя подключитесь к СУБД. Переходим дальше.

CREATE DATABASE IF NOT EXIST test;

Создадим пользователя в базе данных с именем test и паролем testtest. В дальнейшем этот пользователь будет использоваться системой MODx для работы с базой данных.

CREATE USER 'test'@'localhost' IDENTIFIED BY 'testtest';

Определим для созданного пользователя права при подключении к СУБД

GRANT USAGE ON *.* TO 'test'@'localhost' IDENTIFIED BY 'testtest' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

Выдадим пользователю test все привилегии, на созданную, базу данных с правом ее передачи

GRANT ALL PRIVILEGES ON test.* TO 'test'@'localhost' WITH GRANT OPTION;

После этого необходимо перезагрузить привилегии пользователей командой

Проверьте правильность выполненных шагов следующим образом: подключитесь к СУБД под пользователем test.

Создание недостающих каталогов и перезапуск сервисов

На данном этапе мы выполним следующие шаги:

  1. Подготовка каталогов, которые мы использовали в настройках;
  2. Перезапуск сервисов.

Для правильной установки и функционирования MODx осталось создать недостающие каталоги. Выполните следующие команды

sudo -u test mkdir /home/test/tmp
sudo -u test mkdir /home/test/logs
sudo -u test mkdir /home/test/test.site
sudo -u test mkdir /home/test/test.site/www

В приведенных командах, как Вы заметили, операции по созданию каталогов (mkdir) выполняются с правами супер пользователя (sudo), от имени пользователя test (-u test). Это сделано с целью, чтобы пользователь test был владельцем этих каталогов и имел, по отношению к ним, полные права. После выполнения команд проверьте структуру каталога, там должны были появиться созданные нами папки.

Практически все готово к установке MODx, осталось перезапустить службы php, nginx, mysql. Это связано с тем, что настройки всех сервисов содержаться в текстовых файлах и считываются только при запуске служб. Выполните команды

sudo service php7.4-fpm restart
sudo service nginx restart
sudo service mysql restart

Так как, мы запретили подключение по ip адресу, то необходимо в локальном файле hosts указать переадресацию. Добавьте следующую строку в конец файла (Ваш ip адрес может отличаться от того, который приведен в примере)

Проверьте правильность выполненных действий. Введите в адресную строку браузера ip адрес сервера, Вам должна выдаться ошибка 444.

Если обратитесь по имени сайта, то ошибка должна следующей

Это является свидетельством, что все настроено правильно на данном этапе инструкции.

Установка MODX

Перед установкой MODx необходимо его дистрибутив поместить на наш виртуальный сервер. Для этого будем использовать текстовый загрузчик wget. Давайте установим его

На официальном сайте MODx скопируйте ссылку на дистрибутив (в моем случае она имеет вид https://modx.com/download/direct?id=modx-2.7.3-pl.zip&0=abs). Теперь с помощью программы wget сохраним его в каталоге /home/test/test.site/www/ командой

wget -P home/test/test.site/www/ https://modx.com/download/direct?id=modx-2.7.3-pl.zip&0=abs  

После скачивания проверьте, что в каталоге www присутствуют следующие файлы и папки (для разных версий MODx состав может незначительно отличаться)

Приступим к установке MODx. В адресную строку строку браузера введите

Откроется окно выбора языка, оставьте русский и нажимайте «ДАЛЕЕ»

Выберите пункт «НОВАЯ УСТАНОВКА», нажмите «ДАЛЕЕ»

В этом окне установите базу данных mysql, сервер — localhost, имя пользователя — test, укажите его пароль (testtest), имя базы данных — test, кодировка подключения — utf8, сопоставление — utf8_general_ci.

Теперь придумайте логин и пароль администратора сайта

Удостоверьтесь, что в отчете об установке все компоненты установлены и работают

Нажмите войти и введите регистрационные данные администратора сайта

На этом установка MODx закончена.

Заключение

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

Другие статьи

Узнавайте первым о новых курсах и лекциях

Понравилась статья? Поделить с друзьями:
  • Сироп алтейка с исландским мхом инструкция по применению
  • Беталейкин инструкция по применению цена отзывы аналоги
  • Розетка с таймером механическая инструкция по применению видео смотреть
  • Трактор т40 руководство по эксплуатации
  • Скачать бесплатно руководство по эксплуатации авео