How-To: установка NRS на Raspberry Pi

From Nxt Wiki
Jump to: navigation, search
This page is a translated version of the page How-To:InstallNRSRaspberryPi and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎italiano • ‎Nederlands • ‎português do Brasil • ‎русский • ‎українська • ‎中文(简体)‎

1 Установка Nxt (и NRS клиента) на Raspberry Pi

(Здесь, переведён изначально опубликованный способ, авторства barbarosinciler на nextcoin.org. Если это было полезно для вас, пожалуйста, поддержите его, перечислив немного Nxt по адресу 7121642459245273749. Java пакет по установке Nxt на ваш Pi был написан davethetrousers, кошелек 14923118471272229432)

И Raspbian, и Nxt NRS клиент очень хорошо работают на Raspberry Pi. Загрузка процессора составляет примерно 15-20% с открытым веб-клиентом и разблокированным аккаунтом. С закрытым веб-клиентом (все еще разблокированным) она меньше, чем 10% большую часть времени (изредка поднимается выше и иногда МОЖЕТ достигнуть полной загрузки). Загрузка памяти около 100MB.

Когда программное обеспечение установлено на ваш Raspberry Pi, оно автоматически запустится при загрузке. Вы можете управлять им посредством удаленного рабочего стола с другого компьютера.

Это руководство делает следующие предположения; настраивайте соответственно!

  • ваш инсталляционный компьютер работает под Windows и имеет IP-адрес 192.168.1.20
  • IP вашего сетевого роутера 192.168.1.1

1.1 Базовое руководство по установке Raspbian

  1. скачайте и установите Raspbian
    • Скачайте образ Raspbian с [1]
    • Скачайте diskimager для windows [2].
    • Разверните образ на SD Card и загрузитесь с этой карты на Raspberry. Вы должны увидеть конфигурационное меню.
      • Расширьте файловую систему и измените пароль.
      • Разрешите рабочий стол после загрузки.
      • Установите национальные настройки (язык, раскладка клавиатуры и временную зону)
      • В качестве продвинутых настроек разрешите ssh и установите hostname, например, как "rpi".
      • Перегрузитесь. Теперь вы должны увидеть рабочий стол, а система должна работать

1.2 Обновление системы

  1. откройте командную строку bash (LXTerminal), введите следующее и следуйте инструкциям:
    • sudo apt-get upgrade
      sudo apt-get dist-update
  2. Проверьте настройки вашего IP
    • Ваш Pi должен получить IP-адрес с DHC, это может быть подтверждено командой ifconfig в shell. Чтобы настроить статический ip, откроете командную строку bash (LXTerminal) и введите следующее:
      • sudo nano /etc/network/interfaces
    • Измените следующее с:
      iface eth0 inet dhcp
      на:
      iface eth0 inet static
      address 192.168.1.10
      netmask 255.255.255.0
      gateway 192.168.1.1
      network 192.168.1.0
      broadcast 192.168.1.255
    • Нажмите CTRL+O чтобы сохранить файл
    • Нажмите CTRL+X чтобы выйти
    • Перезагрузите свой Pi

1.3 Установка XRDP (RDP сервер)

  1. Откройте командную строку bash (LXTerminal), введите следующее и следуйте инструкциям:
    • sudo apt-get install xrdp
      sudo apt-get upgrade xrdp
  2. Теперь вы можете использовать Microsoft Remote Desktop и работать с Raspberry удаленно.
    • В Windows нажмите Старт -> в строке ввода введите "mstsc"
    • Введите IP-адрес вашего Raspberry (192.168.1.10), подсоединитесь и зайдите под своим паролем


1.4 Перенаправление портов роутера/файрвола

  1. Обеспечьте перенаправление TCP порта 7874 вашего сетевого роутера на IP-адрес вашего raspberry (192.168.1.10)

1.5 Установка NXT клиента

У вас две возможных опции:

  1. Используйте ваш Raspberry Pi с автономным пакетом Oracle JRE included(все вопросы к автору: davethetrousers )
    1. Загрузите tar.gz файл с зеркала загрузки davethetrousers' используя wget и распакуйте его:
      • wget http://109.230.224.65/~nxt/nxt_rasppi.tar.gz
        tar -xf nxt_rasppi.tar.gz
      • Для автоматического старта NRS при запуске raspberry отредактируйте файл run_nxt.sh в папке nxt следующим образом:
        • nano nxt/run_nxt.sh
      • Скопируйте код расположенный в конце этого документа, и вставьте в ваш файл.
      • Нажмите одновременно CTRL + O чтобы сохранить
      • Нажмите одновременно CTRL + X чтобы выйти.
      • Введите: crontab -e
      • Вставьте код в конце файла:
        @reboot /home/pi/nxt/run_nxt.sh start
      • Нажмите одновременно CTRL + O чтобы сохранить
      • Нажмите одновременно CTRL + X чтобы выйти.
    2. Теперь raspberry будет автоматически загружать программное обеспечение NRS при загрузке
  2. Пошаговая инсталляция со сборкой в raspbian Java,с зеркала разработчика
    1. Загрузите клиент NRS (текущая версия: 1.11.14) https://www.jelurida.com/nxt-client.zip
    2. Разархивируйте файл:
      unzip nxt.zip
    3. Теперь клиент NRS находится в домашней папке (/home/pi/nxt/)
    4. Введите: crontab -e
      • Вставьте в конец файла этот код:
        @reboot /home/pi/nxt/run.sh
      • Нажмите одновременно CTRL+O чтобы сохранить изменения
      • Нажмите одновременно CTRL+X для выхода.
    5. Теперь raspberry будет автоматически загружать программное обеспечение NRS при загрузке

