Установка веб сервера на raspberry pi 2

Данное руководство поможет Вам создать свой собственный веб-сервер на базе мини компьютера raspberry pi. Также в нем детально описано: как настроить панель управления ajenti подключить домен и организовать систему резервного копирования файлов хостинга.

Внимание: Живая статья!

Если после прочтения у вас останутся вопросы, задавайте их в комментариях снизу и статья будет усовершенствована!

Предисловие

Хостинг на Raspberry pi

Фото сервера с этой статьей.

Всем привет, с вами Джон Панч. Я уже давно использую "малиновый хостинг" для своих проектов, он проверен не одним месяцем безотказной работы и было решено собрать все заметки сисадмина и поместить ее в эту подробную статью. Статья ориентирована на всех, включая новичков, которые никогда не имели дело с Raspberry pi и даже для тех, кто никогда не устанавливал свой веб сервер. Я постараюсь описать весь процесс от А до Я, и если у вас останутся вопросы, не стесняйтесь задавать их в комментариях.

Ранее я использовал VPS сервер и стоил он вместе с isp панелью мне порядка 12$ в месяц, сервер меня в принципе полностью устраивал, кроме цены. Увы но хостинг за 3 доллара не может мне дать всех тех возможностей, которые дает VPS. А собирать отдельный шумящий и гудящий пылесборник, который нещадно будет кушать мою электроэнергию дома у меня не было желания.

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

Покупка raspberry pi и комплектующих

Свой raspberry pi 2 я купил вместе с корпусом и блоком питания на aliexpress и обошлось мне все примерно в 45$. Плюс если добавить покупку Micro SD карты, то все 50$. На момент написания статьи в продаже уже имеется третья версия мини компьютера raspberry pi 3. В среднем его цена не изменилась, все те же 40$

Приобрести raspberry pi 3 с бесплатной доставкой можно по ссылке

Кроме того кроме самого устройства вам потребуются блок питания на 5V и 2A, и возможно корпус, если вы эстет.

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

Какую SD карту лучше использовать для Raspberry Pi

Покупать SD карту на Али я не советую, так как они и без того у нас не дорогие, да и пойди пойми что там за скорости у этих китайских карт. Raspberry очень привередлив к классу карты, чем выше - тем лучше. Я использую Transcend 16 GB microSDHC class 10. Для хостинга может вполне хватить и карты на 8GB. Мой хостинг с 7 небольшими проектами занимает всего 4.7GB. Поэтому какой объем карты вам нужен решайте сами но не более 32GB.

Установка Raspbian на Raspberry pi

Прежде всего у вас должен быть карт ридер, чтобы загрузить на SD карту операционную систему Raspbian. По сути это тот же Debian но с адаптацией под Raspberry pi.

Я бы советовал использовать решение из коробки, с автоматическим установщиком нужной OC на карту памяти. В специальном руководстве для новичков, вы можете узнать как ее установить.

Если коротко, то вам необходимо отформатировать вашу карту в формате FAT программой SD Formatter, скачать автоматический установщик, выбрать OC и дождаться ее загрузки на карту. В нашем случаи это будет Raspbian.

Первый запуск Raspberry pi

При первом запуске Вам понадобиться монитор с выходом на hdmi (либо переходником) и клавиатура. Подключить вы их сможете через USB порты вашего raspberry. Далее вставьте карту памяти в Raspberry pi и подключите блок питания к устройству. Чуть не забыл про LAN кабель, его тоже следует подключить, а иначе у устройства не будет доступа к интернету. Если все сделано правильно, то после включения Вы увидите много бегущего текста в конце которого предстанет меню конфигурации.

Интерфейс Raspi-config

Панель управления Raspberry pi 2

Расширяем память SD карты

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

Меняем пароль пользователя

Далее рекомендуется поменять пароль пользователя Change User Password, вам будет предложено ввести новый пароль 2 раза. Не ошибитесь с раскладкой.

Логин и пароль по умолчанию: pi/raspbian

Добавляем русский язык

Переходим в пункт Internationalisation Options и в нем выбираем Change Locale в открывшемся списке опуститесь до пункта ru_RU.UTF-8 UTF-8 и нажмите пробел, тем самым выбрав Русский язык. Далее кнопкой Tab переключитесь на пункт Ok чтобы сохранить изменения.

Дополнительные настройки

Дополнительные настройки Raspberry pi 2

Перейдите к пункту Advanced Options он раскроет перед вами список дополнительных настроек где необходимо внести еще 2 изменения.

Hostname (не обязательно)

Чтобы сменить имя хоста, нажмите на Hostname и впишите свое название сервера. Например: pedanto.com

Включение SSH

Также вам необходимо включить SSH для работы с командной строкой через putty делается это там же в дополнительных настройках.

Сохранение изменений

После того как вы внесли все изменения, выберите пункт , ваш raspberry будет перезагружен и все изменения вступят в силу.

Снова открыть консоль настроек можно используя команду: sudo raspi-config

Настройка роутера и сети

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

Узнаем IP адрес на котором висит Raspberry

Далее нужно узнать какой сетевой IP был назначен роутером для Raspberry. В консоли нужно прописать соответствующую команду

hostname -I

Позволяет узнать на каком IP у роутера висит Raspberry

Узнаем IP роутера

Обычно IP адрес роутера такой: http://192.168.1.1, но в моем случаи он выглядит так miwifi.com

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

Логин и пароль всех роутеров по умолчанию: admin/admin

Открытие 80 порта

В настройках роутера, вам необходимо задать правило проброса портов. Дело в том что у вас есть 2 IP адреса, внешний (который выделил провайдер) и внутренний (который выделил роутер вашему raspberry) и ваша задача сделать так, чтобы при обращении кого-либо в интернете на ваш внешний IP адрес, роутер понимал информацию с какого внутреннего IP необходимо отображать.

В http протоколе используется 80 TCP порт, поэтому необходимо сделать port forwarding в Вашем роутере.

Я понимаю что роутеры у всех разные, поэтому изучите настройки своего и найдите аналогичное меню.

У меня это выглядит так:

Настройки роутера Xiaomi

После этого при обращении на ваш внешний IP посетитель будет получать данные генерируемые вашим Raspberry pi. Но пока он у нас нечего не генерирует, и сейчас мы это будем исправлять.

Подключаемся по SSH

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

Для подключения к Putty используйте внутренний IP вашего Raspberry, и в целях безопасности не советую открывать доступ к консоли извне.

Подключение к Putty

После того как откроется консоль вас попросит ввести логин и пароль от Raspberry, по умолчанию это: pi/raspbian, но вы наверняка уже поменяли пароль при настройке, которую мы делали выше вот и используйте его.

Интерфейс консоли выглядит так, привыкайте:

Интерфейс работы с Putty

Теперь наш Raspberry будет получать все необходимые задания удаленно через консоль. И первым таким заданием станет установка WEB сервера ajenti на raspberry pi.

Установка Ajenti через Putty

Используя Putty пишем следующую команду

sudo -s

Это переключит нас в режим root и избавит от лишних подтверждений во время установки.

Далее нам следует установить базовую панель Ajenti

wget -O- https://raw.github.com/ajenti/ajenti/1.x/scripts/install-debian.sh | sh

Дождитесь завершения установки и после выполнения перезагрузите ajenti

service ajenti restart

После этого устанавливаем Web модуль Ajenti, без него мы не сможем управлять сайтами в панели

apt-get install ajenti-v ajenti-v-nginx ajenti-v-mysql ajenti-v-ftp-pureftpd ajenti-v-php-fpm php5-curl

По окончанию, снова перезагружаем Ajenti

service ajenti restart

Не забываем про необходимые компоненты работы с изображениями и БД

apt-get install php5-mysql imagemagick php5-imagick php5-gd

И опять перезагрузка (на всякий случай)

service ajenti restart

Полное удаление Apache (если он установлен)

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

Первым делом останавливаем Apache

sudo service apache2 stop

После подчищаем все его компоненты

sudo apt-get purge apache2 apache2-utils apache2.2-bin apache2-common

sudo apt-get autoremove --purge

sudo rm -Rf /etc/apache2 /usr/lib/apache2 /usr/include/apache2

Перезагружаем сервер

sudo reboot

Вот и все! Сервер полностью готов к эксплуатации, и теперь можно приступить к добавлению сайта в панель управления.

Интерфейс панели управления Ajenti

Попасть в панель Ajenti вы можете по адресу, который роутер назначил вашему Raspberry Pi.

В моем случаи адрес https://192.168.31.139:8000/

Обратите внимание на протокол https в начале, и порт 8000 в конце, это важно!

Браузер Chrome будет ругаться что Ваше подключение не защищено, проигнорируйте это сообщение.

При входе Ajenti потребует ввод пароля.

Пароль к Ajenti умолчанию: root/admin

В дальнейшем вы можете поменять пароль в настройках Ajenti.

Продолжение статьи: Как настроить ajenti