September 20, 2019, 06:40:28 am

News:

Have you visited the Allwinner Chipset wiki? - http://linux-sunxi.org/


Домашний сервер Cubian шаг за шагом

Started by luminofor, February 03, 2014, 03:37:57 pm

Previous topic - Next topic

Раджа

March 12, 2014, 01:21:55 pm #45 Last Edit: March 12, 2014, 03:35:15 pm by Раджа
Обещал про ttrss рассказать. Рассказываю.

TinyTiny RSS - это такой маленький "гугл ридер" на своём сервере, если кратко.

Нам нужно:

  • php 5

  • lighttpd

  • MySQL



PHP нужен, потому что TT-RSS на нем написан.
Lighttpd я выбрал, потому что он сам умеет рулить CGI-серверами.
MySQL взял, потому что с PG я ни разу не работал.

Итак, ставим всё последовательно:
$ sudo apt-get install lighttpd php5 php5-cgi php5-cli php5-common php5-curl php5-mcrypt php5-mysql

Сервер и php ставим одновременно, чтобы APT по зависимостям не подтянул куски Apache, что он у меня сделал первый раз.

Ставим сервер базы данных:

$ sudo apt-get install mysql-server

Я могу ошибаться, но при установке должен запуститься мастер предварительной настройки сервера, который запросит логин и пароль для учетной записи самого главного администратора сервера.

Скелет готов. Теперь его надо настроить.
PHP уже умеет работать с MySQL, так что максимум, что можно с ним сделать, так это включить сжатие передаваемых данных:
$ sudo nano /etc/php5/cgi/php.ini
Найти строку
zlib.output_compression = Off
И исправить "Off" на "On".
Эта настройка будет действовать только для CGI-сервера, что нам и надо.

Теперь научим Lighttpd работать с php-cgi. Для этого откроем конфиг сервера
$ sudo nano /etc/lighttpd/lighttpd.conf

И пропишем туда следующее:
server.modules += ( "mod_fastcgi" ) # подгрузка расширения для работы с CGI
# объявление настроек
fastcgi.server = ( ".php" => # с расширением php
  ((
    "socket" => "/tmp/php.socket",  # обратиться кCGI-серверу через соке
    "bin-path" => "/usr/bin/php-cgi", # путь к исполняему файлу
    "bin-environment" => (              # настроки CGI-сервера
      "PHP_FCGI_CHILDREN" => "4", # запустить 4 штуки для параллельной обработки запросов
      "PHP_FCGI_MAX_REQUESTS" => "10000"
    ),
    "min-procs" => 1,
    "max-procs" => 1,
    "idle-timeout" => 20
  ))
)



Для комфортной работы с базой данных я обычно ставлю phpMyAdmin

Скачиваем архив и распакуем его в папку /var/www/phpmyadmin
Можно конфиг сделать через красивый мастер, но быстрее написать руками, тем более у нас всего один сервер БД:

<?php

/* Servers configuration */
$i 0;

/* Server: cubie [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = 'cubie';
$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'config';
/* Учетная запись самого главного админа БД */
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'admin';

/* End of servers configuration */

/* Настройки работы самого phpMyAdmin */
$cfg['DefaultLang'] = 'ru';
$cfg['ServerDefault'] = 1;
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
$cfg['UserprefsDeveloperTab'] = true;
$cfg['QueryHistoryDB'] = true;
?>


Держать такой инструмент вместе с читалкой новостей на одном порту слишком круто, поэтому вынесем его на другой порт.
Для этого вынесем директорию с самим phpmyadmin например в /var/phpmyadmin
$ sudo mv /var/www/phpmyadmin /var/
И наконец исправим права:
$ sudo chown www-data:www-data -R /var/phpmyadmin

Теперь подправим конфиг lighttpd, добавив после описания обработчика php следующее:

$SERVER["socket"] == ":8888" {
    index-file.names            = ( "index.php", "index.html" )
    server.document-root = "/var/phpmyadmin/"
}

И перезапустим сервер:
sudo service lighttpd restart

Теперь при по адресу http://cubie_ip откроется тестовая страница сервера, а по адресу http://cubie_ip:8888 нас встретит phpMyAdmin.

Изучение его оставлю на самостоятельное задание.
В нем нам потребуется создать:

  • базу данных ttrss

  • пользователя ttrss с паролем ttrss и разрешением подключаться только с localhost

  • выдать пользователю ttrss все права на управление базы данных ttrss



Теперь скачаем установим и настроим TT-RSS.
Заходим на сайт http://tt-rss.org/ и выкачиваем стабильный релиз.
Распаковываем архив в директорию /var/www (в самом архиве все файлы лежат не рассыпухой) и переименовываем "Tiny-Tiny-RSS-1.11" в "ttrss" для удобства.

Исправляем права:
$ sudo chown www-data:www-data -R /var/www/ttrss

Теперь переходим к установке и настройке:
Открываем страницу http://cubie_ip/ttrss/install с смотрим, что оно от нас хочет.
А хочет оно от нас учетную запись базы данных и свой родной URL для всяких нужд. Если проброс порта через роутер и прочие загоны не планируется, то оставим то, что предложено.
В настройках базы данных указываем:
тип сервера - MySQL
Username - ttrss
Password - ttrss (Эта учетная запись была создана через phpmyadmin)
Database name - ttrss
Host name - 127.0.0.1 (никаких localhost и прочего!)
Port - 3306

Теперь нажимаем "Test configuration"
Ошибок нет? Отлично! Можно переходить дальше.
Нажимаем "Initialize database" для создания нужных таблиц и прочих объектов.
Немного подумав, скрипт скажет "Database initialization completed." и предложит поле со сгененрированным конфигом.
В нем надо проверить следующие строки:
Отключить регистрацию, потому что это НАШ TTRSS!
define('ENABLE_REGISTRATION', false);

Настройка сжатия.
define('ENABLE_GZIP_OUTPUT', false);
Если на включили в php.ini, то включите (true) здесь. Не включайте одновременно в двух местах!

Теперь можно нажать кнопку "Save configuration" для записи файла на диск.
И попытаться перейти на главную страницу.
А оно не работает!


Но ничего страшного, просто сделаем то, о чем нас просят:
$ sudo chmod -R 755 cache/images cache/export feed-icons lock cache/upload cache/js

Теперь всё должно заработать, и скрипт наконец покажет страницу логина.

Для входа используем логин "admin" и пароль "password"

ВСЁ! Теперь у нас есть свой маленький "ГуглРидер".

Не забудьте сменить пароль в настройках.

Описывать настройки не буду, об этом и так есть информация на сайте.

Теперь осталось только наладить автоматическое обновление фидов. Делать это будем через cron.

$ sudo -u www-data EDITOR=nano crontab -e

В конец открывшегося файла дописываем
0 * * * * /usr/bin/php /var/www/ttrss/update.php --feeds > /dev/null 2>&1
Обновление фидов будет производиться каждый час в 00 минут.

Еще раз напоминаю, что ваша читалка доступна по адресу http://cubie_ip/ttrss

Спасибо, что дочитали. :)

Если что-то упустил, то укажите, я не вредный, я исправлю.
Заткнись и смотри аниме!

luminofor

Решил вот попробовать установить XFCE4 на свой CB2 вместо LXDE
Установка простая
Базовая система:
sudo apt-get install xfce4
Свистелки-перделки (обои, темы, апплеты на панель и прочие настройки):
sudo apt-get install xfce4-goodies
Если у вас уже был установлен LXDE, в окне авторизации выбирайте сессию xfce4
Если установка была на чистую серверную систему, то запускаем из консоли
startx

Нажимаем Use default config
Вуаля, рабочий стол XFCE4

Чтобы не запускать постоянно вручную иксы, установим логин менеджер.
После того, как я попробовал несколько таких менеджеров, остановил свой выбор на slim
sudo apt-get install slim
Теперь после перезагрузки нас будет встречать такая картинка

Если вы хотите сделать автоматический вход в систему, нужно поправить конфиг slim
sudo nano /etc/slim.conf
Делаем следующие изменения
sessions            startxfce4
default_user        cubie
auto_login          yes

Русифицируем (Устанавливаем русскую локаль), устанавливаем нужные апплеты на панель, переключалку языков, добавляем русский. Перезагружаемся...

Радуемся  ;D

ЗЫ. По умолчанию в xfce4 браузер не установлен, устанавливаем любой по желанию

ua3prq

Насколько он субъективно выглядит шустрее LXDE?
Думаю, что себе поставить.

luminofor

Quote from: ua3prq on March 13, 2014, 03:57:46 am
Насколько он субъективно выглядит шустрее LXDE?

Честно говоря, такие же тормоза  ;D
Ну это я забыл еще драйвера mali установить (xserver-xorg-video-sunximali)

Art

Внесу свои пять копеек. Обладаю СТ. Решил сделать из него неттоп. Установил на него Qbee-X. Функционал из коробки порадовал, т.к я нуб+ в Linux. Стал допиливать под себя. Обновил пакеты и русифицировал интерфейс.
Оставновился на среде LXDE. Отсутствие переключения раскладки и выключенный numlock при старте системы несколько огорчили.
Поэтому:
sudo apt-get install numlockx

Редактируем:
sudo nano /etc/lightdm/lightdm.conf

И в конце файла пишем:
greeter-setup-script=/usr/bin/numlockx on

Раскладку клавиатуры пришлось пилить именно так:

setxkbmap -option grp:switch,grp:alt_shift_toggle us,ru

После этого клавиатура переключается по Alt+Shift (поведение можно менять, меняя alt_shift_toggle на то, что вам нужно) между русской и английской. Чтобы запускать эту команду каждый раз при запуске lxde, нужно добавить в конец файла /etc/xdg/lxsession/LXDE/autostart

строчку:
@setxkbmap -option grp:switch,grp:alt_shift_toggle,grp_led:scroll us,ru

Далее захотелось установить более-менее сносный аудиоплеер, погуглив и перепробовав штук 5-ть, остановил свой выбор на audacious. Он менее тормозной, чем предустановленный rhythmbox, да и загружает проц всего на 9-10%, в отличие от своих аналогов, mpg123 в принципе тоже устраивал.
Установил я его менелжером пакетов, но он не стал проигрывать музыку, просто пробегал по списку и всё. Как оказалось надо пересобрать mpg123 c нужной опцией. Качаем http://sourceforge.net/projects/mpg123/files/mpg123/ нужную версию, собираем с этой опцией:
./configure --with-cpu=arm_fpu



luminofor

Quote from: Art on March 17, 2014, 12:35:55 am
Отсутствие переключения раскладки и выключенный numlock при старте системы несколько огорчили

Ха! Я тоже парюсь по поводу выключенного numlock. Находил как то в конфиге dm (кажись в slim) включение этой опции, но ничего не заработало. А переключение раскладок сделал окольными путями через установку какого то пакета, в названии был xkb. Ставил разные, ни один толком не работал на панели LXDE, т.к. запилены были под XFCE или Gnome. Но переключение заработало

luminofor

March 19, 2014, 03:04:11 am #51 Last Edit: April 06, 2014, 09:21:00 am by luminofor
Что то затишье на форуме. Решил вот написать про установку другого торрент клиента. Вдруг кому то transmission не нравится.
Итак Deluge
Deluge представляет собой конструктор. Необходимые модули выбираем и устанавливаем по мере надобности.

deluge-gtk или deluge -- версия Deluge с графическим интерфейсом пользователя.
deluge-console -- консольный вариант Deluge
deluge-web -- веб-интерфейс
deluged -- демон

Установим демон и веб-интерфейс
sudo apt-get install deluged deluge-webui

Создадим файл в котором указываем от имени какого пользователя будет стартовать демон
sudo nano /etc/default/deluge-daemon
# Configuration for /etc/init.d/deluge-daemon

# The init.d script will only run if this variable non-empty.
DELUGED_USER=""             # !!!CHANGE THIS!!!!

# Should we run at startup?
RUN_AT_STARTUP="YES"

В строке DELUGED_USER="" указываем пользователя, например DELUGED_USER="cubie"

А теперь скрипт автозапуска, взятый с официального сайта программы
sudo nano /etc/init.d/deluge-daemon
#!/bin/sh
### BEGIN INIT INFO
# Provides:          deluge-daemon
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Should-Start:      $network
# Should-Stop:       $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Daemonized version of deluge and webui.
# Description:       Starts the deluge daemon with the user specified in
#                    /etc/default/deluge-daemon.
### END INIT INFO

# Author: Adolfo R. Brandes
# Updated by: Jean-Philippe "Orax" Roemer

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Deluge Daemon"
NAME1="deluged"
NAME2="deluge"
DAEMON1=/usr/bin/deluged
DAEMON1_ARGS="-d"             # Consult `man deluged` for more options
DAEMON2=/usr/bin/deluge-web
DAEMON2_ARGS=""               # Consult `man deluge-web` for more options
PIDFILE1=/var/run/$NAME1.pid
PIDFILE2=/var/run/$NAME2.pid
UMASK=022                     # Change this to 0 if running deluged as its own user
PKGNAME=deluge-daemon
SCRIPTNAME=/etc/init.d/$PKGNAME

# Exit if the package is not installed
[ -x "$DAEMON1" -a -x "$DAEMON2" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$PKGNAME ] && . /etc/default/$PKGNAME

# Load the VERBOSE setting and other rcS variables
[ -f /etc/default/rcS ] && . /etc/default/rcS

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

if [ -z "$RUN_AT_STARTUP" -o "$RUN_AT_STARTUP" != "YES" ]
then
   log_warning_msg "Not starting $PKGNAME, edit /etc/default/$PKGNAME to start it."
   exit 0
fi

if [ -z "$DELUGED_USER" ]
then
    log_warning_msg "Not starting $PKGNAME, DELUGED_USER not set in /etc/default/$PKGNAME."
    exit 0
fi

#
# Function to verify if a pid is alive
#
is_alive()
{
   pid=`cat $1` > /dev/null 2>&1
   kill -0 $pid > /dev/null 2>&1
   return $?
}

#
# Function that starts the daemon/service
#
do_start()
{
   # Return
   #   0 if daemon has been started
   #   1 if daemon was already running
   #   2 if daemon could not be started

   is_alive $PIDFILE1
   RETVAL1="$?"

   if [ $RETVAL1 != 0 ]; then
       rm -f $PIDFILE1
       start-stop-daemon --start --background --quiet --pidfile $PIDFILE1 --make-pidfile \
       --exec $DAEMON1 --chuid $DELUGED_USER --user $DELUGED_USER --umask $UMASK -- $DAEMON1_ARGS
       RETVAL1="$?"
   else
       is_alive $PIDFILE2
       RETVAL2="$?"
       [ "$RETVAL2" = "0" -a "$RETVAL1" = "0" ] && return 1
   fi

   is_alive $PIDFILE2
   RETVAL2="$?"

   if [ $RETVAL2 != 0 ]; then
        sleep 2
        rm -f $PIDFILE2
        start-stop-daemon --start --background --quiet --pidfile $PIDFILE2 --make-pidfile \
        --exec $DAEMON2 --chuid $DELUGED_USER --user $DELUGED_USER --umask $UMASK -- $DAEMON2_ARGS
        RETVAL2="$?"
   fi
   [ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] || return 2
}

#
# Function that stops the daemon/service
#
do_stop()
{
   # Return
   #   0 if daemon has been stopped
   #   1 if daemon was already stopped
   #   2 if daemon could not be stopped
   #   other if a failure occurred

   start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $DELUGED_USER --pidfile $PIDFILE2
   RETVAL2="$?"
   start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --user $DELUGED_USER --pidfile $PIDFILE1
   RETVAL1="$?"
   [ "$RETVAL1" = "2" -o "$RETVAL2" = "2" ] && return 2

   rm -f $PIDFILE1 $PIDFILE2

   [ "$RETVAL1" = "0" -a "$RETVAL2" = "0" ] && return 0 || return 1
}

case "$1" in
  start)
   [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME1"
   do_start
   case "$?" in
      0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
      2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
   esac
   ;;
  stop)
   [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME1"
   do_stop
   case "$?" in
      0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
      2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
   esac
   ;;
  restart|force-reload)
   log_daemon_msg "Restarting $DESC" "$NAME1"
   do_stop
   case "$?" in
     0|1)
      do_start
      case "$?" in
         0) log_end_msg 0 ;;
         1) log_end_msg 1 ;; # Old process is still running
         *) log_end_msg 1 ;; # Failed to start
      esac
      ;;
     *)
        # Failed to stop
      log_end_msg 1
      ;;
   esac
   ;;
  *)
   echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
   exit 3
   ;;
esac

:


Делаем скрипт исполняемым
sudo chmod a+x /etc/init.d/deluge-daemon

Указываем на загрузку скрипта при старте системы
sudo update-rc.d deluge-daemon defaults

Перезапускаем скрипт
sudo /etc/init.d/deluge-daemon restart

Заходим в веб-интерфейс по адресу http://127.0.0.1:8112

Пароль по умолчанию - deluge
Тут можо сделать все необходимые настройки, сменить пароль и начать пользоваться.

Теперь рассмотрим установку клиента для нашего демона

