Найти в Дзене
ZDG

Как захостить веб-сайт

Оглавление

Данная статья предназначена для тех, кто интересуется размещением сайтов в интернете, но не вполне представляет себе, как это делается.

Что такое хостинг

Host в переводе это хозяин, принимающий гостей, но заметьте, что гость (guest) созвучен с "хост". На деле эти слова однокоренные. Хостинг это когда для вашего сайта предоставляют, так сказать, стол и дом.

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

Виды хостинга

  • Физический сервер. Вам предоставляют настоящий, материальный сервер ("железку", как говорят), который весь ваш, со всеми потрохами, и вы можете делать на нём что хотите. Это примерно как если б в гостях хозяин поселил вас в отдельном домике со всеми удобствами.
  • Выделенный виртуальный сервер. Называется VDS (Virtual Dedicated Server) или VPS (Virtual Private Server). Всё то же самое, у вас есть свой сервер и вы распоряжаетесь всеми его ресурсами, но только он... виртуальный. Это программная эмуляция машины внутри настоящей машины. На одной железной машине может быть запущено несколько виртуальных. По большому счёту для вас разницы нет. Это как если бы хозяин поселил вас в отдельном домике, но домик этот находится в Матрице.
  • Виртуальный сервер. Это уже просто общежитие. Как такового сервера, то есть самой машины, у вас нет, и вы не можете им управлять. Вы можете только положить туда свои файлы. На одном сервере работает много сайтов, и все они конкурируют за процессорный ресурс.

Какой тип хостинга выбрать

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

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

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

Какого хостера выбрать

Услуги хостинга предоставляет большое количество компаний, поэтому я не знаю, кто там лучше или хуже, по-моему у всех всё одинаково. Сам я пользуюсь sweb.ru – это не реклама, просто я лет 20 назад как создал там сайт, так и сижу, а больше ничего не пробовал.

Шаг за шагом

Попробуем-ка бесплатный хостинг от sweb. Что интересно, ссылок с главной страницы на него нет, я нашёл его как-то случайно.

Для регистрации требуются email, телефон и проверочный код, который пришлют на телефон. Также вы можете задать свой логин. Cразу после этого можно начинать работу с панелью управления:

-2

Зайдём в раздел Хостинг - Сайты. Здесь мы видим созданный сайт:

-3

Мой бесплатный сайт находится в интернете, и следовательно у него должен быть какой-то адрес. В данном случае ему назначен бесплатный домен zdgfree.temp.swtest.ru. Также видно, что сайт работает на веб-сервере Apache2.2 и PHP7.1. Это можно поменять в настройках:

-4

Но если вы в этом не разбираетесь, просто ничего не трогайте.

Заливка файлов на сайт

По сути то, что мне предоставили, это доступ к небольшому кусочку диска, который находится в папке /home/z/zdgfree/. Это моя домашняя папка, и я не смогу заходить ни в какие другие.

В этой папке есть папка public_html, она предназначена для тех файлов, которые будут непосредственно на сайте. Всё уже настроено заранее. В этой папке находится файл index.html, который является стартовой страницей сайта, и если обратиться к сайту http://zdgfree.temp.swtest.ru/, мы увидим такую страницу:

-5

Здесь написано про 14-дневный бесплатный период, но будем надеяться, что они просто забыли поменять шаблон, так как бесплатный сайт был обещан навсегда (а в панели управления стоит срок 5 лет... ну ладно).

Создадим на своей локальной машине свой файл index.html:

-6

И загрузим его на хостинг. Для этого можно воспользоваться встроенным в панель управления файл-менеджером:

-7

Ищем иконку для загрузки файлов и загружаем свой index.html:

-8

Заменив файл, можем снова открыть сайт и увидеть изменения:

-9

Посмотрим, как работает PHP, сделав файл index.php:

-10

Загрузим его тоже, и обновим сайт, но... никаких изменений. Это потому, что по умолчанию сервер берёт в первую очередь index.html, а не index.php. Чтобы это исправить, можно либо удалить совсем index.html, либо изменить настройки сервера в разделе Хостинг - Сайты:

-11

Обновляем страницу, и...

-12

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

Интерфейс файл-менеджера не очень удобен, поэтому альтернативно заливать файлы можно через SFTP-соединение. Существует много SFTP-клиентов, я пользуюсь встроенным в FAR Manager, поэтому покажу на нём.

После регистрации мне пришло письмо с IP-адресом сервера и паролем.

В FAR я нажимаю Alt-F1 для выбора левой панели и затем цифру 2, чтобы открыть список сетевых соединений (NetBox).

-13

Далее я нажимаю Shift-F4, чтобы редактировать новое соединение. Только один нюанс, на бесплатном тарифе нет доступа через SFTP, поэтому нужно выбрать FTP:

-14

Заполню адрес сервера, логин и пароль:

-15

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

-16

И вот сохранённая сессия появилась в списке:

-17

Теперь я могу просто нажать Enter и открыть соединение:

-18

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

-19

Помечу все файлы и папки сайта (не то чтобы их много)...

-20

В левой панели зайду в папку public_html:

-21

Вернусь в правую панель, нажму F5 и начну копировать:

-22

Теперь в левой панели удалю index.php, и останутся только скопированные файлы:

-23

Можно обновлять страницу сайта:

Ждун управляется движением мыши, а при нажатии левой кнопки мыши подпрыгивает, а при двойном нажатии делает двойной прыжок.
Ждун управляется движением мыши, а при нажатии левой кнопки мыши подпрыгивает, а при двойном нажатии делает двойной прыжок.

Работа с базой данных

Бесплатный хостинг предоставляет одну базу MySQL. Зайдём в панели управления в раздел Базы данных:

-25

Здесь пока пусто. Создадим базу данных.

-26

Ого, да тут и PostgreSQL можно! База создана:

-27

Нажав на меню "три точки", можно выбрать phpMyAdmin для работы с базой:

-28

Создам там тестовую таблицу user и заведу одного пользователя:

-29

Вот и созданная таблица появилась:

-30

Теперь попробуем соединение с базой из PHP:

-31

Сохраним этот код в файл test_db.php, файл загрузим в public_html, и откроем ссылку http://zdgfree.temp.swtest.ru/test_db.php:

-32

Добыча данных из базы данных работает.

Значение папки public_html

На хостинге моя домашняя папка это home/z/zdgfree, а файлы для сайта находятся в папке publiс_html. Почему это так?

Папка public_html смотрит в интернет, то есть все файлы, которые там лежат, становятся доступны через URL сайта http://zdgfree.temp.swtest.ru. Она поэтому и называется public. Если же вы положите файлы в папку уровнем выше, никакого доступа из интернета к ним не будет. Папка уровнем выше используется для сервисных целей – записи логов, бэкапов и т.п. Вы также можете хранить там конфигурацию сайта с паролями.

Например, сейчас файл test_db.php расположен в папке public_html. В нём записан пароль от базы:

-33

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

В этом случае я могу создать отдельный PHP-файл с паролем, например dbconfig.php:

-34

и разместить его вне папки public_html:

-35

А в файл test_db.php сделать включение файла dbconfig.php:

-36

Тогда, если даже злоумышленник скачает исходный текст файла test_db.php, пароля он там не найдёт.

Дальше я рекомендую читать следующие циклы статей: