Выжать все соки или используем 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 переходник для подключения к компьютеру
- Немного свободного времени
- Прямые руки (во всяком случае мне они точно понадобились)
Так же нам понадобятся некоторые программы, PUTTY, WinSCP, XMing. Итак, нам необходимо что бы все что мы задумали работало без выключения/перезагрузки RPI, следовательно сборки типа OpenELEC, RaspBMC, XBian можно исключить. Нам нужно что бы XBMC был «внутри» нашей ОС, как плеер, так что мы сделаем что-то подобное. Мы будем использовать Raspbian. Скачать можно с оф. сайта
Дальше все просто. Разархивируем скачанное, подключаем SD карту к компьютеру, далее нам понадобится программа Win32DiskImager. Устанавливаем, запускаем. Указываем путь к .img файлу с ОС на борту, далее в поле «Device» выбираем из списка носителей нашу SD карту и нажимаем «Write». После в появившемся диалоговом окне выбираем «Yes» и готовимся к первому запуску RPI.
Для работы RPI нам нужен телевизор с HDMI выходом, но на крайний случай можно обойтись и обычным. Для этого нам понадобится вместо HDMI кабеля SCART-RCA кабель и обычные USB колонки со своим питанием! Думаю понятно что и куда нужно втыкать. Если все прошло как-по-маслу, мы увидим окно с настройками нашей ОС.
Пункты меню с подробным описанием и фото
После перезагрузки вводим логин 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://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!
Если необходимо сделать Автостарт 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 RPIlocalhost/phpmyadmin
).
Думаю с установкой веб-сервера закончено. Про настройку DNS в bind9 и VIrtual Hosts в апаче будет в другой статье. Скажу еще то, что для себя я поставил так же RhodeCode на RPI и хотел поставить какой нибудь Issue трекер. Выбор пал на YouTrack от JetBrain, но JavaМашина сильно грузит Raspberry, поэтому не стал заморачиваться. Так как я пользуюсь phpstorm — вот небольшое отступление о том Как подружить phpstorm с нашей БД на RPI:
Врубаем PHPStorm заходим в DataBase (кнопка слева) -> new -> DataBase Source
Database 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://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
):
Ну вот вроде и все. Теперь мы имеем готовый к работе RPI, для web-разработчиков, которые в ночь с пятницы на субботу могут поставить качать свой любимый сериал и на следующее утро, лежа на диване смотреть все это дело на огромном телике. Спасибо за внимание.
P.S. Хочу принести извинения за отсутствие некоторых ссылок на сторонние ресурсы, материалом которых я руководствовался т.к. делал я это давно, а опубликовал только сейчас.
воскресенье, 12 июля 2015 г.
Выжать все соки или используем Raspberry pi на всю катушку / Хабрахабр
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий