Что значит развернуть сервер

от admin

Разворачиваем локальный сервер на Windows


Несколько дней назад меня очередной раз посетила Мысль. Мысль была не нова и довольна навязчива: «давай перейдем на Windows8. Ну пожааалуйста». И так как отогнать её никак не получалось, я запаслась чаем и печеньками и приступила.

На установку системы и всех необходимых программ ушло не более двух часов, но затем наступил самый интересный момент: мне нужно было развернуть рабочее окружение, а именно — GIT + локальный сервер (Apache, MySQL, PHP, nginx, memcached, mongodb). Помятуя об опыте предыдущих установок, на этот раз я решила весь процесс задокументировать и сохранить для потомков.

Итак, приступим.

Наш план работ включает установку следующих продуктов:

  1. PuTTY
  2. GIT
  3. Denwer (Apache, MySQL, PHP)
  4. Nginx
  5. Memcached
  6. MongoDB

1. PuTTY

PuTTY — свободно распространяемый клиент для различных протоколов удалённого доступа, включая SSH, Telnet, rlogin.

В состав PuTTY входит несколько утилит, но мне в работе нужны только он сам и Pegeant (агент SSH-аутентификации, в котором хранятся ключи от git-репозиториев).
Офсайт: перейти
Если вам не нужны никакие SSH-и, забудьте об этом пункте и идём дальше.

2. GIT

Для работы с git я уже не первый год использую TortoiseGit, который стабилен, гуёв и на 146% закрывает все мои потребности. Вобщем, рекомендую.

Офсайт: перейти

2.1 Для работы TortoiseGit требуется git для Windows, который можно забрать на гуглекоде;
2.2 сам TortoiseGit устанавливаем отсюда

3. Denwer

Денвер — Джентльменский набор Web-разработчика («Д.н.w.р», читается «Денвер») — проект Дмитрия Котерова, набор дистрибутивов (Apache, PHP, MySQL, Perl и т.д.) и программная оболочка, используемые Web-разработчиками для разработки сайтов на «домашней» (локальной) Windows-машине.
Офсайт: перейти

3.1 Установка

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

Лирическое отступление:

Обычно установка денвера проходит быстро и безболезненно, но на Windows8 на меня напала ошибка, которая ругалась на отсутствующую библиотеку msvcr71.dll. Библиотеку можно забрать здесь и положить в папку «\Windows\System32\» (x32) или «\Windows\SysWOW64\» (x64). После того, как файл улегся в папку, откройте его свойства и нажмите кнопку «Разблокировать».

3.2 Проверка работоспособности

После установки Денвера, создадим тестовый скрипт, на котором будем проверять работоспособность всего того, что мы установим впоследствии.
Идем в Z:\home и добавляем новый сайт: создаем папку test.local, в ней папку «www», в которую добавляем файл index.php с невероятно креативным текстом:

Перезапускаем Денвер, открываем в браузере www.test.local, впечатляемся и идём дальше

4. Memcached

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

Memcache — расширение для php, предоставляет удобный процедурный и объектно-ориентированный интерфейс к memcached, высокоэффективному кеширующему демону, который был специально разработан для снижения нагрузки на базу данных в динамических веб приложениях.

4.1 Установка memcached

А. скачиваем архив с бинарником: Memcached 1.4.5 for Windows отсюда
В. распаковываем содержимое архива в \usr\local\memcached

4.2 Установка memcache

А. скачиваем архив с библиотекой отсюда
В. распаковываем содержимое архива в \usr\local\php5\ext\
С. открываем файл php.ini (\usr\local\php5\php.ini) и подключаем расширение:
extension=php_memcache.dll

4.3 Настраиваем запуск Memcached вместе с запуском Denwer

  1. написать скрипт, содержащий команды запуска и останова приложения/ сервиса и положить его в папку\denwer\scripts\init.d
  2. создать ссылку на этот скрипт в папке конфигурации запуски/останова \denwer\scripts\main\

А. создаём файл с именем «memcached.pl» в директории \denwer\scripts\init.d\

  • \denwer\scripts\main\start
  • \denwer\scripts\main\stop
  • \denwer\scripts\main\restart

4.4 Проверяем результат

В наш тестовый скрипт (index.php) добавляем:

Перезапускаем Денвер и смотрим, что получилось

5. Nginx

Nginx — простой, быстрый и надёжный сервер, не перегруженный функциями.

Офсайт: перейти

5.1 Настройка Nginx

A. скачиваем с офсайта Windows-версию и распаковываем в \usr\local\nginx
B. настраиваем виртуальный хост для нашего тестового сайта. Для этого открываем \usr\local\nginx\conf\nginx.conf и добавляем туда

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

5.2 Настройка Apache

По-умолчанию Апач работает на 80-м порту, но мы только что отдали этот порт Nginx-у, поэтому теперь необходимо изменить шаблон для виртуального хоста в настройках апача и назначить ему порт, отличный от 80-го (например, 8080).
Открываем \usr\local\apache\conf\httpd.conf и изменяем номер порта

5.3 Настраиваем запуск Nginx вместе с запуском Denwer

A. создаём файл с именем «nginx.pl» в директории \denwer\scripts\init.d\

  • \denwer\scripts\main\start
  • \denwer\scripts\main\stop
  • \denwer\scripts\main\restart

5.4 Проверяем результат

Положим рядом со скриптом файл style.css с содержанием

И облагородим наш index.php:

Теперь перезапускаем Денвер и любуемся результатом. Если CSS-файл подключился – Nginx работает нормально.

6. MongoDB

MongoDB — документо-ориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц.

Офсайт: перейти

6.1 PHP-driver

А. Скачиваем библиотеку php_mongo.dll с этого сайта: и закидываем в папку \usr\local\php5\ext\
Методом проб и ошибок было установлено, что подходящий драйвер содержится в архиве mongo-1.2.5.zip/mongo-1.2.5-php5.3vc9ts.zip. Если у вас по какой-то причине не заведётся, попробуйте другие версии.

B. подключаем расширение в php.ini
extension=php_mongo.dll

6.2 Установка Mongo

  1. db
  2. logs

B. устанавливаем службу
> cd C:\WebServers\usr\local\mongodb\bin\
> mongod.exe —install —dbpath=C:\WebServers\usr\local\mongodb\db\ —logpath=C:\WebServers\usr\local\mongodb\logs\

6.3 Настраиваем запуск MongoDB совместно с денвером

A. создаём файл с именем «mongod.pl» в директории \denwer\scripts\init.d\

  • \denwer\scripts\main\start
  • \denwer\scripts\main\stop
  • \denwer\scripts\main\restart

6.4 Проверяем результат

Запустим консольный интерфейс mongo
> Z:\usr\local\mongodb\bin\mongo.exe

и выполним вставку и вывод тестового значения в базу “test”
> db.test.save( < name: “Habr!” >)
> db.test.find()

В результате должно получиться следующее:

6.5. Установка интерфейса управления Mongo-базами

На офсайте MongoDB есть список и краткие обзоры админок, так что можно выбрать по вкусу.
Я для себя выбрала RockMongo, поэтому именно с её помощью мы окончательно удостоверимся, что у нас всё работает и никуда не падает.

А. скачиваем архив с админкой с этой страницы. Выбираем, естественно, версию для Windows. На момент написания статьи это RockMongo-on-Windows v0.0.4

B. из архива берём папку \rockmongo-on-windows\web\rockmongo и копируем её в директорию нашего тестового сайта
Открываем config.php и меняем значение параметра

C. Проверяем результат по ссылке www.test.local/rockmongo/index.php

Поздравляю! Теперь мы окончательные и бесповоротные молодцы.

Бонус №1. Работа с php из консоли Windows

Возможно, кому-то пригодится. Мне вот пригодилось, когда наш злобный техлид решил, что «SQL-файлы – это ващепрошлыйвек, давайте юзать миграции». Я, конечно, для приличия попыталась изобразить полное непонимание и даже пустить слезу, но была разоблачена и отправлена разбираться с тем, как это работает на Windows.
Оказалось, что всё что нужно для счастья – это прописать PHP директорию в PATH.

Нажимаем на «Изменить» и добавляем в конец строки
;Z:\usr\local\php5

Теперь проверим, что всё заработало.
В директории тестового сайта создадим файл console.php

Открываем консоль (можно прям из этой же папки – щелкаем правой кнопкой мыши с зажатым SHIFT-ом на пустом месте и выбираем пункт «Открыть окно команд»).
Вводим:
> php console.php “UserName”

Консоль отвечает:
> “Hello, UserName!”

PHP побеждён, всеобщее ликование, апплодисменты, занавес.

Бонус №2.

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

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

Что значит развернуть сервер


Несколько дней назад меня очередной раз посетила Мысль. Мысль была не нова и довольна навязчива: «давай перейдем на Windows8. Ну пожааалуйста». И так как отогнать её никак не получалось, я запаслась чаем и печеньками и приступила.

  1. PuTTY
  2. GIT
  3. Denwer (Apache, MySQL, PHP)
  4. Nginx
  5. Memcached
  6. MongoDB

1. PuTTY

PuTTY — свободно распространяемый клиент для различных протоколов удалённого доступа, включая SSH, Telnet, rlogin.

2. GIT

Для работы с git я уже не первый год использую TortoiseGit, который стабилен, гуёв и на 146% закрывает все мои потребности. Вобщем, рекомендую.

Офсайт: перейти

3. Denwer

4. Memcached

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

4.1 Установка memcached
4.2 Установка memcache
4.3 Настраиваем запуск Memcached вместе с запуском Denwer
  1. написать скрипт, содержащий команды запуска и останова приложения/ сервиса и положить его в папку\denwer\scripts\init.d
  2. создать ссылку на этот скрипт в папке конфигурации запуски/останова \denwer\scripts\main\
  • \denwer\scripts\main\start
  • \denwer\scripts\main\stop
  • \denwer\scripts\main\restart

Перезапускаем Денвер и смотрим, что получилось

5. Nginx

Nginx — простой, быстрый и надёжный сервер, не перегруженный функциями.

Офсайт: перейти

5.1 Настройка Nginx
5.2 Настройка Apache
5.3 Настраиваем запуск Nginx вместе с запуском Denwer
  • \denwer\scripts\main\start
  • \denwer\scripts\main\stop
  • \denwer\scripts\main\restart

Теперь перезапускаем Денвер и любуемся результатом. Если CSS-файл подключился – Nginx работает нормально.

6. MongoDB

MongoDB — документо-ориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц.

Офсайт: перейти

6.1 PHP-driver
6.2 Установка Mongo
  1. db
  2. logs
6.3 Настраиваем запуск MongoDB совместно с денвером
  • \denwer\scripts\main\start
  • \denwer\scripts\main\stop
  • \denwer\scripts\main\restart

В результате должно получиться следующее:

6.5. Установка интерфейса управления Mongo-базами

C. Проверяем результат по ссылке www.test.local/rockmongo/index.php

Бонус №1. Работа с php из консоли Windows

Возможно, кому-то пригодится. Мне вот пригодилось, когда наш злобный техлид решил, что «SQL-файлы – это ващепрошлыйвек, давайте юзать миграции». Я, конечно, для приличия попыталась изобразить полное непонимание и даже пустить слезу, но была разоблачена и отправлена разбираться с тем, как это работает на Windows.
Оказалось, что всё что нужно для счастья – это прописать PHP директорию в PATH.

Нажимаем на «Изменить» и добавляем в конец строки
;Z:\usr\local\php5

Консоль отвечает:
> “Hello, UserName!”

Как создать свой хостинг (сервер) дома для веб-сайта (чтобы сайт был доступен из локальной сети и Интернет). Простейший пример в Open Server при работе в Windows

img-Svoy-server-doma.png

Если вы создаете свой сайт и хотите, чтобы он работал только в вашей локальной сети, либо вам нужно сначала его «от и до» протестировать, прежде чем выкладывать в сеть (/либо надумали сэкономить средства на платном хостинге) — можно для этого дела «приспособить» свой домашний ПК/ноутбук (сделать его эдаким сервером). Этим, собственно, мы сегодня и займемся.

Благо, что настраивается это всё достаточно легко (самые большие сложности — обеспечить ему стабильность, ведь далеко не каждый из нас сможет ежедневно/ежечасно контролировать работу компьютера, его подкл. к Интернет, нагрузку ЦП и пр. Но об этом я пару слов скажу в итогах).

Еще пара важных нюансов : способ, изложенный ниже, актуален для ОС Windows 10/11; компьютер должен быть подключен или к локальной сети / или к Интернет (в моем примере ПК подкл. к обычному дом. Wi-Fi роутеру, а он в свою очередь к Интернет).

Итак, теперь к делу.

ускорение ПК

Пошаговые действия

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

ШАГ 1

В качестве веб-сервера я бы порекомендовал остановиться на 📌Open Server. Он достаточно удобный, надежный, имеет кучу опций (можно выбрать версию PHP, MySQL, настроить авто-выполнение скриптов и пр.). Весь перечень функций приведен на офиц. сайте.

После установки (стандартная, поэтому ее не описываю) и запуска Open Server — у вас в трее должен появиться зеленый флажок (значит веб-сервер работает и с ним все в порядке!). 👇

Кстати, часто Open Server не хочет запускаться из-за отсутствия 📌Microsoft Visual C++ (при установке веб-сервера — не отказывайтесь от загрузки этих пакетов).

img-OpenServer-ustanovlen.png

Open Server установлен и запущен! Горит зеленый флажок в трее, рядом с часами

ШАГ 2

Далее нужно зайти в папку установки Open Server и открыть каталог «Domains» (в моем случае весь путь такой: C:\openserver5.2\domains ).

В этом каталоге нужно создать папку с именем вашего домена (адреса сайта) , например: testforme.site (можно использовать и testforme.ru , и testforme.com , и даже yandex.ru т.д.*). 👇

📌* Но крайне желательно: выбрать такой домен/адрес сайта, который никем не занят, чтобы в последствии вы могли его зарегистрировать у регистратора, если надумаете открывать сайт для доступа из Интернет. Проверку домена на занятость можно выполнить у Рег.ру.

👉 Примечание : в созданном каталоге с именем домена (в моем случае testforme.site ) нужно разместить файлы сайта: движок, HTML-страницы и т.д. В своем примере я создал в этом каталоге 1 файл index.php и добавил в него короткую строку: «Привет! Этот сайт открылся с дом. хостинга» ). Этого хватит для проверки. Установку движка WordPress рассмотрел в конце статьи, здесь не хочу загромождать.

img-Papka-imya-domena-v-ney-fayl-index.php-dvizhok-sayta.png

Папка = имя домена (в ней файл index.php, движок сайта)

Настройка Open Server для доступа к сайту по локальной сети (по IP и по доменному имени)

ШАГ 3

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

img-Nastroyki-Open-Server-klik-po-znachku-v-tree-v-menyu-vyibrat-onoe.png

Настройки Open Server — клик по значку в трее, в меню выбрать оное

Далее в меню «Модули» укажите необходимую версию PHP, MySQL и пр. для работы вашего сайта. Думаю, что для тестового файла (пока что. ) — можно задать параметры примерно как у меня на скрине ниже. 👇

img-Mozhno-vyibrat-versiyu-PHP-MySQL-i-pr.-----moduli-v-Open-Server.png

Можно выбрать версию PHP, MySQL и пр. — модули в Open Server

В меню «Сервер» нужно изменить парочку опций:

  1. разрешить запуск сервера в агрессивном режиме (чтобы допустить его работу, если возникнут незначительные ошибки);
  2. установить пункт «Все доступные IP» в пункте «IP-адрес сервера» ;
  3. затем нужно нажать по меню «Сохранить» .

img-Vse-dostupnyie-IP-perezagruzka.png

Все доступные IP, перезагрузка

Далее нам нужно узнать 📌локальный IP адрес компьютера, на котором запущен Open Server (по нему можно будет открывать сайт).

Самый простой способ узнать его — 📌открыть настройки роутера и посмотреть список подключенных устройств (впрочем, есть и др. способы). В моем случае напротив имени ПК «alex-pc» значится адрес 192.168.1.2 (он и нужен!). 👇👇

Примечание : кстати, в настройках роутера неплохо было бы сделать этот IP (192.168.1.2, например) постоянно закрепленным за вашим компьютером. Иначе есть риск, что через неск. дней этот IP роутер даст другому компьютеру в вашей сети.

img-Nastroyki-routera-uznaem-svoy-lokalnyiy-IP.png

Настройки роутера — узнаем свой локальный IP

Затем в настройках Open Server в разделе «Алиасы» нужно добавить:

  • в строку «Исходный домен» свой локальный IP (192.168.1.2 в моем случае);
  • в строку «Конечный домен» адрес/домен своего сайта (testforme.site в моем случае). 👇

img-Altasyi-privyazyivaem-IP-k-domenu.png

Алиасы — привязываем IP к домену

👉 По IP 192.168.1.2 — сайт теперь будет доступен со всех ПК/ноутбуков/телефонов в локальной сети (т.е. тех, которые подключены к Wi-Fi сети вашего роутера, например).

👉👉По доменному имени testforme.site — сайт будет доступен только с того компьютера, на котором запущен Open Server. Чтобы сайт был доступен по доменному имени на другом ПК/ноутбуке в локальной сети — нужно на нем открыть блокнот и изменить 📌системный файл hosts (добавить в него строку вида: 192.168.1.2 testforme.site ).

img-iz-fayla-hosts.png

Пример. Из файла hosts

Как это выглядит на примере приведено ниже 👇 (обратите внимание на адресную строку браузера — т.е. сайт доступен одновременно и по IP, и по домену).

img-Teper-sayt-dostupen-v-lokalnoy-seti-dostatochno-ukazat-ego-IP-v-adresnoy-stroke-brauzera.png

Теперь сайт доступен в локальной сети, достаточно указать его IP в адресной строке браузера

Как открыть доступ к сайту из сети Интернет по IP и по доменному имени

Реализуемость этой «штуки» во многом зависит от вашего Интернет-провайдера. Дело в том, что внешний IP-адрес у вас может быть «белым» и «серым» (со втором ничего не получится. ) . Чаще всего провайдеры сегодня выделяют динамический белый IP, и в этом случае всё должно работать (до смены этого IP).

