Серверные события, рассмотренные ранее, являются идеальным инструментом, когда требуется получить последовательность сообщений с веб-сервера. Но при этом связь получается полностью односторонней. Браузер не может отвечать на сообщения или вступать в более сложный диалог с сервером.
Если вы создаете веб-приложение, в котором требуется серьезное двустороннее взаимодействие браузера с веб-сервером, лучшим подходом к его реализации (не прибегая к помощи Flash) будет, возможно, использование объекта XMLHttpRequest. В зависимости от типа создаваемого приложения этот подход может работать так, как требуется. Но здесь существует и достаточное количество возможных проблем.
Прежде всего, объект XMLHttpRequest не очень хорошо подходит для быстрого обмена множественными сообщениями (например, в чате). Потом, в нем нет возможности связать один вызов с другим, поэтому при каждом новом запросе от веб-страницы сервер должен вычислять с самого начала, кому эта страница принадлежит. Поэтому уровень сложности кода для обработки ряда связанных запросов от веб-страницы может очень быстро вырасти до практически нереализуемой.
Что такое TCP/IP: Объясняем на пальцах
Для всех этих проблем есть решение, хотя оно еще не вполне готово. Этим решением является технология , которая позволяет браузеру удерживать открытое подключение к серверу и обмениваться сообщениями в течение любого требуемого времени.
Технология веб-сокетов вызвала большое возбуждение в среде веб-разработчиков, но она еще находится в процессе развития, хотя уже имеет неплохую браузерную совместимость:
Браузер | IE | Firefox | Chrome | Safari | Opera | Safari iOS | Android |
Минимальная версия | 10 | 6 | 14 | 6 | 12.1 | 6 | — |
На данный момент лучше всего тестировать страницы, использующие веб-сокеты, в браузере Chrome, который предоставляет наиболее последовательную поддержку для них.
Получение доступа к веб-сокетам
Веб-сокеты являются специализированным инструментом. Они актуальны для таких приложений, как чат, массивные многопользовательские игры или инструмент для пирингового взаимодействия. Веб-сокеты позволяют создавать новые типы приложений, но применять их в большинстве современных веб-приложений, движимых JavaScript, скорее всего, не имеет смысла.
Решения на основе веб-сокетов могут быть чрезвычайно сложны. Разработать JavaScript-код для одной страницы будет достаточно простой задачей. Но для создания серверного приложения вам потребуются бешеные знания и навыки программирования, включая понимание концептов многопоточности и сетевого взаимодействия.
Создание PHP веб сайта за 1 час! + Выгрузка на сервер
Для использования веб-сокетов на веб-сервере вашего сайта должна исполняться специальная программа, которая будет, как ожидается, называться сервером веб-сокетов. На эту программу возлагается ответственность за координирование взаимодействия всех участников, и после запуска она работает безостановочно.
Многие хостинговые компании не допускают долго работающих программ, если только вы не оплатите выделенный веб-сервер, т.е. сервер, обслуживающий лишь ваш сайт. Если у вас обычный общий хостинг, вы, скорее всего, не сможете размещать на нем страницы, в которых используются веб-сокеты. Даже если вы умудритесь запустить сервер веб-сокетов и удерживать его в рабочем состоянии, владелец вашего хостинга, скорее всего, выявит и выключит его.
Чтобы дать вам представление о масштабе сервера веб-сокетов, рассмотрите некоторые из задач, которые сервер сокетов должен выполнять:
- составить «словарь» сообщений, иными словами, решить, какие типы сообщений являются допустимыми, а какие нет;
- содержать список всех текущих подключенных клиентов;
- выявлять ошибки при отправке сообщений клиентам и прекратить попытки связаться с ними, если кажется, что их больше не существует;
- обрабатывать все данные в оперативной памяти, т.е. данные, доступ к которым может потребоваться всем клиентам, и делать это надежно и безопасно. Здесь имеется обилие возможных неявных проблем, например, когда один клиент пытается присоединиться к обмену, в то время как другой отключается, а информация об обоих хранится в одном и том же объекте в памяти.
Разработчики, скорее всего, никогда не будут сами создавать серверную программу, использующую веб-сокеты, т.к. это просто-напросто не стоит требуемых для этого значительных усилий. Самым легким подходом в этой области будет установить чей-то другой сервер веб-сокетов и разрабатывать свои веб-страницы под него. Так как использование части JavaScript стандарта веб-сокетов не несет трудностей, это не должно доставлять каких-либо проблем.
Другим подходом будет взять чей-либо код сервера веб-сокетов и подогнать его под свои требования. В настоящее время существует великое множество проектов (многие из которых бесплатные и с открытым кодом), в которых разрабатываются серверы веб-сокетов для решения различных задач, на разных языках серверного программирования.
Простой клиент веб-сокетов
С точки зрения веб-страницы функциональность веб-сокетов легко понять и использовать. Первый шаг — это создать объект WebSocket и передать ему URL. Код для этого подобен следующему:
var socket = new WebSocket(«ws://localhost/socketServer.php»);
Строка URL начинается с текста ws://, который идентифицирует подключение типа веб-сокет. Этот URL указывает файл веб-приложения на сервере (в данном случае это сценарий socketServer.php).
Стандарт веб-сокетов также поддерживает URL, которые начинаются с текста wss://, что указывает на требование использовать безопасное, зашифрованное подключение (точно так же, как и при запросе веб-страницы указывается URL, начинающийся с https:// вместо http://).
Веб-сокеты могут подключаться не только к своему веб-серверу. Веб-страница может открыть подключение к серверу веб-сокетов, исполняющемуся на другом веб-сервере, не требуя для этого никаких дополнительных усилий.
Само обстоятельство создания объекта WebSocket понуждает страницу пытаться подключиться к серверу. Дальше надо использовать одно из четырех событий объекта WebSocket: onOpen (при установлении подключения), onError (когда возникает ошибка), onClose (при закрытии подключения) и onMessage (когда страница получает сообщение от сервера):
socket.onopen = connectionOpen; socket.onmessage = messageReceived; socket.onerror = errorOccurred; socket.onopen = connectionClosed;
Например, в случае успешного подключения неплохо бы отправить соответствующее подтверждающее сообщение. Такое сообщение доставляется с помощью метода send() объекта WebSocket, которому в качестве параметра передается обычный текст. Далее приведена функция, которая обрабатывает событие onopen и отправляет сообщение:
function connectionOpen()
Предположительно, веб-сервер получит это сообщение и даст на него ответ.
События onError и onClose можно использовать для отправки извещений посетителю веб-страницы. Но безоговорочно самым важным является событие onMessage, которое срабатывает при получении новых данных от сервера. Опять же, код JavaScript для обработки этого события не представляет никаких сложностей — мы просто извлекаем текст сообщения из свойства data:
function messageReceived(e)
Если веб-страница решит, что вся ее работа выполнена, она может закрыть подключение, используя метод disconnect():
socket.disconnect();
Из этого обзора веб-сокетов можно видеть, что использование сервера веб-сокетов стороннего разработчика не представляет никаких трудностей — нам нужно лишь знать, какие сообщения отправлять, а какие — ожидать.
Чтобы заставить подключение веб-сокетов работать, выполняется большой объем работы за кулисами. Прежде всего, веб-страница устанавливает связь по обычному стандарту HTTP. Потом это подключение нужно повысить до подключения веб-сокетов, позволяющего свободную двустороннюю связь.
На этом этапе возможны проблемы, если между компьютером клиента и веб-сервером находится прокси-сервер (как, например, в типичной корпоративной сети). Прокси-сервер может отказаться сотрудничать и разорвет подключение. Эту проблему можно решить, обнаруживая неудачное подключение (посредством события onError объекта WebSocket) и применяя один из заполнителей (polyfills) для сокетов, описанных на веб-сайте GitHub. Эти заполнители применяют метод опроса, чтобы эмулировать подключение веб-сокетов.
Примеры веб-сокетов в сети
Если вы заинтересованы опробовать веб-сокеты, в сети есть много сайтов, на которых можно запустить свою разработку.
Для начала попробуйте сайт websocket.org, который предоставляет простейший сервер веб-сокетов: веб-страница отправляет ему сообщение, а он возвращает это же сообщение веб-странице:
Хотя этот сервер веб-сокетов и не представляет ничего особенного, на нем вы можете испробовать все возможности объекта WebSocket. Более того, к этому серверу можно подключиться со страницы, расположенной как на промышленном веб-сервере, так и на тестовом веб-сервере на вашем компьютере, или даже со страницы, просто запускаемой с жесткого диска:
Существуют и серверы веб-сокетов, предоставляющие другие возможности, включая следующие:
- Простой чат. Чат, в котором все разговаривают со всеми. Отправляемые сообщения получают все участники чата.
- Многопользовательский альбом. Эта страница объединяет веб-сокеты с HTML5 Canvas. То, что вы рисуете на своем холсте, отображается на холсте других участников, и наоборот. Простой концепт, но очень впечатляющий на практике.
Серверы веб-сокетов
Чтобы иметь возможность испытать свой проект по веб-сокетам, вам нужен сервер веб-сокетов, с которым ваша страница могла бы общаться. Тестовый сервер можно найти во многих местах. Ниже даются ссылки на серверы веб-сокетов для определенных серверных языков:
Этот простой и слегка сыроватый проект будет хорошей отправной точкой для создания сервера веб-сокетов на PHP.
Существует несколько образцов сервера веб-сокетов на Ruby, но этот, применяющий модель «Event—Machine», пользуется особенной популярностью.
Сервер веб-сокетов в виде модуля расширения для Apache на языке Python.
Назвать простым этот всеохватывающий проект нельзя. Но он содержит завершенный сервер веб-сокетов на языке C# на основе платформы .NET корпорации Microsoft.
По своему масштабу этот проект похож на проект .NET, но чисто на языке Java.
В зависимости от того, кого вы спросите, система node.JS для разработки веб-приложений на JavaScript — это либо одна из наиболее перспективных платформ, либо просто разросшийся тестовый инструмент.
В отличие от других пунктов этого списка, Kaazing не предоставляет кода для сервера веб-сокетов. Это развитый сервер веб-сокетов, который можно лицензировать для своего веб-сайта. Для разработчиков, которые предпочитают делать все своими руками, он не будет представлять интереса. Но удобно использовать его на менее амбициозных веб-сайтах, особенно принимая во внимание то обстоятельство, что он содержит встроенную поддержку резервных решений в своих клиентских библиотеках (которые сначала пытаются применить стандарт веб-сокетов HTML5, затем Flash, а потом опрос посредством сценариев на JavaScript).
Источник: professorweb.ru
Как запустить сайт на IIS сервере?
Если вы хотите узнать больше о веб-дизайне и разработке, установка Internet Information Services (IIS) на ваш компьютер с Windows 10 — это хороший метод. IIS — это бесплатная функция Windows, включенная в Windows 10, так почему бы не использовать ее?
IIS представляет собой полнофункциональный веб-сервер и сервер FTP с некоторыми мощными инструментами администратора, мощными функциями безопасности и может использоваться для размещения приложений ASP.NET и PHP на одном сервере. Вы даже можете разместить сайты WordPress на IIS.
Существует три способа установки и настройки веб-сайта в IIS в Windows 10; с помощью графического интерфейса пользователя (GUI), PowerShell или Windows CMD. Мы будем использовать каждый метод для базовой установки IIS.
Установите IIS с помощью графического интерфейса
Это метод «укажи и щелкни» для настройки веб-сайта в IIS. Это идеальный метод, если вы не изучили команды PowerShell или Windows.
- Начните вводить «включить окна» в строке поиска. В результате появится утилита Turn Windows on/off. Нажмите здесь.
- Откроется окно «Функции Windows». Загрузка различных функций может занять некоторое время. Когда это произойдет, установите флажок рядом с Internet Information Services, а затем нажмите кнопку OK.
- Установка начнется и может занять несколько минут. По завершении нажмите кнопку «Закрыть».
- Чтобы убедиться, что IIS установлен и работает, введите IIS в строке поиска рядом с кнопкой «Пуск». В результате вы увидите Диспетчер информационных служб Интернета. Нажмите на это, чтобы открыть его.
- Когда диспетчер IIS откроется, посмотрите в левой части окна в разделе « Подключения» . Раскрывайте древовидное меню, пока не увидите веб-сайт по умолчанию. Это сайт-заполнитель, который устанавливается вместе с IIS. Нажмите на него, чтобы выбрать его.
- Справа от диспетчера IIS смотрите в разделе «Просмотр веб-сайта». Нажмите на Обзор *:80 (http). Это откроет веб-сайт по умолчанию в веб-браузере по умолчанию.
- Вы увидите веб-страницу, подобную следующей. Обратите внимание, что в адресной строке написано localhost. Это адрес, который нужно ввести, чтобы перейти на ваш новый сайт.
Создайте свою первую веб-страницу для IIS
Прежде чем перейти к двум другим методам установки IIS, давайте посмотрим, где хранятся файлы, которые делают ваш сайт. Мы также сделаем очень простую веб-страницу. Как только вы поймете, как это сделать, вы узнаете основы для изучения веб-дизайна и разработки.
- После установки IIS откройте проводник . Перейдите к C:intepubwwwroot. Вот где файлы, которые составляют сайт должны быть сохранены. Вы увидите файл веб-страницы IIS по умолчанию, iisstart.html, и изображение, показанное на странице, iisstart.png. Здесь вы сохраните свою первую веб-страницу.
- Откройте Блокнот как администратор. Чтобы сохранить в папку wwwroot , вы должны быть администратором.
- Сохраните файл в папку wwwroot. Назовите его index.html и измените тип файла «Сохранить как» на «Все файлы». Затем нажмите кнопку Сохранить.
- Теперь, когда он сохранен как правильный тип файла, давайте поместим в него некоторый контент. Введите следующий HTML-код для очень простой веб-страницы и сохраните его:
Hello World!

Это оно! Вы только что создали и опубликовали свой первый веб-сайт на IIS.
Установите IIS с помощью команд Windows
Инструкция по установке сайта на VDS
Сайт нельзя установить на «чистый» VDS — понадобится либо панель управления, либо настроенная конфигурация (чаще всего LAMP). Вы сами решаете, какой путь выбрать. Если коротко — с панелью управления проще. Но и ручная настройка VDS под сайт не займет много времени.
Подготовка VDS
Чтобы установить сайт, нужно подготовить VDS — развернуть на нем LAMP. В этот набор входит Linux, Apache, MySQL и PHP. Эти элементы требуются для корректной работы динамических сайтов и приложений.
Самый простой способ — установить LAMP при создании VDS. Например, так можно сделать на Timeweb.
- Откройте панель управления VDS.
- В разделе «Список VDS» нажмите «Создать сервер».
- Укажите имя и комментарий, если он нужен.
- Выберите операционную систему и программное обеспечение — например, Ubuntu 18.04 и LAMP.
- Выберите подходящую конфигурацию VDS.
- Добавьте SSH-ключ, если он уже создан.
- Включите при необходимости защиту от DDoS.
- Оплатите тариф.
После завершения установки у вас будет VDS с конфигурацией, подходящей для размещения веб-проектов.
Если у вас уже есть сервер, можно переустановить ПО и выбрать LAMP или добавить необходимые компоненты вручную через консоль. Для авторизации используйте логин и пароль, присланные хостером на почту при создании вирутального сервера. Linux уже должен быть установлен на VDS. Посмотрим на примере Ubuntu 18.04, как добавить другие компоненты: Apache, MySQL и PHP.
Установите веб-сервер Apache:
sudo apt update sudo apt-get install apache2
Добавьте Apache в автозагрузку:
sudo systemctl enable apache2
sudo systemctl start apache2
Чтобы убедиться в том, что веб-сервер заработал, введите в адресной строке браузера IP-адрес сервера. На вкладке должно отобразиться приветственное окно Apache.
Следующий шаг — установка системы управления базами данных MySQL.
sudo apt-get install mysql-server
Задайте пароль суперпользователя (root), нажмите на Enter и введите пароль еще раз.
Запустите мастера настройки безопасности:
sudo mysql_secure_installation
Ответьте на несколько вопросов системы:
- Введите пароль от root, который указали ранее.
- Включите или откажитесь от плагина VALIDATE PASSWORD. При его активации MySQL будет отвергать слабые пароли. Чтобы включить его, введите «y», в противном случае — «n».
- Введите «n», чтобы не менять пароль.
- Дальше будет еще четыре параметра. Во всех случаях введите «y», чтобы удалить анонимных пользователей, запретить удаленный доступ для суперпользователя, удалить тестовую базу и обновить таблицу привилегий пользователей.
Чтобы подключиться к установленной БД, выполните команду
mysql -u root -p
Для подключения нужно ввести пароль, заданный при настройке MySQL. Для удобства управления также можно установить phpMyAdmin, но это опциональное решение.
Последний этап — установка PHP.
sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql
Это базовый набор. Можно добавить и другие модули, прописав их в команде выше или использовав отдельную команду типа apt-get install название_модуля.
После установки PHP проверьте его работоспособность. Создайте новый файл и откройте его в редакторе:
nano /var/www/site1/public_html/test.php
Внесите в него три строки и сохраните файл:
Перейдите по адресу http://IP-адрес-сервера/test.php. На вкладке браузера должна отобразиться страница с параметрами PHP.
После установки LAMP (не имеет значения, автоматически или вручную) нужно добавить на сервер домен. Сделать это можно через одноименный раздел в панели управления VDS. Timeweb предлагает зарегистрировать новый домен, перенести существующее имя или воспользоваться бесплатным техническим доменом для проверки работоспособности ресурса.
Ручная установка сайта на VDS
Чтобы загрузить файлы сайта на сервер, нужно подключиться к нему по протоколу SFTP. Проще всего сделать это через программу FileZilla. При подключении необходимо указать:
- IP-адрес сервера;
- логин и пароль от VDS;
- номер порта — по умолчанию 22.
Если вы установили LAMP автоматически при создании сервера, то разместите сайт в директории /var/www/html.
Если вы установили LAMP вручную по инструкции выше, разместите сайт в директории /var/www/site1/public_html.
Теперь нужно разобраться с базой данных. Для этого нужно подключиться к серверу через SSH. Можно воспользоваться консолью в панели управления VDS.
mysql
Затем укажите имя БД, логин и пароль. Лучше сразу указать данные, прописанные в конфигурационном файле сайта.
Если есть дамп базы данных, загрузите его на сервер через SFTP в директорию /var/www/ и импортируйте в новую БД:
mysql -u»логин» имя_БД -p»пароль» < /var/www/дамп.sql
Для удобной работы с базами данных также можно установить на сервер phpMyAdmin.
Установка в ISPmanager
Первый этап — создание нового пользователя. Он нужен для того, чтобы не работать с максимальным набором прав — это опасная практика.
- Откройте раздел «Учетные записи» — «Пользователи».
- Нажмите на кнопку «Создать».
- Введите имя пользователя и пароль. Остальные настройки можно оставить без изменений.
- Укажите WWW-домен и создайте FTP-пользователя для подключения.
- Нажмите «Завершить» для сохранения нового пользователя.
- Вернитесь в меню «Учетные записи» — «Пользователи».
- Выберите нового пользователя и нажмите «Войти».
- Введите логин и пароль, которые указали ранее при создании нового пользователя.
Следующий этап — подключение домена. На сайте регистратора нужно указать для домена в качестве А-записи IP-адрес сервера. Если вы не добавили домен при создании пользователя, сделайте это сейчас:
- Перейдите в раздел WWW — «WWW-домены» — «Создать».
- Укажите в форме доменное имя и адрес почты администратора. Остальные поля будут заполнены по умолчанию.
Теперь нужно загрузить на добавленный домен файлы сайта.
- Откройте раздел WWW — «WWW-домены».
- Выделите домен и нажмите на кнопку «Каталог».
- Удалите созданный по умолчанию файл index.html.
- Нажмите на кнопку «Закачать» и укажите путь к архиву с файлами сайта.
- Чтобы распаковать загруженный архив, выделите его и нажмите на кнопку «Извлечь». По умолчанию будет выбрана правильная директория.
Последний этап — создание базы данных.
- Откройте раздел «Главное» — «Базы данных» — «Создать».
- Укажите имя базы, логин и пароль. Лучше сразу прописывать данные из конфигурационного файла сайта.
Если у вас уже есть база данных, импортируйте ее содержимое через раздел «Инструменты» — phpMyAdmin. Для авторизации используйте логин и пароль, назначенные при создании базы данных.
Установка в VestaCP
Первый этап — создание нового пользователя.
- Откройте раздел USER.
- Нажмите на зеленый значок, чтобы добавить новый аккаунт.
- Заполните в форме все поля.
- После создания пользователя вернитесь в раздел USER, выделите новый аккаунт и нажмите на кнопку «Войти».
Следующий этап — подключение домена. Первым делом укажите IP-адрес сервера в его А-записи. Это делается в личном кабинете на сайте регистратора доменов. Затем добавьте домен в панель Vesta:
- Откройте раздел WEB.
- Нажмите на зеленый значок плюса, чтобы добавить новый домен.
- Введите имя домена и установите другие параметры его работы.
- При необходимости перейдите по ссылке «Дополнительные опции». Здесь можно включить поддержку SSL, подключить аналитику, добавить еще один FTP-аккаунт (первый доступен по логину и паролю пользователя).
Обычно менять настройки не нужно. Вы просто добавляете в раздел WEB имя нового домена и сохраняете конфигурацию.
Затем нужно создать базу данных.
- Откройте раздел DB.
- Нажмите на зеленый значок, чтобы добавить новую БД.
- Укажите данные базы: имя, логин, пароль, адрес электронной почты, на которую будут отправлены реквизиты для авторизации.
- Нажмите на кнопку PHPMYADMIN — она находится над списком баз данных.
- Импортируйте дамп базы данных, если он у вас есть.
- Измените конфигурационный файл сайта — укажите в нем имя БД, логин и пароль. Можно пойти другим путем — изначально указывать имя БД, логин и пароль, ранее записанные в конфигурационном файле.
Последний этап — загрузка файлов сайта на сервер. Используйте подключение через SFTP с помощью FileZilla. Введите следующие данные:
- IP-адрес сервера;
- логин от аккаунта в панели управления Vesta;
- пароль от аккаунта в панели управления Vesta;
- порт 22 (по умолчанию).
Файлы нужно скопировать в директорию /web/домен/public_html.
Перенос сайта на другой VDS силами технической поддержки
Если сайт размещен на стороннем хостинге или VDS, можно перенести его на другой виртуальный сервер с помощью специалистов поддержки. Это не общая практика, но хорошие хостеры предлагают такую услугу. Например, попросить перенести сайт можно специалистов поддержки Timeweb. Они помогут при условии, что на VDS установлена панель управления (ISPmanager или VestaCP) или ОС Bitrix 7.
Поставить Bitrix на VDS можно при создании нового сервера. Если сервер уже создан, можно переустановить операционную систему или просто добавить на него панель управления.
Специалисты поддержки выполнят следующие работы:
- скопируют все файлы на сервер;
- импортируют базы данных и внесут изменения в файлы конфигурации;
- установят и настроят ПО для работы с динамическими сайтами и приложениями;
- создадут служебные домены для проверки работоспособности после переноса.
Фактически пользователю останется только перенести домен на VDS, всю остальную работу сделают специалисты поддержки. Чтобы воспользоваться этой услугой, нужно предоставить хостеру следующие данные:
- доступ к FTP или SSH старого сервера;
- доступ к панели phpMyAdmin старого сервера;
- информацию о том, какие сайты и папки нужно перенести;
- пароль администратора сервера, на который переносится сайт.
После завершения переноса нужно заменить пароль администратора, чтобы его не знал никто, кроме владельца.
Служба технической поддержки помогает только с переносом сайта с другого сервера. Специалисты не помогают с установкой нового ресурса — эти действия нужно выполнять самостоятельно.
Источник: timeweb.com