1.6 Скрипт остановки Nxt

  1. Создайте новый файл в каталоге /home/pi/nxt/ и назовите его, например, "stop_nxt.sh":
    nano nxt/stop_nxt.sh
    1. Если Вы используете пакет Java davethetrouser, вводите этот код:
      /home/pi/nxt/ejre1.7.0_45/bin/java -Xmx1024M -cp nxt.jar;lib/*;conf nxt.Nxt STOP.PORT=11111 STOP.KEY=123456 --stop
    2. Если Вы загружали непосредственно программное обеспечение Nxt:
      /usr/bin/java -Xmx1024M -cp nxt.jar;lib/*;conf nxt.Nxt STOP.PORT=11111 STOP.KEY=123456 --stop
  2. Нажмите CTRL+O для сохранения файла.
  3. Нажмите CTRL+X чтобы выйти.

Теперь Вы можете остановить клиент из командной строки следующей командой:
sudo bash nxt/stop_nxt.sh Прежде чем перезагружать Ваш Pi, Вы должны использовать этот скрипт, чтобы предотвратить ошибку blockchain !

Теперь можете перезагрузить систему командой:
sudo reboot

1.7 Connecting from your PC instead of localhost

  1. Create a nxt.properties file under the nxt/conf/ folder. You can create the file from command line using the command nano nxt/conf/nxt.properties and write the following in it. Make sure to modify the IP accordingly to yours:
    nxt.allowedBotHosts=127.0.0.1; localhost; 192.168.1.20; 0:0:0:0:0:0:0:1;
    nxt.allowedUserHosts=127.0.0.1; localhost; 192.168.1.20; 0:0:0:0:0:0:0:1;
  2. Press CTRL and O at the same time to save
  3. Press CTRL and X together to exit

1.8 Старт форжинга вручную с помощью NRS клиента

Чтобы начать форжинг вам нужно сначала залогиниться в вашем веб-браузере.

  1. Открыть https://192.168.1.10:7876
  2. Разблокировать аккаунт своей секретной фразой (занимает несколько секунд).
  3. Если в левой стороне, рядом с красной точкой, надпись "Not forging", щелкните по нему, чтобы запустить форжинг.
  4. Если клиент разблокирован, вы можете закрыть браузер и система начнет форжинг.

1.9 Управление NRS и ошибки Java

Вы можете проверить файлы логирования java (nxtout.txt и nxterr.txt) в каталоге nxt на наличие ошибок!

1.10 Появились проблемы?

Посмотрите Ответы на часто задаваемые вопросы и "Общие проблемы и их решения"!

1.11 Дополнительные полезные команды и инструменты

1.11.1 Смонтируйте удаленно ваш жесткий диск на компьютере с Windows для доступа к нему с Raspberry Pi

sudo mount -t cifs //192.168.1.20/c$ /mnt -o user=myusername Где:

  • x = IP-адрес вашего компьютера с Windows
  • myusername = имя пользователя на компьютере с Windows

1.11.2 Запустите интерфейс редактирования настроек raspbian (язык, настройки клавиатуры, настройки времени, имя хоста и т.д.)

sudo raspi-config

1.11.3 Проверка конфигурации встроенной Java

sudo update-alternatives --config java Стандартное месторасположение отмечено звездочкой, путь будет что-то вроде /usr/lib/jvm/jdk-7-oracle-armhf/jre/bin/java/ Настройки по умолчанию — priority=317 и auto-modus. Если вас все устраивает, подтвердите нажатием Enter.

1.11.4 Удаленное администрирование с помощью putty

Вы можете управлять вашим raspberry с помощью утилиты "putty", через командную строку SSL соединения. Скачайте утилиту отсюда [3]

1.12 run_nxt.sh file

Используйте следующий код в Вашем run_nxt.sh скрипте:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          NXTserver
# Required-Start:    $local_fs $remote_fs $network $syslog $named $sshd
# Required-Stop:     
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop NXT server
### END INIT INFO

if [ `id -u` != "0" ] && [ "$1" = "start" -o "$1" = "stop" ] ; then
  echo "You must be root to start/stop nxt."
  exit 1
fi

# Settings
nxtdir=/home/pi/nxt
nxt=nxt.jar
java=/usr/bin/java
nxtpid=/var/run/nxt.pid
nxtlog=/home/pi/nxt/nxt.log
nxtuser=pi
nxtgroup=pi
nxtnice=19
timeout=700
maxmem=120
# end Settings

# check for exist files and dirs
test -d $nxtdir || exit 0
test -f $nxtdir/$nxt || exit 0
test -f $java || exit 0

# make sure $nxtdir is ours!
chown -R $nxtuser:$nxtgroup $nxtdir

. /lib/lsb/init-functions

function status {

    start-stop-daemon -T --pidfile "$nxtpid" && echo "NXT server is started." \
    || { echo "NXT server is stopped." ; return 1; }

    return 0;
}

case "$1" in
    start)
        log_daemon_msg "Starting NXT server..." "" || true

        # check if server is running
        if [ -e $nxtpid ]; then
            pid=`cat $nxtpid`
            var=`ps -p$pid | wc -l`

            if [ $var -lt "2" ]; then
                # clear logfile
                echo -n > $nxtlog
            else
                echo -n " NXT server is already running!"
                log_end_msg 0 || true
                exit 0
            fi
        fi
        
        # Enable Debug for more info when starting NXT
        if cat $nxtdir/conf/nxt.properties | grep -q  "nxt.debug="; then
            if cat $nxtdir/conf/nxt.properties | grep -q  "nxt.debug=true"; then
                # Debug is enabled, nothing todo...
                echo -n ""
            elif cat $nxtdir/conf/nxt.properties | grep -q  "nxt.debug=false"; then
                echo nxt.debug=true >> $nxtdir/conf/nxt.properties
            fi
        else
            echo nxt.debug=true >> $nxtdir/conf/nxt.properties
        fi
                
        # n minute timeout.
        sleep $timeout &
        timerPid=$!

        # check log file and generate status-msg; will be killed when server is started or timeout hit
        tail -q -n0 -F --pid=$timerPid $nxtlog 2> /dev/null | while read line; do

            if echo $line | grep -q  "Scanning blockchain"; then
                echo -n " Scanning blockchain"            
            elif echo $line | grep -q  "processed block"; then
                echo -n "."            
            fi

            if echo $line | grep -q  "started successfully."; then
                echo -n "NXT server started successfully."
                log_end_msg 0 || true
                # stop the timer..
                kill $timerPid > /dev/null 2>&1
				$nxtdir/traffic_shaper.sh > /dev/null 2>&1
            fi
        done &
        
        # start server
        if start-stop-daemon --start --name nxt --nicelevel $nxtnice --chuid $nxtuser:$nxtgroup --pidfile $nxtpid -m --chdir $nxtdir --exec $java >> $nxtlog 2>&1 -- -Xmx"$maxmem"m -cp $nxt:lib/*:conf nxt.Nxt >> $nxtlog 2>&1 & then
            # wait for the timer to expire (or be killed)
            wait %sleep > /dev/null 2>&1
        else
            log_end_msg 1 || true
        fi
        ;;
    stop)
        log_daemon_msg "Stopping NXT server..." || true

        # check if server is running
        if start-stop-daemon --stop --pidfile $nxtpid > /dev/null 2>&1; then
            
            while status > /dev/null; do
                sleep 1;
            done
            
            echo -n " NXT server stopped."
            log_end_msg 0 || true
            rm $nxtpid  > /dev/null 2>&1
        else 
            echo -n " NXT server is not running!"
            log_end_msg 0 || true
            exit 0
        fi
        ;;
    restart)
        $0 stop
        sleep 1
        $0 start
        ;;
    status)
        status
        ;;
    *)
        echo "usage:`basename $0` start | stop | restart | status"
        exit 1
        ;;
esac