В общем, в идеале нужно заказать у провайдера услугу выделения «белого статического IP-адреса» (у некоторых компаний услуга уже включена по умолчанию, и вам не нужно ничего делать; у других — покупается и подкл. отдельно: где-то дешево / где-то дорого. ).

В любом случае — попробовать нижеописанное труда не составит (даже, если вы ничего не поняли из вышесказанного и не знаете какой у вас IP)! 🙂

ШАГ 4

Итак.

Сначала нужно узнать свой 📌внешний IP адрес. Для этого достаточно, как уже говорил выше, открыть 📌настройки роутера и посмотреть вкладку «Состояние / инф. о подключении» (в моем примере внешний IP: 92.252.216.210). Запоминаем его!

Далее нам нужно в настройках роутера пробросить порты 80 и 443 на тот ПК, на котором расположен сайт (эти порты по умолчанию используются для подкл. к сайту по http\https). Более простой вариант — ничего вручную не пробрасывать, а просто включить DMZ-хост для вашего ПК (т.е. DMZ для вашего локального IP). Ссылка ниже в помощь! 👇

img-Uznaem-svoy-IP-adres-on-dolzhen-byit-belyim-i-probrasyivaem-portyi.png

Узнаем свой IP-адрес (он должен быть белым!), и пробрасываем порты

Затем в настройках Open Server необходимо открыть вкладку «Алиасы» и связать там свой внешний IP с доменным именем. См. скрин ниже. 👇

img-Dobavlyaem-vneshniy-IP-v-aliasyi-Open-Server.png

Добавляем внешний IP в алиасы — Open Server

Попробуйте после этого набрать свой внешний IP в адресной строке браузера (с любого ПК/телефона/ноутбука, подкл. к Интернет). Должен открыться ваш сайт! 👇

Половина задачи выполнена!?🙂

img-Sayt-otkryivaetsya-po-IP.png

Сайт открывается по IP

ШАГ 5

Если вы хотите, чтобы сайт был доступен по сети Интернет с любого устройства по доменному имени — понадобиться его зарегистрировать. Сделать это можно у спец. 📌регистраторов, например, 📌Бегет / 📌Рег-ру (и при усл., что ваше желаемое имя никем не занято!).

После регистрации доменного имени (покажу на примере Бегет и Рег-ру) — необходимо открыть управление DNS записями и создать запись вида «A 92.252.216.210» (разумеется, указать нужно свой внешний IP!). Т.е. мы этой операцией «говорим» какой IP открывать при обращении к домену!

img-Menyaem-A-zapis-v-nastroykah-DNS-u-registratora-domenov-ili-u-DNS-hostinga.png

Меняем A-запись в настройках DNS (у регистратора доменов или у DNS-хостинга)

Кстати, у Рег-ру нужно выбрать беспл. DNS серверы (их), а затем появится возможность добавить A-запись.

img-Reg-ru-----ukazyivaem-IP-adres-servera-po-kotoromu-budet-otkryivatsya-sayt.png

Рег-ру — указываем IP-адрес сервера, по которому будет открываться сайт

Затем останется подождать 15-60 мин. (обычно). Сначала при попытке открыть «наш» сайт по доменному имени будет появл. заглушка регистратора, но когда записи обновятся — предстанет сайт!

Важный момент: сайт перестанет открываться, когда провайдер изменит ваш внешний IP-адрес, либо вы выключите свой компьютер (на котором открыт Open Server).

img-CHerez-15-min.-sayt-stal-otkryivatsya-po-ukazannomu-IP-vsyo-rabotaet.png

Через 15 мин. сайт стал открываться по указанному IP — всё работает!

Установка движка (например, WordPress) в Open Server

ШАГ 6

1) Сначала потребуется загрузить движок сайта на ПК (обычно, это архив формата ZIP). Для примера я взял WordPress — офиц. сайт: https://ru.wordpress.org/download/releases/

2) Затем нужно запустить Open Server, нажать ПКМ по значку в трее и открыть PHPMyAdmin. См. пример ниже. 👇

Прим.: логин root, пароль вводить не нужно!

img-Otkryivaem-nastroyki-Open-Server-PHPMyAdmin.png

Открываем настройки Open Server — PHPMyAdmin

3) После нужно создать базу данных, я для примера ввел «test1» и нажал кнопку «Создать» . См. ниже. 👇

img-Sozdat-bazudannyih-polzovatel-root-parolya-net.png

Создать базу данных (пользователь root, пароля нет)

4) Затем в папке «Domains» (она в каталоге с файлами Open Server) нужно создать папку с доменным именем вашего сайта и извлечь в нее архив с файлами движка WordPress (в моем случае путь получился таким: C:\openserver5.2\domains\testforme.site ).

У WordPress за подключение к БД отвечает файл «wp-config-sample.php» — переименовываем его в «wp-config.php» и открываем для редактирования!

img-Raspakovyivaem-faylyi-WordPress-v-papku-domen-nashego-sayta.png

Распаковываем файлы WordPress в папку-домен нашего сайта

5) В строку с «DB_NAME» указываем имя нашей созданной базы (в моем случае test1 ), в «DB_USER» вставляем root , а пароль в строке «DB_PASSWORD» оставляем не заданным. См. пример ниже. 👇

img-WP-config.php-menyaem-fayl.png

Как выглядит открытый wp-config.php в блокноте — редактируем файл

6) Теперь, если открыть адрес нашего сайта в браузере (если вдруг не откроется — перезапустите Open Server!) , — появится приветственное меню с установкой WordPress. Осталось только дать имя сайту, ввести логин и пароль для доступа к админ-панели, и установить движок.

Читать:
Как определить силу давления перегрузка на груз

img-Ustanovka-Wordpress.png

7) Сайт заработал на WordPress! Панелька появилась сверху — вы можете открыть ее для смены темы, добавления новостей и заметок, и пр.

img-Rabotaet.png

img-Vyiklyuchil-PK-na-kotorom-Open-Server-i-sayt-srazu-zhe-perestal-rabotat.png

На телефоне тоже открывается! Кстати, как только выключил ПК (на котором Open Server) — сайт сразу же перестал работать. 🙂

Итоги

ШАГ 7

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

Однако, есть свои минусы, которые могут любое удобство и экономию превратить в прямо-противоположное:

  1. во-первых , нужен статический «белый» IP адрес (как правило, это отдельная услуга у вашего Интернет-провайдера. Иногда цена на него стоит дороже, чем 📌арендовать платный хостинг/сервер);
  2. во-вторых , ПК с веб-сервером и сайтом должен работать 24 часа в сутки (либо посетители должны знать, когда на него заходить 🙂);
  3. в-третьих , желательно подкл. 📌к двум Интернет-провайдерам, чтобы обеспечить бесперебойный доступ;
  4. в-четвертых , сайт желательно разместить на SSD накопителе (так он будет открываться быстрее);
  5. в-пятых , если у вас будет много посетителей, или сайт будет предлагать какую-то ресурсоемкую услугу — то ваш ЦП может начать «испытывать» высокую нагрузку. За ПК работать может стать не комфортно.
  6. в-шестых , вам нужно на регулярной основе следить за всем этим «добром»: чтобы Интернет работал, IP не менялись, ПК не перегревался (и работал 24 часа в сутки) и пр.

📌 Взвесив все «За» и «Против» получается, что заниматься этим для экономии средств — практически бессмысленно (по крайней мере, во многих случаях).

Другое дело, если вам требуется сделать небольшой форум в лок. сети для друзей, или вы проводите испытания своего сайта перед «большим заплывом» — то почему нет?! 🙂

Что нужно, чтобы развернуть сайт интернет-магазина: решаем технические вопросы

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

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

Если вы хотите запустить собственный интернет-магазин, то он может быть построен на основе решения, созданного вашими программистами, или на базе уже готовой CMS для управления контентом сайта вроде WordPress или Joomla!.

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

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

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

Здесь может быть три основных варианта:

  • Собственное оборудование. Купить или арендовать «железные» серверы и развернуть все на них. Это дорого, долго и сложно: серверы придется закупать, настраивать и обслуживать. Кроме того, нужно будет самостоятельно разворачивать и обслуживать инфраструктуру для работы вашего решения, например платформу виртуализации и/или контейнеризации приложений.
  • Виртуальный хостинг. Вы размещаете сайт на наборе веб-серверов хостинг-провайдера, заранее сконфигурированном под определенный стек инструментов. Он выделяет вам часть ресурсов: место на диске, мощность процессора, объем оперативной памяти. Этот способ быстрый, но не самый удобный: у виртуального хостинга негибкая система оплаты и мало настроек. Кроме того, расширить функциональность сайта в будущем получится только в рамках стандартного стека технологий. Такие хостинги обычно ограничены наиболее популярными технологическими стеками, например позволяют использовать только Apache/MySQL/PhP, а если нужен более редкий инструмент, то установить его не выйдет.
  • Облачный хостинг. Здесь вы берете в аренду часть ресурсов платформы, в которой реализована высокая степень автоматизации и возможностей по самообслуживанию. Вы сможете развернуть виртуальный сервер, создавать сети, пользоваться платформой контейнеризации, СУБД, очередями сообщения и другими сервисами без затрат времени и труда. Виртуальный сервер вы можете настраивать на свое усмотрение, выбирать нужную мощность, подключать дополнительные меры защиты. И при этом будете платить только за ресурсы, которые использовали. А обслуживанием самой платформы займется облачный провайдер.

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

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

Как запустить и настроить решение. Готовый облачный хостинг с уже установленной CMS предлагают многие облачные провайдеры. Например, на платформе Mail.ru Cloud Solutions есть маркетплейс, где можно в пару кликов запустить облачный сервер в нужной конфигурации с предустановленным WordPress, настроить эту CMS и буквально за полчаса получить работающий сайт.

Для настройки сервера надо будет выбрать подходящую конфигурацию виртуальной машины, размер диска и его тип — от стандартных HDD до быстрых High-IOPS SSD-дисков. Выбор типа диска зависит от требуемой производительности: чем больше посетителей будет у вашего магазина и чем больше вы будете хранить данных, тем производительнее должна быть дисковая подсистема.

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

Особенности. Скорость запуска и минимум настроек — большие плюсы готового решения с предустановленным WordPress, однако есть и минусы. Это шаблонное решение, которое подойдет только для несложных проектов или тестовой среды. Такая виртуальная машина не будет оптимизирована под ваш сайт на 100%, правда, к ней можно прикрутить сложные и самописные решения. Но здесь уже требуется самостоятельное развертывание, сопровождение и настройка, то есть логичнее взять обычный облачный хостинг, если нужны такие возможности. Также в данном решении построить масштабируемую инфраструктуру с механизмами высокой надежности можно только вручную, запустив несколько машин с Wordpress и донастроив необходимые механизмы своими силами или с помощью экспертов провайдера. При этом от аппаратных сбоев такая ВМ защищена на уровне платформы.

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

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

Здесь также можно подобрать оптимальную конфигурацию виртуальных машин, тип и размер диска, добавить особые настройки по заказу: высокопроизводительные процессоры и диски NVMe со скоростью отклика 0.5 мс и SLA 99,95%. Кроме того, можно выбрать операционную систему или загрузить свой образ, то есть вы получаете более гибкие настройки.

Точно так же, как в первом случае, надо будет настроить доступ к вашему сайту через интернет, в том числе настроить DNS, добавить SSL-сертификат, указать внешний IP-адрес, сконфигурировать фаервол для обеспечения безопасности.

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

Кроме базовых настроек сервера, в этом случае нужна дополнительная работа администраторов компании. Вам надо будет установить на виртуальную машину платформу для работы вашей CMS или приложения, например стек LAMP с MySQL. Потом устанавливаем WordPress, любую другую CMS или любое ваше самописное приложение. У нас есть инструкция о том, как установить WordPress и как установить Joomla!.

Если вы используете стек LAMP, то приложение интернет-магазина и база данных пользуются одними и теми же ресурсами сервера (CPU, память), что может замедлить его работу и усложнить поиск неисправностей. Поэтому часто СУБД выносят отдельно. Для хранения информации о клиентах и транзакциях в интернет-магазинах обычно используют реляционные базы данных вроде MySQL и PostgreSQL. Их можно получить как сервис у провайдера — уже настроенные и полностью готовые к работе.

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

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

Как запустить и настроить решение. Можно использовать такой платформенный сервис, как облачный Kubernetes. Это сложнее, чем работа с простыми виртуальными серверами, зато позволяет сделать сайт более надежным и гибким.

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

Для управления такими контейнерами используют специальные инструменты, один из них — Kubernetes, который сейчас стал стандартом де-факто в этой сфере. Он позволяет быстро запускать контейнеры, распределять между ними нагрузку, мониторить их состояние и при необходимости перезагружать. Такой подход делает систему более отказоустойчивой: Kubernetes автоматически следит за запущенными приложениями и перезапускает их, если где-то возник сбой, в том случае, если параметры сервисов корректно настроены пользователем. Также снижается риск при обновлении ПО: новый код можно выкатить только на часть контейнеров, проверить и только потом распространить обновление на всю систему без прерывания работы сервиса.

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

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

Для данных, которые быстро меняются, например каталогов товаров, корзины, списка пользователей или данных о заказах, стоит использовать СУБД, а для их работы нужны диски, то есть стандартные блочные хранилища, в частности HIgh-IOPS SSD или NVMe с высокой скоростью отклика. Они обладают достаточной производительностью, чтобы обеспечить нужную скорость обработки обращений и данных пользователей, значит, ваши покупатели смогут быстро оформлять заказы и просматривать товары.

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

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

