Такая, чисто техническая "дата", а поскольку техническая, то я решил немного рассказать, что же такое есть на самом деле Форум.
Конечно все мы видим и используем его постоянно, но что скрывается за внешней оболочкой, как он работает и собственно где он находится физически - это я и хотел бы объяснить и постараться показать.
Для начала определим местоположение форума.
Я думаю, что все понимают что такое сервер и вероятно имеют представление о том, что такое датацентр. На всякий случай поясню:
IP - это персональный адрес, по которому находится запрашиваемый сервер (также как номер телефона)
Сервер - это компьютер на котором расположены сайты и который подключен к сети интернет, каждому серверу присваивается собственный IP адрес (здесь есть нюансы, например на одном сервере может быть множество IP, но это не наш случай, потому рассматривать его детально не будем).
Фактически сервером может выступать даже ваш домашний компьютер, но для этого у него должен быть собственный статичный IP адрес по которому его можно найти в сети, но домашние компьюетры, как правило, "заточены" под работу пользователя, кроме того имеют достаточно ограниченную скорость подключения к интернету и подвержены риску потери интернет-связи (например авария у провайдера или попросту отключится электричество). Потому разместить сервер дома можно, но в противовес возможной экономии, может быть потеряна стабильность работы, а также слабый интернет-канал сделает работу сайта крайне медленной.
Есть еще такие нюансы как износ оборудования, пыль, поддержка температуры при которой компьютеру было бы "комфортно" работать. Поэтому сейчас гораздо разумнее поставить сервер (купить) в датацентрах.
Датацентр - место, где располагается множество серверов, поддерживается оптимальная температура в помещении, фильтруется воздух от пыли, имеются мощные каналы связи (Гигабитные), как правило резервные источники электричества и генераторы.
Все это позволяет обеспечить быструю и стабильную работу серверов. При этом совсем не обязательно владельцу сервера находиться в датацентре. Он может быть на другом конце земного шара.
Например наш сервер расположен... в Эстонии
И он находится где-то вот здесь
На первый взгляд может показаться, что фото сделано где-нибудь в декорациях космического фильма Но это просто компьютеры установленные в стойки.
Итак... с физическим расположением разобрались, узнали что мы сейчас зашли в Эстонию
Теперь перейдем к тому, что же у нас находится на сервере.
Операционная система. Для веб-серверов чаще всего используются UNIX системы (LINUX) в разных вариациях: Debian, Centos, Freebsd и пр. конечно, используется и windows сервера, но в зависимости от поставленной на них задачи.
В нашем случае используется UNIXовая система.
Что бы работать с сервером необходимо подключиться к нему и начать управление. На UNIX системах не предусмотрено, по умолчанию, интерфейса, все делается через командную строку по протоколу SSH
Выглядит это примерно так:
Кто еще застал работу под DOS'ом, уже имеет достаточное представление о принципе работы.
Даже сейчас, вы можете у себя в ОС Windows открыть командую строку и управлять системой через нее.
Спойлер: Пощупаем CMD
Достаточно открыть Пуск - Выполнить и ввести там "cmd", нажать Enter.
Введите в ней "C:" и нажмите ентер - тем самым вы попадете на раздел диска C (Можете подставить букву любого имеющегося у вас раздела на компьютере).
После чего можете ввести команду "dir" и нажав ентер, система покажет вам содержимое директории в которой находитесь.
Вот, простейшее использование командной строки
Введите в ней "C:" и нажмите ентер - тем самым вы попадете на раздел диска C (Можете подставить букву любого имеющегося у вас раздела на компьютере).
После чего можете ввести команду "dir" и нажав ентер, система покажет вам содержимое директории в которой находитесь.
Вот, простейшее использование командной строки
Конечно есть и веб интерфейсы, например панели управления веб-сервером, они существенно упрощают работу, но предварительно их тоже нужно ведь поставить, да и функционал их относительно "голой" командной строки ограничен.
Например устанавливать программы все-же проще через команды, даже если есть возможность установить с панели.
Итак, зашли на сервер, увидели ответ сервера, теперь заглянем в процессы которые на нем выполняются.
В первую очередь это MySQL сервер - это место для хранения всех данных, в нем находятся разные базы данных, в т.ч. и форума, которая поделена на таблицы (можно сравнить их с экселевскими таблицами или бумажными прайсами - суть в том, что вся информация очень жестко структуризирована, к ней прилагаются отдельные "каталоги"/оглавления-индексы по которым даже в очень больших таблицах удастся быстро найти нужную строчку.).
В такой базе находятся все сообщения форума, профили, настройки... ВСЕ данные.
Любое сообщение имеет свой размер (как правило 1 байт = 1 символу, но поскольку у нас используется кодировка UTF8, то для русских букв используется 2 байта) - по аналогичной причине отправка СМС кириллицей в 2 раза короче при одинаковом размере сообщения.
Размер базы у нас около 1 Гб текста... для сравнения все три тома "Война и Мир" занимают всего около 3Мб.
При каждом переходе по форуму, происходит выборка из базы необходимых данных (например сообщений темы на данной странице, профилей пользователей)... можете себе представить, что при этом "перерывается" вся эта масса информации. Обычное время поиска занимает миллисекунды, для наглядного сравнения можете найти какой-нибудь длинный текстовый файл (мегабайт в 100) и открыть его "блокнотом", а потом начать в нем искать слова... если бы форум работал по такому же принципу....
Но это всего-лишь хранение данных, само по себе просто множество не структурированного текста. Для того, что бы получать необходимую информацию, необходимы программы которые будут запрашивать нужные данные, обрабатывать их и выводить в том виде, в котором мы их видим.
Популярным серверным решением есть язык PHP, на нем не будем останавливаться подробно и перейдем к общей программе которая зовется "Форум" - у нас это движок phpbb3.
phpbb3 - это самый популярный форумный движок с открытым исходным кодом (что позволяет с легкостью переделывать его под себя). Помимо него есть более "простые" для администраторов: IPB или VBulletin.
В последних исходный код закрыт и все модификации необходимо делать подстроенными под систему работы модификаций в нужном движке... короче, админу будет достаточно в два клика установить модификацию и больше от него ничего не потребуется.
Обратной стороной является потеря гибкости, а также серьезные проблемы при обновлениях самого движка - модификации могут попросту не быть совместимыми с новой версией, потому, очень часто либо не обновляют движок, либо не ставят модификации... ну либо те кто умеет их подгоняет под новую версию сам и если не сильно жадный, делится с остальными...
phpbb же "из коробки" достаточно скромный по функционалу или точнее имеет только наборы первой необходимости (будь у нас "голый" phpbb, я не знаю, что бы мы тут делали ), но в замен очень гибок у администратора у которого растут руки из нужного места, а также, что немаловажно, использует относительно немного ресурсов сервера и последние его версии пока еще никогда не были взломаны! (Чем не может похвастаться тот же IPB - от версии к версии латают дыры безопасности, но это так, к слову... кто старожил, помнит, что я чуть было не выбрал IPB лет 5 назад).
При каждом заходе на любую страницу нашего форума, ваш браузер, помимо данных из адресной строки, отправляет и скрытые данные, в частности Cookies (Печеньки или "Хлебные крошки") по которым производится идентификация посетителя именно поэтому зайдя на форум по логину и паролю вы остаетесь в системе даже если закроете браузер и потом войдете вновь. Помимо Куков, передается и другая информация: ваш IP, версия ОС, версия браузера, системное время (заметили что на форуме определяется время автоматически, исходя из выбранного часового пояса?)... все это в совокупности позволяет "запоминать" всех и даже в случае, если кто-нибудь "украдет" у вас ваши cookie (а такое делают трояны), то потенциальному злоумышленнику потребуется еще и полностью повторить "слепок" вашей системы.
Важным пунктом безопасности есть пароль. В phpbb система такова, что пароль не хранится на сервере в открытом виде. При его создании (при регистрации или изменении) он хэшируется в набор символов, который не поддается дешифровке, но при этом повторное хэширование пароля выдаст те же символы.
Т.е. когда вы вводите свой пароль, он хэшируется и сверяется с имеющемся в базе, в случае полного совпадения происходит вход (происходит запись в куки вашего браузера, что вход совершен с идентификатором сессии по которому система определяет кто есть кто).
Фактически это означает, что даже имея доступ к базе, потенциальный злоумышленник, не узнает ваш пароль, а только его хэшированную версию. А введя вместо пароля его хэш, тот будет снова хэширован и не совпадет с имеющемся в базе.
Наш форум очень сильно модифицирован... использовано очень много модулей, а также написано очень много собственных. Например тот же магазин - аналогов попросту нет ни для одного форумного движка.
Кроме того, форум имеет уникальный внешний вид. Мы уже поняли, что все данные форума хранятся в базе MySQL, обрабатываются программами phpbb и выдаются пользователю. Но это был бы просто текст, потому в phpbb используется система заранее подготовленных шаблонов (например для страницы тем используется один и тот же шаблон в который просто подставляются разные данные).
Сами шаблоны написаны на языке HTML с использованием CSS.
По сути HTML - это разметка страницы, а CSS - это стили (Цвет текста, фоны, обрамление и т.п. - это все CSS).
Также используется JavaScript - это микропрограммы которые выполняет уже непосредственно ваш браузер. Например вставку смайлов в форме ответа или разворачивание быстрого ответа, быстрая цитата, сменяющиеся слайды галереи в шапке...
Если вы нажмете сейчас Ctrl+U, то ваш браузер покажет исходный код страницы - именно ее отдает сервер, а уже браузер преобразовывает в то, что вы видите на экране.
Очень многое зависит от браузера, не редко бывает, что одно и тоже, в разных браузерах выглядит по разному.
Потому при верстке нашего стиля мне было необходимо "предугадывать" все это, в т.ч. и возможные разрешения экрана (Вы можете менять ширину окна браузера и видеть как меняет свое положение содержимое страницы подстраиваясь под новые "рамки").
Когда страница отображается одинаково в разных браузерах это называют кроссбраузерностью.
Кроссбраузерность - правило не то что хорошего тона, это необходимость, вероятно вы встречали сайты на которых написано внизу "Для просмотра данной странице рекомендуется использовать Название_Браузера" - это залипуха! Недоделка.
Еще понятно, если отказываются в поддержке древние версии (вроде IE6-7 и даже 8), но заставлять использовать определенный браузер - так нельзя.
И конечно, важнейшая составляющая каждого сайта - люди которые над ним работают и наполняют его "жизнью". Без них, сайт это пожелтевшая газета в чулане у бабушки.
Важен также и технический уход за сайтом и сервером. Бытует мнение, что однажды верно настроенный сервер и сайт не нуждается в обслуживании.
Отчасти это так. Если вы видите администратора который мечется туда сюда постоянно закрывая косяки, то это не значит что он работает, это значит что он НЕ работает. Нормальный администратор попивает пивко (ну или кифирчик, кто как ) у себя и занимается своими делами - у него все работает и делать ему нечего.
Если вы работаете в большом офисе и не знаете своего системного администратора - то это не значит, что он дармоед, а значит, что он все сделал так, что все работает.
Еще раз повторю: мечущийся между компьютерами админ - это плохой признак.
Если только он не внедрят что-нибудь новое
(Помню, последний раз я метался когда домен поменял и люди на портал войти не могли Но это было принципиально новое внедрение ).
Ну вот как то так, достаточно много текста вышло, кто осилил до конца, спасибо за внимание.
Возможно что-то сумбурно объяснил или немного не так - старался объяснять общепонятным языком.
Если есть интересующие вопросы, то буду рад рассказать...