8 Март 2010

Хостинг на домашнем компьютере или сервер своими руками. Часть 1

Хостинг на домашнем компьютере

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

Как не странно, но если вы читали статью о настройке Apache + PHP + MySQL, то вы уже умете хостить сайты на своем домашнем компьютере.  Оказывается, все что нужно для того, чтобы сайт грузился не с какого-то сервера хостинг-провайдера, а со своего знакомого родного домашнего компьютера – это описанным в статье образом настроить связку apache+php+mysql и связать доменное имя с IP-адресом вашего домашнего компьютера.

Повторюсь:

  • О том как настраивать Apache + PHP + MySQL я писал здесь.
  • О том, как связать IP-адрес и доменное имя я записал видеоурок.

Так что вы вполне вооружены знаниями, остается лишь правильно их применить.

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

Но, обычное дело, когда компьютер, который будет выполнять роль сервера, расположен либо в локальной подсети, либо перед ним стоит какой-нибудь АДСЛ-модем и внешний IP-адрес (который вы можете узнать воспользовавшись сервисом myip.ru) – это адрес роутера либо адрес АДСЛ-модема. IP-адрес компьютера имеет при этом локальный вид (либо 192.168.0.ХХХ, либо 10.0.0.Х). Здесь уже сложнее, но все равно можно реализовать поставленную цель и сделать у себя дома филиал хостинг-провайдера.

Необходимо реализовать так называемый проброс портов. Т.е. настроить роутер или АДСЛ-модем следующим образом:

  • Пользователь набрал адрес сайта sdelaysite.com.
  • Name-сервер сообщил IP-адрес. Этот IP-адрес является внешним статическим адресом либо роутера, либо АДСЛ-модема, либо шлюза, через который компьютер-сервер выходит в интернет.
  • Запрос пришел к роутеру на 80-й порт (именно через 80-й порт осуществляется http-соединение).
  • Роутер настроен таким образом, что все запросы, приходящие на 80-й порт, перенаправляет компьютеру локальной подсети с определенным IP, например 192.168.0.200.
  • Запрос пошел на локальный компьютер-сервер, а там его уже с радостью встречает Apache и выдает нужный сайт.

Но с пробросом портов мы разберемся чуть позже. Пока поковыряем сам компьютер-сервер.

Характеристики компьютера-сервера

Здесь очень сложно говорить о каких-либо точных параметрах.

Если вы собираетесь поиграть в хостинг-провайдера, то сервер должен быть четырехъядерным компьютером с 4-мя Гигабайтами оперативки, и несколькими жесткими дисками, объединенными в RAID-массив. Такой компьютер делится на несколько виртуальных серверов, управление которыми дается клиентам.

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

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

Скорость чтения с жесткого диска и его надежность можно повысить все теми же RAID-массивами.

Но неоспоримым оказывается тот факт, что ОС Windows, из-за огромного количества дыр в безопасности, множества вирусов, нестабильности работы – на сервере не место.

Поэтому на серверах бал правят операционные системы семейства Linux. Но не пугайтесь, принципы работы в Linux не так и сложны, как кажется, а настройка Apache + PHP + MySQL практически ничем не отличается от настройки в Windows.

Установка ArchLinux

Давайте-ка, уважаемый читатель, я познакомлю вас с установкой операционной системы ArchLinux.

Существует множество операционных систем, разработанных на основе Linux. Это и всем известная Ubuntu и openSUSE и многие другие. Одним из завоевавших популярность дистрибутивов является ArchLinux. С ним-то мы и будем знакомиться.

Почему именно ArchLinux:

  • На мой взгляд, оптимально подходящий дистрибутив для сервера. В нем нет никакой лишней тяжести, все настраивает и устанавливает сам пользователь (оставляя только то, что действительно необходимо).
  • Мощная система установки обновлений Pacman.

Подробнее об Arclinux можно почитать здесь. О философии Arch здесь.

Теперь я подробно опишу процесс установки ArchLinux на будущий сервер.

В случае обычного домашнего компьютера, из которого мы планируем сделать сервер, подойдет дистрибутив Core ISOs: i686, Torrent-ссылку на который можно получить на этой странице.

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

Скачиваем Torrent-ссылку и загружаем ISO-образ диска любимым Torrent-клиентом.

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

Для начала запускаю из TCUP Torrent-клиент и примерно через час дистрибутив у меня на жестком диске.

Загрузка дистрибутива Linux