Указываем в настройках демона пользователя для удаленного доступа
nano ~/.config/deluge/auth
Добавляем в конец файла строчку
user:password:level
Где user - произвольное имя, логин пользователя. Не обязательно  должно совпадать с именем существующего пользователя.
password - произвольный пароль на свое усмотрение
level - уровень доступа пользователя
1 -- только чтение.
5 -- пользователь.
10 -- Администратор
Например строка может иметь вид
cubie:1234:10

Сохраняем, перезапускаем
sudo /etc/init.d/deluge-daemon restart

Для linux машин устанавливаем пакет deluge, для windows машин берем отсюда

Запускаем deluge клиент на машине. Идем в настройки. Снимаем галочку с классического режима

Перезапускаем клиент

Удаляем из списка локальный демон и прописываем адрес удалённого.

Если специально не изменяли настройки демона, то порт не трогаем. Имя пользователя и пароль -- указываем данные, которые мы задавали в файле ~/.config/deluge/auth.
Нажимаем подключиться. Радуемся  :D




Раджа

Инструкция для настройки cgroups на Debian http://www.stableit.ru/2014/02/cgroup-debian-7.html

Проверял на Cubian (wheezy) с пересобранным пакетом libcgroup из sid.
На raspberry pi повторил, но автоматическое добавление процессов в группы не завелось.
Заткнись и смотри аниме!

luminofor

Quote from: Раджа on March 22, 2014, 03:07:31 am
Инструкция для настройки cgroups на Debian http://www.stableit.ru/2014/02/cgroup-debian-7.html

Прошу прощения за мое невежество, а собстна это зачем?  ???

Раджа

Это довольно крутой механизм для ограничения аппетита приложений.
Например, у меня стоит роутер i2p, который на java, который к тому же очень любит системные ресурсы. Если ему дать волю, то через 3-5 дней до кубика будет не достучаться. Я ему урезал процессорное время, теперь он не валит систему.
Заткнись и смотри аниме!

ua3prq

Запустил на выходных Fatrat - довнлоад менеджер с WEB интерфейсом. Наряду с transmission-daemon и samba почти получил от кубика к чему стремился (осталось FTP замутить). Остальные вырианты, основанные на вэб-сервисах потя не осиливаю, никогда не ставил подобные службы, вообщем темный лес для меня c этим php и прочим.

Запускаю его из консоли вот так (иначе он валит в консоль свои сообщения):

nohup fatrat --nogui &

почему-то процесс не уходит в фон, т.е. консоль уже не доступна эта. Приходится открывать новый терминал для работы. Что с ним можно сделать? Может как-то как службу его запустить удасться?

Jono

Quote from: ua3prq on March 24, 2014, 12:29:36 am
Запустил на выходных Fatrat - довнлоад менеджер с WEB интерфейсом.
почему-то процесс не уходит в фон, т.е. консоль уже не доступна эта. Приходится открывать новый терминал для работы. Что с ним можно сделать? Может как-то как службу его запустить удасться?

Попробуйте  aria2
Quotearia2 is a lightweight multi-protocol & multi-source command-line download utility. It supports HTTP/HTTPS, FTP, BitTorrent and Metalink. aria2 can be manipulated via built-in JSON-RPC and XML-RPC interfaces.

По стопам
QuoteЧто интересно, aria2 может работать как демон и управляться удаленно по rpc.

ua3prq

Quote from: Jono on March 24, 2014, 01:00:28 am
Попробуйте  aria2

Про Арию тоже читал- буду пробовать, спасибо. По api оно тоже здорово, но вот, чтобы туда вэб прикрутить опять видимо что-то нужно из навесок. Вот чем мне transmission-daemon и нравится ...

Jono

Quote from: ua3prq on March 24, 2014, 01:16:54 am
Про Арию тоже читал- буду пробовать, спасибо. По api оно тоже здорово, но вот, чтобы туда вэб прикрутить опять видимо что-то нужно из навесок. Вот чем мне transmission-daemon и нравится ...

По поводу веб интерфейса вот несколько вариантов:
webui-aria2
Yet Another Aria2 Web Frontend in pure HTML/CSS/Javascirpt
Aria2Web
TheBear

Раджа

Aria2 мне тоже понравилась. TheBear для нее ставил. Вроде как самая адекватная морда. А вот по части софта типа Transmission Remote GUI там совсем тухло. То есть только вебморда, только хардкор.
Заткнись и смотри аниме!