[Из песочницы] Выжать все соки или используем 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 колонки со своим питанием! Думаю понятно что и куда нужно втыкать. Если все прошло как-по-маслу, мы увидим окно с настройками нашей ОС.
Пункты меню с подробным описанием и фото — 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 ~ $ Вуаля Установка 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 с уже установленными плагинами, список я приведу ниже.
Если необходимо сделать Автостарт 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 В него внесем изменения: 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://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. Хочу принести извинения за отсутствие некоторых ссылок на сторонние ресурсы, материалом которых я руководствовался т.к. делал я это давно, а опубликовал только сейчас.