Данное руководство поможет Вам создать свой собственный веб-сервер на базе мини компьютера raspberry pi. Также в нем детально описано: как настроить панель управления ajenti подключить домен и организовать систему резервного копирования файлов хостинга.
Внимание: Живая статья!
Если после прочтения у вас останутся вопросы, задавайте их в комментариях снизу и статья будет усовершенствована!
Фото сервера с этой статьей.
Всем привет, с вами Джон Панч. Я уже давно использую "малиновый хостинг" для своих проектов, он проверен не одним месяцем безотказной работы и было решено собрать все заметки сисадмина и поместить ее в эту подробную статью. Статья ориентирована на всех, включая новичков, которые никогда не имели дело с Raspberry pi и даже для тех, кто никогда не устанавливал свой веб сервер. Я постараюсь описать весь процесс от А до Я, и если у вас останутся вопросы, не стесняйтесь задавать их в комментариях.
Ранее я использовал VPS сервер и стоил он вместе с isp панелью мне порядка 12$ в месяц, сервер меня в принципе полностью устраивал, кроме цены. Увы но хостинг за 3 доллара не может мне дать всех тех возможностей, которые дает VPS. А собирать отдельный шумящий и гудящий пылесборник, который нещадно будет кушать мою электроэнергию дома у меня не было желания.
К счастью прогресс не стоит на месте и листая свой любимый Pikabu я увидел пост про замечательный маленький компьютер, на котором можно работать в Linux и даже играть в игры. И тут я понял, что пришло время портативных серверов и решил что нужно действовать.
Свой raspberry pi 2 я купил вместе с корпусом и блоком питания на aliexpress и обошлось мне все примерно в 45$. Плюс если добавить покупку Micro SD карты, то все 50$. На момент написания статьи в продаже уже имеется третья версия мини компьютера raspberry pi 3. В среднем его цена не изменилась, все те же 40$
Приобрести raspberry pi 3 с бесплатной доставкой можно по ссылке
Кроме того кроме самого устройства вам потребуются блок питания на 5V и 2A, и возможно корпус, если вы эстет.
Посылки из Китая, дело долгое, поэтому пока вы ее будете ждать стоит поискать хорошую SD карту для сервера.
Покупать SD карту на Али я не советую, так как они и без того у нас не дорогие, да и пойди пойми что там за скорости у этих китайских карт. Raspberry очень привередлив к классу карты, чем выше - тем лучше. Я использую Transcend 16 GB microSDHC class 10. Для хостинга может вполне хватить и карты на 8GB. Мой хостинг с 7 небольшими проектами занимает всего 4.7GB. Поэтому какой объем карты вам нужен решайте сами но не более 32GB.
Прежде всего у вас должен быть карт ридер, чтобы загрузить на SD карту операционную систему Raspbian. По сути это тот же Debian но с адаптацией под Raspberry pi.
Я бы советовал использовать решение из коробки, с автоматическим установщиком нужной OC на карту памяти. В специальном руководстве для новичков, вы можете узнать как ее установить.
Если коротко, то вам необходимо отформатировать вашу карту в формате FAT программой SD Formatter, скачать автоматический установщик, выбрать OC и дождаться ее загрузки на карту. В нашем случаи это будет Raspbian.
При первом запуске Вам понадобиться монитор с выходом на hdmi (либо переходником) и клавиатура. Подключить вы их сможете через USB порты вашего raspberry. Далее вставьте карту памяти в Raspberry pi и подключите блок питания к устройству. Чуть не забыл про LAN кабель, его тоже следует подключить, а иначе у устройства не будет доступа к интернету. Если все сделано правильно, то после включения Вы увидите много бегущего текста в конце которого предстанет меню конфигурации.
Первым делом управляя клавиатурой, переходим к пункту Expand Filesystem и тем самым расширяем свободное место хранения файлов на SD карте. Но если вы использовали автоматический загрузчик, а не монтировали образ в ручную, то этот пункт можно проигнорировать.
Далее рекомендуется поменять пароль пользователя Change User Password, вам будет предложено ввести новый пароль 2 раза. Не ошибитесь с раскладкой.
Логин и пароль по умолчанию: pi/raspbian
Переходим в пункт Internationalisation Options и в нем выбираем Change Locale в открывшемся списке опуститесь до пункта ru_RU.UTF-8 UTF-8 и нажмите пробел, тем самым выбрав Русский язык. Далее кнопкой Tab переключитесь на пункт Ok чтобы сохранить изменения.
Перейдите к пункту Advanced Options он раскроет перед вами список дополнительных настроек где необходимо внести еще 2 изменения.
Чтобы сменить имя хоста, нажмите на Hostname и впишите свое название сервера. Например: pedanto.com
Также вам необходимо включить SSH для работы с командной строкой через putty делается это там же в дополнительных настройках.
После того как вы внесли все изменения, выберите пункт , ваш raspberry будет перезагружен и все изменения вступят в силу.
Снова открыть консоль настроек можно используя команду: sudo raspi-config
Чтобы наше устройство было видно извне мы должны получить свой статический внешний IP адрес. Купить его можно у провайдера и как правило он не стоит больше доллара в месяц. В противном случаи на Ваши сайты заходить сможете только Вы.
Далее нужно узнать какой сетевой IP был назначен роутером для Raspberry. В консоли нужно прописать соответствующую команду
hostname -I
Позволяет узнать на каком IP у роутера висит Raspberry
Обычно IP адрес роутера такой: http://192.168.1.1, но в моем случаи он выглядит так miwifi.com
Чтобы узнать адрес наверняка, переверните Ваш роутер и посмотрите на наклейку снизу. Там как правило есть вся необходимая информация.
Логин и пароль всех роутеров по умолчанию: admin/admin
В настройках роутера, вам необходимо задать правило проброса портов. Дело в том что у вас есть 2 IP адреса, внешний (который выделил провайдер) и внутренний (который выделил роутер вашему raspberry) и ваша задача сделать так, чтобы при обращении кого-либо в интернете на ваш внешний IP адрес, роутер понимал информацию с какого внутреннего IP необходимо отображать.
В http протоколе используется 80 TCP порт, поэтому необходимо сделать port forwarding в Вашем роутере.
Я понимаю что роутеры у всех разные, поэтому изучите настройки своего и найдите аналогичное меню.
У меня это выглядит так:
После этого при обращении на ваш внешний IP посетитель будет получать данные генерируемые вашим Raspberry pi. Но пока он у нас нечего не генерирует, и сейчас мы это будем исправлять.
Вы конечно можете продолжать использовать монитор и клавиатуру для работы с Вашим raspberry pi, но я предпочитаю вводить все команды удаленно через putty, так как клавиатура и монитор у меня всего одни, и без них мой основной компьютер не работает как следует :)
Для подключения к Putty используйте внутренний IP вашего Raspberry, и в целях безопасности не советую открывать доступ к консоли извне.
После того как откроется консоль вас попросит ввести логин и пароль от Raspberry, по умолчанию это: pi/raspbian, но вы наверняка уже поменяли пароль при настройке, которую мы делали выше вот и используйте его.
Интерфейс консоли выглядит так, привыкайте:
Теперь наш Raspberry будет получать все необходимые задания удаленно через консоль. И первым таким заданием станет установка WEB сервера ajenti на raspberry pi.
Используя 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
Так как 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 вы можете по адресу, который роутер назначил вашему Raspberry Pi.
В моем случаи адрес https://192.168.31.139:8000/
Обратите внимание на протокол https в начале, и порт 8000 в конце, это важно!
Браузер Chrome будет ругаться что Ваше подключение не защищено, проигнорируйте это сообщение.
При входе Ajenti потребует ввод пароля.
Пароль к Ajenti умолчанию: root/admin
В дальнейшем вы можете поменять пароль в настройках Ajenti.
Продолжение статьи: Как настроить ajenti