Загружен ArchLinux

Теперь, как вы, наверное, догадались, нужно нарезать дистрибутив на диск. Идеальным окажется обычный CD, но где его в наше прогрессивное время взять, поэтому я использую чистую DVD (ради такого дела не жаль).

Нарезать будем плагином все того же TCUP.

Прожиг диска с Linux

Запускаем плагин Прожиг CD/DVD. Далее выбираем пункт Проект: Образ ISO/CUE и, прямо в открывшееся содержимое пункта, копируем скачанный дистрибутив ArcLinux-а (при помощи всем знакомой кнопки F5).

Запись начинаем, естественно, кликом на пункт Запись диска.

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

Программа записи диска

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

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

Грузимся с CD.

Загрузка в Arch linux

Выбираем пункт Boot Arch Linux Live CD. После чего наблюдаем процесс загрузки операционной системы.

Дожидаемся появления приглашения к авторизации.

Приглашение входа в Linux

Авторизуемся, как нам и предлагает надпись сверху, под логином root.

Хозяйке на заметку root – это логин суперпользователя, обладающего самыми широкими правами по настройке системы.

В установочном режиме учетная запись root-пользователя не имеет пароля. Пароль мы создадим на одном из последних шагов установки ОС Arch Linux.

Если обратить внимание на появившуюся, после авторизации, красиво оформленную надпись, то станет понятно – установку нужно начитать с ввода команды /arc/setup и подтверждаю ввод нажатием, вы не поверите, Enter.

Приступаем к установке Arch Linux

Все, приступаем непосредственно к установке.

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

1. Select Source

На данном этапе нам предлагается выбрать между установкой с CD или из интернета. Т.к. мы скачали полный дистрибутив, то выбираем пункт CD-ROM or OTHER SOURCE и нажимаем Enter.

Выбор источника установки

2. Set clock

установка даты и времени

Select region and timezone. Здесь необходимо выбрать временной регион. Я выбираю Europe и после Kiev (т.к. территориально я нахожусь в Украине).

Set time and date Здесь без лишних пояснений выбираю UTC. В режиме manuale редактирую дату. После корректировки возвращаюсь в подменю установки даты и времени, выбрав пункт return.

Настройку времени и даты я закончил, выбираю 3-й пункт Return to Main Menu.

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

Выбираю пункт

3. Prepare Hard Drive(s)

Разбивать будем в ручном режиме. Поэтому в подменю выбираем пункт 2. Manually Partition Hard Drives.

Разбивка жесткого диска

Я имею диск в 18 Гбайт, о чем с радостью меня информирует программа разбивки диска.

Информация о диске

На данном этапе хочу пояснить принципы работы с оборудованием и файловой иерархией Arch Linux:

В Linux нет дисков С:, D: и т.д., как мы привыкли видеть в Windows. Здесь вся иерархия начинается от корня, обозначаемого / Все находится внутри этого слеша и распределено по папкам.

Удивительно для пользователя Windows, но все оборудование хранится в папке /dev. Мой единственный жесткий диск обозначается как sda. Именно поэтому я вижу надпись /dev/sda: 18GiB, которая говорит о том, что на компьютере есть одно устройство, распознанное как жесткий диск размером в 18 ГигаБайт и оно, как и все устройства, засунуто в папку dev.

А теперь мы приступим непосредственно к созданию разделов на жестком диске.

Создание раздела

Выбираю диск /dev/sda и нажимаю Enter. После этого запускается программа cfdisk, при помощи которой мы и будем делить диск на разделы. Убираем приветственное окно программы cfdisk, нажав Enter и наблюдаем интерфейс программы cfdisk.

cfdisk в linux

Для чистоты эксперимента я удаляю все имеющиеся разделы, выбирая внизу пункт Delete (нижнее меню, перемещаюсь при помощи курсорной клавиши вправо).

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

Создадим три раздела:

  • Загрузочный раздел, который будет содержать ядро системы (для него нам достаточно отвести 50 Мбайт).
  • Раздел подкачки или swap. Он используется для хранения данных из оперативной памяти, когда они уже там не умещаются (512 Мбайт).
  • Раздел для всего остального, корневой раздел /. Для него задействуем все что осталось.

Итак, выбираю пункт New и создаю загрузочный раздел. На следующей развилке я вбираю пункт Primary. Далее выбираю размер раздела, в моем случае достаточно 50 МегаБайт. Выбор подтверждаю пунктом Beginning.

После создания раздела указываю его тип (пункт Type) как 83 (Linux).

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

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

Используем вышеописанный алгоритм. Размер данного раздела будет равен 512 Мегабайт.

В качестве типа данного раздела (Type) необходимо указать 82.

Все остальное помечаем как sda3, туда мы будем монтировать корень /.

Размеченный жесткий диск sda имеет следующий вид:

Настал этап указать один из дисков, как загрузочный. Для этого мы перемещаемся на sda1 и помечаем его пунктом Bootable.

Все, уважаемый читатель, с разметкой диска покончено. Выбираем в интерфейсе cfdisk пункт write (в нижнем меню) и сохраняем внесенные изменения.

После сохранения можно выйти (пункт Quit).

Мы снова попадаем в знакомое нам меню установки Arch, где выбираем пункт DONE.

После выбора DONE, мы окажемся в подменю работы с диском, где будет заботливо выбран пункт 3. Manually Configure block devices, filesystems and mounpoints

Нажимаем Enter и переходим к монтированию разделов жесткого диска.

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

Точки монтирования дисков Linux

Итак, начинаем с sda1. Этот раздел загрузочный. Для него оптимальной окажется файловая система ext3, поддерживающая восстановление после сбоя.

Как и договаривались, монтируем на sda1 загрузочный раздел /boot.

Загрузочная область

Никаких дополнительных опций указывать не будем, нажимаем Enter.

Аналогично вышеописанному создаем файловую систему и точку монтирования для sda2. Файловая система – swap. Это собственно все, что нужно было указать для sda2.

Sda3 будет иметь файловую систему ext3 монтировать туда будем, как и договаривались, все остальное, т.е. /.

Вот результат:

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

Остается лишь выбрать done и все, что мы наворотили, применится.

Вот теперь уж с настройкой жесткого диска действительно все. Arch заботливо выбирает пятый пункт в меню установки 5 Return to Main Menu.

Продолжаем устанавливать наш замечательный Linux.

В главном меню установки выбран пункт 4. Select Packages. В нем нам нужно выбрать ничто иное как base.

Выбор пакетов

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

Попадаем на 5-й пункт меню Install Packages, которым запускается установка пакетов. Если вы видите вот это

и CD старательно шуршит, значит все нормально, ждите окончания установки.

Все, уважаемый читатель, процесс установки Arch Linux закончен, приступаем к конфигурированию. Все, что мы сейчас наконфигурируем, можно будет поправить в любой удобный момент.

6. Configure System

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

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

Конфигурационные файлы ArchLinux

Основной конфигурационный файл – /etc/rc.conf

Выбираем соответствующий пункт и нажимаем Enter.

Редактор nano загружает содержимое текстового файла rc.conf, расположенного в папке файлов конфигурации etc.

Для начала мы настроим сеть. Переходим к разделу NETWORKING в файле и внимательно впиваемся взглядом в строчки

#eth0="eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" 
eth0="dhcp"
INTERFACES=(eth0)
gateway="default gw 192.168.0.1"

ROUTES=(!gateway)

Значит так, если мы настраиваем сервер, то речи о динамической раздаче IP-адресов быть не может. Поэтому мы убираем комментирующую решетку перед первой строкой и ставим ее на вторую строчку. Получается вот что:

eth0="eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" 
#eth0="dhcp"

Теперь развлекаемся с первой строкой. Вместо 192.168.0.2 прописываем IP-адрес сервера. Мой сервак находится в локальной сети и имеет адрес 192.168.0.200 (именно его я и указываю).

netmask 255.255.255.0 Это нас устраивает. Данный формат маски говорит о том, что в подсети могут находится 254 компьютера (первые три составляющие IP-адреса у них фиксированы, а последняя изменяется от 1 до 254). Ну и ладно.

broadcast 192.168.0.255 – это IP-адрес для широковещательных пакетов. Если на данный IP будет отправлен пакет, то его получат все компьютеры подсети. Ну и хорошо, нас это устраивает.

В результате имеем следующее вместо первой строки:

eth0="eth0 192.168.0.200 netmask 255.255.255.0 broadcast 192.168.0.255" 

Крутим ниже, к строке

gateway="default gw 192.168.0.1"
ROUTES=(!gateway)

Первая строка указывает шлюз. Моя локальная сеть организована таким образом, что перед сервером расположен роутер, имеющий адрес 192.168.0.1, его я и указываю в качестве шлюза. Если в вашем случае, никакого роутера нет, то администратор сети должен сообщить вам IP-адрес шлюза, его здесь и укажете.

Во второй строке нам нужно, всего на всего, убрать восклицательный знак:

ROUTES=(gateway)

С этим файлов все. Жмем ctrl+o для записи и ctrl+x для выхода.

Следующим конфигурационным файлом, к которому мы проявим интерес, будет /etc/resolv.conf

Здесь все очень просто. В формате nameserver ip необходимо указать DNS.

Прямо под строкой #nameserver <ip> дописываем следующее

nameserver 192.168.0.1

nameserver 8.8.8.8

Кто такой 192.168.0.1 вы, уважаемый читатель, уже знаете.

8.8.8.8 – это DNS от Google. Указываю его, в качестве альтернативного.

Следующий интересный файл – /etc/hosts.deny

По умолчанию в этом файле запрещаются все соединения. Поправить это можно закомментировав строку ALL: ALL: DENY, т.е. поставить # перед фразой решетку, вот так:

# ALL: ALL: DENY

Сохраняем файл и выходим.

Следующим шагом мы подкорректируем зеркала для обновления, содержащиеся в файле /etc/pacman.d/mirrirlist

Прокручиваем файл к разделу Russia и раскомметируем строчки с адресом yandex.ru

Сохраняем, закрываем.

Последняя операция – установка пароля для супермощного пользователя root. Задайте его, и не забудьте.

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

Жмем Done в самом конце.

Изменения применяются.

Последнее, что нам нужно будет сделать – это выбрать загрузчика. Пункт 7 Install Bootloader.

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

Теперь нам нужно выбрать, куда устанавливать загрузчик. Выбираем пункт /dev/sda

Установка загрузчика Grub

Все, уважаемый читатель, 8 Exit Install.

Поздравляю, Arch Linux стоит, вводите команду reboot и не забудьте вынуть загрузочный диск из СДРОМА. Кстати, СДРОМ не откроется, пока не начнется перезагрузка, потому что диск примонтирован, вот такие особенности Linux.

Все, Linux загрузился и приглашает начать работу с ввода логина и пароля. А вы что ожидали?

Логинимся как root (пароль от рута вы сами завали, так что вводите, если не забыли).

Поздравляю, вы залогинились как root (по крайней мере, я точно залогинился).

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

Тогда все должно работать, пишем команду ping google.com и наблюдаем веселую картину удачных пингов.

Когда картина пинга наскучит, нажмите ctrl+c.

ping

Если ping у вас не проходит, то убедитесь в том, что вы получали в детстве достаточно витаминов.

Наконец-то теперь мы можем установить программу для удаленного SSH доступа через Putty. Помните я об этом писал?

Теперь мы узнаем как это все настраивается на стороне сервера.

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

У Arch есть такая замечательная штуковина, как менеджер пакетов. Называется он pacman. Назначение pacman-а – установка необходимых программ, их обновление, обновление всех имеющихся программ, установка необходимых компонентов для вновь устанавливаемых программ. В общем, замечательная вещь. Подробнее о pacman можно читать тут.

А пока введем команду pacman -Syu, которая синхронизует данные о пакетах на серверах Яндекса.

После завершения синхронизации мы установим программу для SSH доступа. Называется она openssh. Установка происходит командой pacman -Sv openssh

Pacman скачает и установит программу и все недостающие компоненты. Почему-то с первого раза у меня обновился только лишь pacman, а openssh не установился. Поэтому я повторяю команду pacman -Sv openssh

На этот раз попытка увенчалась удачной установкой программы.

Вот где расположен файл запуска /etc/rc.d/sshd

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

/etc/rc.d/sshd start

После чего будет возможен SSH-доступ к серверу.

Для доступа к серверу мы будем использовать программу Putty. Скачать ее можно либо с официального сайта, либо с Deposit Files (*.zip, 243 КБайта).

Вводим IP-адрес сервера (в моем случае 192.168.0.200) и подключаемся по SSH.

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

Напоследок мы обновим нашу систему замечательной командой pacman –Syu

В моем случае потребовалось загрузить обновлений на 100 Мбайт, так что мужайтесь, дело это не быстрое.

Пока на этом все. До следующей встречи предлагаю вам, уважаемый читатель, потыкать в google вопросами типа «основные команды linux» много всего забавного найдете.

С уважением, Андрей Морковин.

MAXCACHE: 1.04MB/0.00034 sec