[Из песочницы] Выжать все соки или используем Raspberry pi на всю катушку

Всем привет! Долой унылые речи о том, что это мой первый пост и все такое. Пожалуй лучше я расскажу о том, как выжать все соки из маленькой малютки под названием Raspberry PI (далее RPI), ценой $ 35. Я уверен на 146,6% что здесь уже были посты подобного рода, и этот пост не претендует на твердую пять. Скорее это просто вступительное слово о том: «Как я занял себя делом на пару унылых вечеров». Собственно мы получим в итоге Raspberry PI который можно использовать:

как домашний web-сервер (если ты какой-нибудь PHP-разработчик, и тебе не чуждо веселье); как мультимедийную приставку с популярным XBMC Media Center (или супер-пупер-крутую-шняжку к телевизору за скромные 1800$); и как ночную торрент качалку, с web-интерфейсом (для ленивых); Для тех кому стало интересно прошу под кат (Внимание! Трафик).Подготовка Итак, что для всего этого понадобится: Raspberry PI model B SD карта на 8GB, скорость должна быть высокой. (Подойдут 6 и 10 класс) USB Flash карта, для того, что бы не забивать и без того малую память SD карты фильмами которые ты захочешь посмотреть HDMI или SCART-RCA кабель Блок питания, подойдет любой мини-USB зарядник с выходом 5 В и током до 2А, с MicroUSB выходом или MicroUSB переходник для подключения к компьютеру Немного свободного времени Прямые руки (во всяком случае мне они точно понадобились) Фото моей модели e57930228213333a110b602ac7c3498e.jpg297c0e723380e3242472fc39ac641a37.jpg Так же нам понадобятся некоторые программы, PUTTY, WinSCP, XMing. Итак, нам необходимо что бы все что мы задумали работало без выключения/перезагрузки RPI, следовательно сборки типа OpenELEC, RaspBMC, XBian можно исключить. Нам нужно что бы XBMC был «внутри» нашей ОС, как плеер, так что мы сделаем что-то подобное. Мы будем использовать Raspbian. Скачать можно с оф. сайтаДальше все просто. Разархивируем скачанное, подключаем SD карту к компьютеру, далее нам понадобится программа Win32DiskImager. Устанавливаем, запускаем. Указываем путь к .img файлу с ОС на борту, далее в поле «Device» выбираем из списка носителей нашу SD карту и нажимаем «Write». После в появившемся диалоговом окне выбираем «Yes» и готовимся к первому запуску RPI.

Для работы RPI нам нужен телевизор с HDMI выходом, но на крайний случай можно обойтись и обычным. Для этого нам понадобится вместо HDMI кабеля SCART-RCA кабель и обычные USB колонки со своим питанием! Думаю понятно что и куда нужно втыкать. Если все прошло как-по-маслу, мы увидим окно с настройками нашей ОС.

Пункты меню с подробным описанием и фото d22cae90b6f3822fa1b1cd9baa81b081.png— Expand filesystem — Расширить основной раздел на всю SD карту.— Change User Password — Установка пароля для пользователя «pi» (по умолчанию пароль «raspberry»). Пароль нужно ввести два раза! — Enable Boot to Desktop — Загружать/не загружать графический интерфейс при запуске. Отключаем, т.к. нам он не нужен, а включить можно командой startx. После выбора есть еще 2 пункта: первая строка — загружать, вторая строка — не загружать (есть ещё третья строка, но в данной статье она нам не интересна).— Internationalisation Options — Выбор месторасположения и языка, есть 3 пункта:

