...

четверг, 15 мая 2014 г.

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

Всем привет!

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



  1. как домашний web-сервер (если ты какой-нибудь PHP-разработчик, и тебе не чуждо веселье);

  2. как мультимедийную приставку с популярным XBMC Media Center (или супер-пупер-крутую-шняжку к телевизору за скромные 1800$);

  3. и как ночную торрент качалку, с web-интерфейсом (для ленивых);




Для тех кому стало интересно прошу под кат (Внимание! Трафик).



Подготовка




Итак, что для всего этого понадобится:


  1. Raspberry PI model B

  2. SD карта на 8GB, скорость должна быть высокой. (Подойдут 6 и 10 класс)

  3. USB Flash карта, для того, что бы не забивать и без того малую память SD карты фильмами которые ты захочешь посмотреть

  4. HDMI или SCART-RCA кабель

  5. Блок питания, подойдет любой мини-USB зарядник с выходом 5 В и током до 2А, с MicroUSB выходом или MicroUSB переходник для подключения к компьютеру

  6. Немного свободного времени

  7. Прямые руки (во всяком случае мне они точно понадобились)




Фото моей модели







Так же нам понадобятся некоторые программы, PUTTY, WinSCP, XMing. Итак, нам необходимо что бы все что мы задумали работало без выключения/перезагрузки RPI, следовательно сборки типа OpenELEC, RaspBMC, XBian можно исключить. Нам нужно что бы XBMC был «внутри» нашей ОС, как плеер, так что мы сделаем что-то подобное. Мы будем использовать Raspbian. Скачать можно с оф. сайта

Дальше все просто. Разархивируем скачанное, подключаем SD карту к компьютеру, далее нам понадобится программа Win32DiskImager. Устанавливаем, запускаем. Указываем путь к .img файлу с ОС на борту, далее в поле «Device» выбираем из списка носителей нашу SD карту и нажимаем «Write». После в появившемся диалоговом окне выбираем «Yes» и готовимся к первому запуску RPI.


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


Пункты меню с подробным описанием и фото

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.log

    sudo 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 Unility

Normal PuTTY Link SSH client


В свойствах ярлыка XMing прописываем путь_до_программы\Xming.exe :10 -clipboard -multiwindow

После этого врубаем и можно смело подключаться к RPI посредством SSH, главное напомнить вашему SSH клиенту использовать X-11 Forwarding.


В PuTTY заходим в Connections -> SSH -> X11 -> Включаем X11 Forwarding

X display location — localhost:10.0

Remote X11 authentification protocol — XDM-Authorization-1

Затем сами настройки сессии (Sessions)

HostName (or IP address) — 192.168.1.100 (ваш ip RPI) port 22

Connection type — SSH -> Жмем Save и подключаемся. Запускаем терминал и…



pi@raspberrypi ~ $ lxterminal&
[1] 2997
pi@raspberrypi ~ $




Вуаля




Установка XBMC на Raspberry Pi под Raspbian




Все приготовления закончены и я думаю мы подошли к главному. Лирическое отступление. До того как я решил сделать так как мы сделаем, я ставил себе и OpenELEC и RaspBMC. Мне это не подошло, потому что приходилось перезагружать RPI что бы запустить или Raspbian или XBMC (В случае с OpenELEC), а с RaspBMC я не смог даже близко сделать что то подобное. Хотя может и найдутся умельцы которые скажут что я дурак, и все такое. Идем дальше. Описание сего процесса не моё, нашлись умельцы которые изобрели колесо за нас, я просто применил на практике. По порядку:

cd /etc/apt/sources.list.d/


deb http://ift.tt/1nMZ1Rp 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!
Клик!

Это уже настроенный 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




Все настройки можно найти в интернете и настроить «на свой вкус».
Клик!




Установка и настройка 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




В него внесем изменения:

<?php
phpinfo();
?>




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
Клик!




DataBasse URL — адрес и порт удаленной машины, а так же имя БД

User — имя пользователя БД

Password — пароль пользователя БД
Клик!




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 и смотреть уже на огромном телевизоре, который допустим стоит у вас где-нибудь в гостиной.
Клик!




Установка 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://ift.tt/1nMZ1Rx -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://ift.tt/RD6XUr




Выставим права на папку:

sudo chown -R www-data:www-data ./rutorrent/




Осталось проверить работу нашей web-морды, заходим в браузере ip_адрес_RPI/rutorrent (если с RPI то localhost/rutorrent):
Вуаля




Ну вот вроде и все. Теперь мы имеем готовый к работе RPI, для web-разработчиков, которые в ночь с пятницы на субботу могут поставить качать свой любимый сериал и на следующее утро, лежа на диване смотреть все это дело на огромном телике. Спасибо за внимание.

P.S. Хочу принести извинения за отсутствие некоторых ссылок на сторонние ресурсы, материалом которых я руководствовался т.к. делал я это давно, а опубликовал только сейчас.

This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий