Raspberry Pi: Капризная малютка
Не так давно я стал счастливым обладателем одноплатного микрокомпьютера Raspberry Pi. Радости не было предела, когда я раскрыл заветную посылку, но спешу разочаровать - потом меня ждало только уныние и геморрой. Хочу поделиться своими маленькими победами и большими промахами, в моей недолгой эпопее по использованию Raspberry Pi. Я думал разделить свою статью на несколько частей, и рассказать поэтапно: от осуществления заказа, до развертывания веб-сервера, но сделаю немного по-другому. В этой статье я расскажу, с чем мне пришлось столкнуться в своих первых шагах по изучению данного устройства, а в последующих дам некоторые указания и советы тем, кто хочет или еще только подумывает о приобретении одноплатного микрокомпьютера Raspberry Pi. Итак, перед нами четко поставленная задача: развертывание веб-сервера на Raspberry Pi.
Первое знакомство
Я заказал Raspberry Pi с корпусом и готовой флеш-картой, на который уже была установлена Noobs (это некий установщик, который позволяет загрузить одну из ОС, заранее записанных на карту, либо установка может происходить после скачивания нужной ОС, поэтому есть два варианта установщика: lite (установка системы по сети) и offline (на карте уже имеются предустановленные ОС)). После подключения устройства, а для этого мне понадобилось: клавиатура, сетевой кабель и HDMI шнур, все выглядело довольно несуразно и это немного размыло мои "розовые" идеи. Изначально малинку я подключал к своему плазменному телевизору: LG 42PM4700n, это был мой единственный вариант использовании малинки, при подключении дополнительных устройств. Как и ожидалось, Raspberry Pi очень придирчив к питанию. Я пробовал использовать свое китайское зарядное устройство, которое выдает 0.7А. В итоге о подключении периферии пришлось забыть. Забегая вперед хочу сказать, что сейчас малинка у меня работает именно от этого зарядника, позже я объясню как так получилось.

Итак, я немного отвлекся. При загрузке Raspbian OS, я использовал несколько вариантов: загружался по сети, скачивал offline версию и проводил установку с нее. Потом как обычно обновлял пакеты, устанавливал обновления и... получал неизвестные ошибки. Случалось, что малинка не могла прочесть устройства, либо клавиатуру, либо мышку (от нее я в последствии отказался напрочь - она нужна была мне для работы в графическом режиме), либо отказывался загружаться какой-то модуль и не помогала даже перезагрузка. Отмечу, что "подготовленная" разработчиками флешка (8Гб) использовалась только на 1/8 своего объема, а при использовании noobs, вам вряд ли удастся расширить root раздел. Было решено скачать образ Rapbian OS и записать его на карту при помощи Win32DiskImager, но меня ждал жесткий облом. Запись образа прошла, но малинка просто не увидела эту ось.
Правильное решение
Далее я действовал по старинке. Использовал Gparted. Оставил раздел fat16 (чтобы иметь возможность закинуть noobs и загрузиться с нее, но это на крайний случай), на всякий случай, расширил основной раздел ext4, добавил swap раздел. Теперь, что я сделал дальше для меня останется загадкой. Как бы это не странно звучало, дернул меня черт установить Raspbian Server Edition Version 2.3 (актуальная версия 2.5), до этого найденную в сети. Ее плюс в том, что нет необходимости проводить первоначальные настройки системы (я имею в виду raspi-config ), которые предлагают нам сменить имя хоста, разогнать малинку, включить ssh и еще много чего. Как оказалось ssh уже был включен по умолчанию, а этого мне вполне достаточно, чтобы проводить нужные манипуляции с малинкой (но у вас всегда есть возможность использования команды sudo raspi-config). Под рукой всегда есть Putty и Winscp517. Поэтому, при первом включении просто начнется загрузка оси. Следовательно отпадает ненужное использование кучи шнуров и кабелей. Ну, а далее мы медленно переходим к цели нашей задачи.
Веб-серверу быть!
Отмечу, что на роутере у меня настроен DHCP, который раздает всем подключенным устройствам определенные адреса, т.е. я снял с себя необходимость ковыряния сетевых настроек в Raspberry Pi. Веб-сервер разворачиваем при помощи Nginx. Скажу, что я уже пробовал разные варианты: apache, lighthttpd и тот же nginx. Уже было решил опустить руки и сделать из малинки торрент-качалку, но в буквально на днях я снова поймал себя на мысли, что не подняв веб-сервер я не дам себе спокойно жить дальше , и снова вернулся к nginx (я не стал шаманить с репозиториями и ключами, поэтому версия nginx 1.2.1). Сейчас веб-сервер успешно запущен, но не обошлось без подводных камней. Итак, сетевые настройки малинки не трогаем, а приступаем к установке необходимых модулей:
sudo apt-get install nginx sudo apt-get install php5-fpm php5-common php5-mysql php5-gd sudo apt-get install mysql-server php5-mysql
Я советую перезагрузить nginx и на всякий случай запустить/перезагрузить php. У меня была ситуация, при которой php отказывался работать, даже при наличии необходимых настроек. В нашей конференции в скайпе, мы устроили мозговой штурм, но даже это не дало положительных результатов. В последующем мне помог Станислав, который отыскал и устранил ошибку - она заключалась в отсутствии одного параметра, в конфигурации приведенного далее файла (но мне кажется просто не был запущен php). Теперь редактируем файл /etc/nginx/sites-enabled/default, примерно до такого вида:
server { listen 80; server_name raspberrypi; root /var/www/html/raspberrypi; index index.php index.html; location / { try_files $uri $uri/ /index.php?q=$uri&$args; #try_files $uri $uri/ /index.html; } location ~* \.(htm|html|htc|jpg|JPG|jpeg|JPEG|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|7z|ace|3gp|avi|mp4|jar|jad|swf)$ { gzip off; access_log off; expires max; } location ~ \.php$ { #fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_buffers 8 256k; fastcgi_buffer_size 128k; fastcgi_intercept_errors on; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } }
Параметр root говорит нам о том где будет находится наша CMS, а это безусловно будет MaxSite . Очередной перезапуск nginx. Загружаем в целевую папку CMS и действуем строго согласно инструкции. Забыл отметить, что создать базу можно с помощью mysqldump . Устанавливать ее нет необходимости, т.к. она загружается при установке модуля мускула. Просто воспользуйтесь следующей командой:
mysqladmin -u USER -pPASSWORD create NEWDATABASE
Как ни странно, но установка прошла удачно, без каких то эксцессов и ошибок - вторые сутки мой веб-сервер работает без каких-либо нареканий (ссылку на сервер не даю в виду того, что у меня динамический IP, пока нет времени регистрировать доменное имя и связывать DNS с сервером). В целом, я уже провел нагрузочные тесты, при помощи сторонних сайтов, и малинка с ними стойко справилась. Позже я приведу более подробную информацию о проводимых мной тестах и полученных в последствии результатах.
Сейчас я хочу подвести некий итог. Как оказалось, на практике, Raspberry Pi ведет себя довольно капризно и нужно быть предельно аккуратным и последовательным в своих действиях. Радует, что можно обойтись одним лишь сетевым и Ethernet кабелями (в случае с веб-сервером). В целом я удовлетворен работой малинки, но сейчас чувствую, что можно из нее выжать чуть больше того, что я хочу... Следите за обновлениями моего блога, т.к. будут статьи о моих экспериментах с Raspberry Pi. На этом я откланиваюсь, и желаю вам удачи и терпения в ваших изысканиях.
Заметки юного пользователя:
1. Разгоняя устройство выше 700 МГц убедитесь, что источник питания выдает выше 0.7А. Это касается и подключения дополнительной периферии.
2. Задать пароль для root пользователя можно при помощи команды sudo passwd root.
3. Установка ОС, штатный разгон (turbo mode), перенос ОС на USB брелок, все подробно описаны на wiki.openelec.tv
4. Несколько статей по прокачке веб-сервера: раз , два
З.Ы. Многое, в этой статье я упустил из виду, и возможно намеренно допустил некоторые ошибки в описании происходящего, потому что все писалось на одном дыхании, и я могу лишь просить вас... понять и простить автора статьи.
- jimmyjonezz's блог
- Добавить комментарий
- 4594 просмотра
Комментарии
17 комментария(ев)Дата: СБ, 16/11/2013 - 17:01
...все больше склоняюсь к куби-боарду или вообще мини-ПК.
Цитировать
именно так. Когда написано, что потребляемая мощность самой расперри доходит до 3.5 ватт, это не значит что источник питания должен быть именно на ток 0.7 А, мощность источника всегда выбирается с запасом в 1.5-2 раза.Цитировать
видел на тубе видео, что туда умудрялись семерку влепить, на ARM. Вот это любопытно.Дата: СБ, 16/11/2013 - 21:03
Android бы еще попробовать... но скорее всего это уже будет XBMC.
Дата: ВС, 17/11/2013 - 05:48
...кстати, информация к размышлению:
Цитировать
- Официальный сайт .NET Micro Framework ]]>http://www.microsoft.com/net/multiple-platform-support]]>
- Страница проекта на CodePlex ]]>https://netmf.codeplex.com]]>
- Open Source проекты на .NET Micro Framework ]]>http://electronics-lab.ru/tag/.NET%20Micro%20Framework]]>
- Машинка на контроллере с .NET Micro Framework, управляемая акселерометром Android-устройства ]]>http://habrahabr.ru/post/168723]]>
Дата: ВС, 17/11/2013 - 16:45
Интересная информация, но думаю, что к ней я возвращусь еще не скоро...
З.Ы. Интересно посмотреть - ]]>http://raspberrypi.ru/readblog/226/]]>
UPD1: Кстати, связь raspberry pi + .net micro framework возможна, но через mono. ]]>http://blogs.msdn.com/b/laurelle/archive/2013/06/21/net-microframework-on-raspberrypi-part-1.aspx]]>
Дата: ЧТ, 21/11/2013 - 22:38
Честно говоря я не, а понял в чем заключаются уныние и геморрой? Установка и настройка nginx вполне стандартная (как и на любом хостинге, а опечатки в конфиге или что-то запустить забыл это не считается
), настройка самой малины также не вызывает затруднений, вот описание моего опыта: ]]>http://diyordie.ru/rpi-conf/]]> , все довольно логично, просто не надо было юзать Noobs, а скачать самый обычный Raspbian с оф сайта, записать его на флешку и все.
Не понял зачем разгонять: мизерный прирост в производительности (он хоть заметен?) может привести к нестабильной работе и куче глюков, о чем в Эбен Аптон, создатель малины, предупреждал где-то в своих статьях.
Дата: СБ, 23/11/2013 - 16:32
В едином потоке мыслей, что я изрек, затруднительно увидеть "уныние и геморрой", но они есть... перечитывайте статью, но уже не по диагонали =)
Дата: ПТ, 22/11/2013 - 22:19
На работе выдали 33 комплекта малинки. Сделал из них ATC-ки
Дата: СБ, 23/11/2013 - 16:35
подробности в студию...
Дата: СБ, 23/11/2013 - 17:13
...АТС каждому, не жирно, или это для продажи? Или может по SIP телефону?
Дата: Втр, 26/11/2013 - 16:39
Не для продажи. Для службы город 112
Дата: СБ, 30/11/2013 - 17:49
Понятно, но вы немногословны. Сообществу, думаю, были-бы интересны подробности, архитектура реализации.
Дата: СБ, 30/11/2013 - 21:34
очень интересно!
Дата: ЧТ, 05/12/2013 - 20:05
архитектура\смысл таковы, человек у нас в крае находясь в каком либо районе звонит в службу 112 (с сотового или стационарного). Система определяет с какого района происходит вызов и переадресует вызов в ЕДДС нужного района. Если же по какм либо причинам ЕДДС не отвечает то вызов уходит в ЦОВ. Ну а штатными средствами asterisk (FreePBX) это реально настроить.
Дата: СБ, 30/11/2013 - 22:03
У нас для службы 112 используются компы и у каждого по два монитора, т.к. супер-пупер программное обеспечение (и наверняка дорогое) тупо не влазит на один моник. Он на два моника еле помещается. Если честно то как устроены пульты в главном управлении не знаю, но у нас в службе тоже стоит один такой пульт 112. И он соединен с пультами из главного управления по оптике/ethernet. А уж как в главном управлении они стыкуются с телефонной сетью х.з.
Дата: ЧТ, 05/12/2013 - 19:57
для службы 112 по мимо системника с 2-мя мониками еще входят телефоны (обычный SIP или софтфон, для них собственно и АТС делали), далее в самой стойке маршрутизатор(cisco), коммутатор (опять cisco), vipnet и собственно сервер с прилогами. + всякие модули оповещения. Конкретно у вас я думаю стоит пункт ДДС который соединяется(подчиняется) ЕДДС, который уже в подчинении ЦОВ, как то так)
Дата: ЧТ, 05/12/2013 - 22:50
У нас гарнитура используется, которая вставлена в звуковую карту.
Дата: ПТ, 06/12/2013 - 18:29
Можно и гарнитуру, не суть важно. Можно IP телефон или софтфон с гарнитуркой, кому как удобно.