Если файлов и запросов к ним немного, проблем обычно нет и дисков вполне хватает. Но если магазин большой и у него много контента, можно попробовать альтернативу — облачные S3-хранилища. Они устроены иначе, чем классические диски:

  • К одному файлу могут одновременно общаться миллионы пользователей, и скорость загрузки от этого не падает.
  • Для больших объемов данных хранилище гораздо дешевле традиционных дисков. К примеру, хранение 1 ТБ данных на дисках обойдется примерно в 11 600 ₽/мес., а в S3-хранилище — примерно в 1750 ₽/мес.
  • Хранилище автоматически расширяется практически неограниченно, вместе с ростом объема файлов. То есть ситуации, что вам не хватит места для новых данных, никогда не возникнет.
  • У S3-хранилища высокая отказоустойчивость, данные распределены по разным зонам доступности. За счет этого достигается высокий SLA на хранение данных 99,9999%.
  • Файлы будут лежать не на вашем сайте, а в отдельном месте. Обрабатывать обращения к ним будет сам сервис объектного хранилища. Благодаря этому нагрузка на ваш сервер будет ниже и даже тяжелые видео не замедлят его загрузку.

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

Чтобы лучше понять, как это работает, вспомните любой онлайн-кинотеатр — большинство из них, например Netflix, хранят данные в объектном хранилище. И там вы заходите на сайт, кликаете по видео и сразу же начинаете просмотр — при этом вы попадаете в S3-хранилище, но доступа к изменению ролика или просмотру других файлов в нем у вас нет.

S3-хранилище отличается высокой производительностью, но есть предельный уровень нагрузки, который различается на конкретных проектах. То есть в зависимости от того, как организована работа с данными в приложении и количества обращений, в какой-то момент можно упереться в потолок производительности сервиса. В этом случае надо пересматривать структуру данных и переписывать приложение, либо подключить к хранилищу сеть доставки контента (CDN), что будет дешевле и проще. С помощью технологии CDN медиафайлы вашего интернет-магазина будут быстро загружаться даже у пользователей, которые находятся далеко от серверов — где-нибудь во Владивостоке или в США. Для этого контент дублируется на промежуточных узлах — серверах, которые расположены в разных городах и странах, они работают на быстрых дисках и находятся близко к магистральным каналам связи. Например, для жителя Владивостока сайт будет загружаться с сервера в Приморском крае.

На платформе Mail.ru Cloud Solutions есть облачное хранилище S3. Мы предоставляем его как готовый сервис — все уже настроено и защищено, вам останется только интегрировать хранилище со своим интернет-магазином. Также можно в один клик подключить к нему сеть доставки контента.

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

Можно использовать AntiDDoS-защиту, ее может предоставлять провайдер; если нет, то нужно подключить отдельное решение. Также можно использовать сложные системы по фильтрации трафика приложения, например WAF, Web Application Firewall — защитный экран, предназначенный для веб-приложений и сайтов. Вот что он умеет:

  • Защита от DDoS-атак. Когда на сайт автоматически посылают огромное количество запросов, защитный инструмент просто не пропустит их, и сайт будет работать в нормальном режиме.
  • Технический анализ трафика. Инструмент в автоматическом режиме смотрит на трафик, поступающий на сервер от пользователей, и анализирует, обращается к интернет-магазину реальный человек или бот. Это определяется по ряду показателей: поведение, время в сети, операционная система и так далее. После определения бота можно сразу отсечь, он не попадет на ваш сайт.
  • Защита от парсинга. Не дает конкурентам собрать и скопировать все ваши товары, цены и фотографии, чтобы разместить их у себя.
  • Защита от подбора логинов и паролей. Мешает злоумышленникам получить доступ к аккаунтам ваших клиентов. Например, чтобы украсть бонусные баллы или их персональные данные.
  • Поиск уязвимостей. Постоянный мониторинг сайта на предмет уязвимостей в коде, которыми могут воспользоваться злоумышленники. Система оповещает о них, чтобы вы могли защитить сайт еще до атаки.

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

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

Примечание. Если вы разворачиваете интернет-магазин на облачном Kubernetes, то в нем уже есть встроенный мониторинг — отдельно его настраивать не требуется.

Если вы разворачиваете магазин на облачных серверах, то для мониторинга можно использовать разные инструменты, например стек ELK. Это три Open Source-инструмента: Elasticsearch, Logstash и Kibana, они используются для анализа, сбора и хранения метрик. Если настроить сбор данных и само приложение так, чтобы оно отправляло данные в ELK, то вы сможете понимать, какие сбои на каких серверах приводят к сбоям в работе интернет-магазина, так как ELK визуально отображает взаимосвязь событий в разных подсистемах.

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

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

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

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

Похожие статьи