Change Locale — Выбор языка, выбираем «ru_RU.UTF-8 UTF-8». Change Timezone — Выбор часового пояса, выбираем свой. Change Keyboard Layout — Настройки клавиатуры. Оставляем все как есть.  — Enable Camera — Включить поддержку камеры. Нам это не нужно, не сегодня точно.— Add to Rastrack — Регистрация устройства в общей базе. Пропускаем.— Overclock — Разгон процессора. По умолчанию установлена частота 700МГц, можно повысить до 1000МГц. Raspberry Pi теперь можно официально разогнать до 1 ГГц и не потерять гарантию (клик!). Ставим 1000МГц, это даст нам производительности при работе с XBMC.— Advanced Options — Дополнительные настройки. Есть след. пункты: Overscan — Если у вас по краю изображения имеется широкая чёрная полоса, то необходимо выключить этот режим. Hostname — Сетевое имя RPI. Оставляем по-умолчанию. Memoy Split — Выделение видеопамяти для работы графического процессора. Ставим 128. SSH — Доступ по SSH. Включаем, т.к. далее все будем настраивать по SSH. У меня появились некоторые ошибки.Initial ssh key generation still running. Please wait and try again.Лечится простыми действиями после перезагрузки: sudo rm /var/log/regen_ssh_keys.logsudo rm /etc/ssh/ssh_host*sudo ssh-keygen -A Update — Обновление ОС. Для этого необходим доступ в интернет. About raspi-config — Пропускаем, не интересно. Теперь нажимаем TAB, выбираем FINISH. После перезагрузки вводим логин pi и пароль который вы сделали (по умолчанию raspberry). Рекомендую сразу поменять рутовый пароль: sudo passwd root Настройка доступа по SSH к файловой системе RPI (из Windows) Первым делом скачиваем WinSCP. Устанавливаем, настраиваем.В поле host name вводим ip адрес RPI, у меня 192.168.1.100 (узнать можно с помощью Advanced IP Scaner, либо через роутер, думаю не стоит подробно объяснять как это сделать). В поле user name и password указываем данные для авторизации. Лучше всего пользоваться root’ом, далее Save. Далее все просто, указываем название, жмем чекбокс и OK. Все, теперь мы готовы приступить к следующему шагу.Xming: X-Server для Windows Собственно след. шагом будет установка X-Ming. Он нам нужен скорее для мониторинга, ну и это облегчит нам жизнь в будущем, так как мы поставим Conky для мониторинга и MySqlWorkbench для администрирования БД (но это скорее просто прихоть) на RPI. Тем кому это не нужно, могут смело идти к следующему шагу.Скачиваем, устанавливаем. Параметры установки: галка Non US keyboard Supportгалка XLaunnch wizardгалка Run UnilityNormal PuTTY Link SSH client

В свойствах ярлыка XMing прописываем путь_до_программы\Xming.exe:10 -clipboard -multiwindowПосле этого врубаем и можно смело подключаться к RPI посредством SSH, главное напомнить вашему SSH клиенту использовать X-11 Forwarding.

В PuTTY заходим в Connections → SSH → X11 → Включаем X11 ForwardingX display location — localhost:10.0Remote X11 authentification protocol — XDM-Authorization-1Затем сами настройки сессии (Sessions)HostName (or IP address) — 192.168.1.100 (ваш ip RPI) port 22Connection type — SSH → Жмем Save и подключаемся. Запускаем терминал и…

pi@raspberrypi ~ $ lxterminal& [1] 2997 pi@raspberrypi ~ $ Вуаля 35f088860585bc7d61d023bbecf1b8a9.jpg Установка XBMC на Raspberry Pi под Raspbian Все приготовления закончены и я думаю мы подошли к главному. Лирическое отступление. До того как я решил сделать так как мы сделаем, я ставил себе и OpenELEC и RaspBMC. Мне это не подошло, потому что приходилось перезагружать RPI что бы запустить или Raspbian или XBMC (В случае с OpenELEC), а с RaspBMC я не смог даже близко сделать что то подобное. Хотя может и найдутся умельцы которые скажут что я дурак, и все такое. Идем дальше. Описание сего процесса не моё, нашлись умельцы которые изобрели колесо за нас, я просто применил на практике. По порядку: cd /etc/apt/sources.list.d/ deb http://archive.mene.za.net/raspbian wheezy contrib CTRL + X → Y → Enter sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 5243CDED sudo apt-get update sudo apt-get install xbmc Добавляем пользователя из под которого планируется запускать XBMC в следующие группы (audio video input dialout plugdev tty) командой: sudo usermod -a -G имя_группы пользователь Затем, меняем настройки группы input командой: sudo nano /etc/udev/rules.d/99-input.rules В файле должно быть: SUBSYSTEM==«input», GROUP=«input», MODE=»0660» KERNEL==«tty[0–9]*», GROUP=«tty», MODE=»0660» Запускать XBMC командой: xbmc-standalone Дождаться загрузки и profit! Клик! f96c9e1453415037e75713bb6886eb9d.pngЭто уже настроенный XBMC с уже установленными плагинами, список я приведу ниже.

Если необходимо сделать Автостарт XBMC то нужно редактировать /etc/default/xbmc и изменить ENABLED to 1: ENABLED=1 Плагины которые стоят у меня: — repository.superrepo.org.frodo.al — Огромное количество всяких дополнений к XBMC— repository.seppius — Русский репозиторий, с дополнениями «наших» сайтов на подобии LostFilm и Seasonvar и не только. Можно найти на любой вкус— repository.oneevil — Сервис аддон ACEStream для XBMC и Аддон Torrenter в этом репозитории— repository.nuismons — TSengine api— plugin.watch.is.latest — Плагин для сайта watch.is (Сайт по приглашениям!)— plugin.video.torrenter.1.1.5.5 — Плагин для потокового воспроизведения торрент фильмов, скажем так.Так же нужно установить libTorrent, для того что бы стримить фильмы с LostFilm: sudo apt-get install python-libtorrent Все эти плагины можно спокойно найти в интернете, вдаваться в подробности настройки и установки я не буду.Что бы заработали скреперы — необходимо в настройках TheMovieDB использовать не TMDB, а IMDB. Не понял почему так, но после смены у меня заработали скреперы на поиске некоторых русских фильмов, однако некоторые все еще найти не может. Установка Conky Он нам нужен для мониторинга за температурой, загрузкой CPU и тд. По порядку: sudo apt-get install conky Затем создаем файл .conkyrc командой: sudo nano .conkyrc и вставляем туда: alignment top_left background no border_width 1 cpu_avg_samples 2 default_color white default_outline_color white default_shade_color white double_buffer yes draw_borders no draw_graph_borders yes draw_outline no draw_shades no use_xft yes xftfont DejaVu Sans Mono: size=12 gap_x 5 gap_y 60 minimum_size 5 5 net_avg_samples 2 no_buffers yes out_to_console no out_to_stderr no extra_newline no own_window yes own_window_class Conky own_window_type desktop stippled_borders 0 update_interval 1.0 uppercase no use_spacer none show_graph_scale no show_graph_range no

TEXT ${color grey}Uptime:$color $uptime ${color grey}Frequency (in MHz):$color $freq ${color grey}Frequency (in GHz):$color $freq_g ${color grey}RAM Usage:$color $mem/$memmax — $memperc% ${membar 4} ${color grey}Swap Usage:$color $swap/$swapmax — $swapperc% ${swapbar 4} ${color grey}CPU Usage:$color $cpu% ${cpubar 4} ${color red}Temp: $color ${alignr 4}${color red}${acpitemp}°С$color ${color grey}Processes:$color $processes ${color grey}Running:$color $running_processes $hr ${color grey}File systems: / $color${fs_used /}/${fs_size /} ${fs_bar 6 /} ${color grey}Networking: Up:$color ${upspeed eth0} ${color grey} — Down:$color ${downspeed eth0} $hr ${color grey}Name PID CPU% MEM% ${color lightgrey} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1} ${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2} ${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3} ${color lightgrey} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4} Запускать командой: conky Все настройки можно найти в интернете и настроить «на свой вкус».Клик! 9b5cff575f38929b1f526af106052ceb.jpg Установка и настройка WebServer-а Apache2.2, php5, mysql, phpmyadmin, mysql-workbench Просьба за данный пункт сильно не бить. Это не инструкция «как это должно быть», это инструкция «как это работает у меня», конструктивная критика по делу приветствуется, если будут какие-либо дополнения или замечания, приму во внимание, и адаптирую себе для работы.Перед установкой рекомендую в настройках роутера (на пример, мой ADSL модем 192.168.1.1 — пробросить порты Virtual Rout (Port Forwarding), пробрасываем 80 порт на 80 порт 192.168.1.100(.100 это у меня Raspberry PI))

Итак, поехали. GIT:

sudo apt-get install git Апач: sudo apt-get install apache2 apache2-doc libapache2-mod-scgi Теперь php5 с плюшками: sudo apt-get install php5 libapache2-mod-php5 libapache2-mod-auth-mysql php5 php5-common php5-curl php5-mysql php-image-graph imagemagick Ребутим апач: sudo service apache2 restart Проверяем. Заходим в браузере на IP_малинки (в моем примере 192.168.1.100). Если появилась надпись «It works!», то я вас поздравляю, если нет — просьба попробовать включить-выключить сначала. Для тех кто не пробрасывал порты, можно проверить прямо с RPI. Для этого цепляется через SSH и запускаем браузер: midori& Затем вводим localhost/ или localhost/apache2-default. Если появилась надпись «It works!», то я вас поздравляю, если нет — просьба попробовать включить-выключить сначала./var/www/ — папочка с вашими сайтами и скриптами./etc/php5/ и /etc/apache2/ — тут лежат конфиги php5 и апача.

Далее проверим работоспособность php5, создадим файл test.php:

sudo nano /var/www/phpinfo.php В него внесем изменения: CTRL + X → Y → Enter, заходим по ссылке IP_адрес_малины/test.php (если через RPI то localhost/test.php). Если появилось информация о PHP5 то все хорошо. Далее ставим PHPMyAdmin: sudo apt-get install phpmyadmin Что бы получить доступ к phphmyadmin, необходимо в файл /etc/apache2/apache2.conf sudo nano /etc/apache2/apache2.conf вписать следующее (необходимо только до версии Squeeze, начиная с версии 6,0 это будет включено в сценарий установки пакета /etc/apache2/conf.d/phpmyadmin.conf → …/…/phpmyadmin/apache.conf автоматически): Include /etc/phpmyadmin/apache.conf Перезапускаем апач: sudo /etc/init.d/apache2 restart Проверяем, заходим в браузере 192.168.1.100/phpmyadmin (c RPI localhost/phpmyadmin).Думаю с установкой веб-сервера закончено. Про настройку DNS в bind9 и VIrtual Hosts в апаче будет в другой статье. Скажу еще то, что для себя я поставил так же RhodeCode на RPI и хотел поставить какой нибудь Issue трекер. Выбор пал на YouTrack от JetBrain, но JavaМашина сильно грузит Raspberry, поэтому не стал заморачиваться. Так как я пользуюсь phpstorm — вот небольшое отступление о том Как подружить phpstorm с нашей БД на RPI: Врубаем PHPStorm заходим в DataBase (кнопка слева) → new → DataBase SourceКлик! a27c146ed32b72784fc29b6267ac0833.jpg DataBasse URL — адрес и порт удаленной машины, а так же имя БДUser — имя пользователя БДPassword — пароль пользователя БДКлик! e8bfa899eab01e63b9d99d46d38700c8.jpg SSH tunnel will be opened on localhost and port — порт обязательно должен быть свободным на машине, с которой нужно подключить phpstorm к mysql на удаленной машине.Монтируем нашу USB флешку Втыкаем флешку в RPI, вводим команду: sudo blkid Результат: /dev/mmcblk0p1: SEC_TYPE=«msdos» LABEL=«boot» UUID=»993B-8922» TYPE=«vfat» /dev/mmcblk0p2: UUID=«fc254b57–8fff-4f96–9609-ea202d871acf» TYPE=«ext4» /dev/sda: LABEL=«TR16GB» UUID=«D29807B898079A5D» TYPE=«ntfs» Смотрим, запоминаем, TR16GB, тип «ntfs», устанавливаем поддержку ntfs: sudo apt-get install ntfs-3g Создаем каталог, куда будем монтировать нашу флешку: sudo mkdir /mount/flash Открываем файл: sudo nano /etc/fstab Дописываем туда: «UUID=«D29807B898079A5D» /mount/flash ntfs-3g rw, force, exec, users 0 0» Где UUID, это уникальный id нашей флешки, который мы посмотрели командой sudo blkid в самом начале. Перезагружаем RPI: sudo reboot Установка Samba Приступаем к установке, Обновим на всякий случай все что мы тут натворили: sudo apt-get update && sudo apt-get upgrade Установим сервер Samba: sudo apt-get install samba samba-common-bin Теперь откроем /etc/samba/smb.conf и вписываем туда: [global] workgroup = WORKGROUP security = share guest ok = yes browseable = yes [flash] path = /mount/flash writeable = yes readonly = no browseable = yes guest ok = yes Где workgroup, это рабочая группа, скорее всего у вас WORKGROUP. Доступ к серверу будет осуществляться без авторизации. Если необходимо что бы при подключении надо было запрашивать пароль, то вместо security = share и guest ok = yes напишите security = user. Нужно так же создать нового пользователя, вводим команду sudo smbpasswd -a [имя], где [имя] — это имя пользователя. Сохраняем конфиг, перезагружаем: sudo /etc/init.d/samba restart Я «замапил» себе сетевой диск, для удобства. Можно прямо с компа закидывать фильмы на RPI и смотреть уже на огромном телевизоре, который допустим стоит у вас где-нибудь в гостиной.Клик! cc829f143ac0d183235445fbc0427bb0.jpg Установка rTorrent, Screen, RuTorrent Сначала поставим rTorrent sudo aptitude install rtorrent Затем создадим папку на нашей флешке, сюда будем качать наши фильмы: mkdir /mount/flash/Torrent/ А так же папку, где у нас будет храниться информация о закачках: mkdir /mount/flash/Torrent/.rt/ Затем переходим в домашнюю папку юзера, под которым будет работать rtorrent, у меня это /home/pi: cd /home/pi Тут создаем файл ».rtorrent.rc», это настройки нашего rtorrent: min_peers = 1 max_peers = 30 download_rate = 0 upload_rate = 0 directory = /mount/flash/Torrent/ session = /mount/flash/Torrent/.rt/ port_range = 40890–40890 port_random = no check_hash = yes session_save = yes encryption = allow_incoming, enable_retry, prefer_plaintext use_udp_trackers = yes dht = auto dht_port = 6881 encoding_list = UTF-8 scgi_port = 127.0.0.1:5000 Описание настроек можно посмотреть здесь. Настроим автозагрузку и установим screen для работы rtorrent в фоне: sudo aptitude install screen sudo wget http://libtorrent.rakshasa.no/attachment/wiki/RTorrentCommonTasks/rtorrentInit.sh? format=raw -O /etc/init.d/rtorrent Отредактируем скрип для корректной работы: sudo nano /etc/init.d/rtorrent в строке user=«user» пишем user=«pi». Сохраняем. Теперь все это дело добавим в автозагрузку и запустим: sudo chmod 755 /etc/init.d/rtorrent && sudo update-rc.d rtorrent defaults && sudo /etc/init.d/rtorrent start Настроим апач, включим модули: sudo a2enmod scgi Отредактируем файл /etc/apache2/apache2.conf — в самом конце файла нужно добавить строку — «SCGIMount /RPC2 127.0.0.1:5000». Перезапускаем апач: sudo service apache2 restart Пришло время ставить web-морду для нашего rtorrent. Я выбрал ruTorrent, т.к. она простенькая и на русском языке. Сначала поставим Subversion: sudo apt-get install subversion Теперь загрузим ruTorrent: cd /var/www/ sudo svn checkout http://rutorrent.googlecode.com/svn/trunk/rutorrent Выставим права на папку: sudo chown -R www-data: www-data ./rutorrent/ Осталось проверить работу нашей web-морды, заходим в браузере ip_адрес_RPI/rutorrent (если с RPI то localhost/rutorrent): Вуаля 6e903db6c249b07a836d3f9f0172f291.jpg Ну вот вроде и все. Теперь мы имеем готовый к работе RPI, для web-разработчиков, которые в ночь с пятницы на субботу могут поставить качать свой любимый сериал и на следующее утро, лежа на диване смотреть все это дело на огромном телике. Спасибо за внимание.P.S. Хочу принести извинения за отсутствие некоторых ссылок на сторонние ресурсы, материалом которых я руководствовался т.к. делал я это давно, а опубликовал только сейчас.

© Habrahabr.ru