Почему страница на русском?
Этот блог начинался давно, когда писать материалы на английском языке для меня было сложно, и для достижения большей аудитории он велся на русском. Но с началом полномасштабного вторжения в феврале 2022 года я решил прекратить писать на этом языке. Моя страна переживает тяжелые времена, но мы с верой смотрим в будущее, и я больше не хочу поддерживать использование русского языка для новых материалов. Те статьи, что уже есть, остаются на сайте как часть истории блога, напоминая о предыдущих этапах его развития.Як і Україна, цей блог продовжує активно зростати та зміцнюватись без використання російської мови, незважаючи на всі випробування, і впевнено рухається до майбутнього 💙💛ср, 13 июня 2018 г.
При работе с большими массивами информации очень часто приходиться использовать язык программирования, в моем случае это язык R, для сбора, подготовки и последующей обработки данных. Сначала, мне вполне хватало desktop версии R-studio, и пакета taskscheduleR для автоматического запуска скриптов на моём компьютере. Но в какой-то момент количество таких скриптов стало большим и все обновления зависели от того, включен ли мой компьютер. В этот момент я и задумался об установке R на сервер. Для своих потребностей я решил использовать сервер в Google Cloud Platform.
Справедливости ради, стоит сказать, что во время установки R на сервер Google Cloud Platform и поисков информации о том, как это сделать, я наткнулся на статью в блоге Netpeak, в которой рассказано как сделать подобное, но при работе с этой статьей у меня все равно возникли сложности, о которых не говорилось в статье.
Итак, о чем мы поговорим:
Если вы решили создать сервер на Google Cloud Platform, то первым делом нужно подобрать и настроить для этих целей виртуальную машину. И здесь Google предоставляет огромный выбор, а ко всему и бесплатный тестовый период равный одному году.
Если вы первый раз используете GCP в своей работе, то перед тем, как приступать к созданию экземпляра виртуальной машины необходимо создать проект, и включить биллинг. Даже если вы используете бесплатный тестовый период, все равно нужно будет привязать свою карту. Денег при этом Google обязуется не снимать ;) Карта всего лишь подтверждает, что вы реальный человек.
Теперь, когда с формальностями покончено, давайте приступим.
Переходим в консоль GCP на страницу виртуальных машин и выбираем пункт “Create instance”
В открывшемся окне задаем нужные нам параметры:
Рядом, справа, будет указана примерная стоимость за использование виртуальной машины с заданными параметрами.
Не забудьте нажать на кнопку “Create”. Через некоторое время наша машина будет создана.
Чтобы начать работу с только что созданной виртуальной машиной необходимо подключиться к ней по SSH (сетевой протокол, название которого происходит от слов Secure Shell). Он шифрует весь трафик, включая и передаваемые пароли. Для этого достаточно кликнуть на соответствующий пункт в меню:
И в новом окне браузера откроется… Матрица ))
Первое что я подумал, увидев это окно “вот она матрица”. Но пообщавшись с программистами и узнав у них некоторые детали, я понял, что это все не так страшно и сейчас вы в этом убедитесь.
Интересно: В большинстве команд, которые мы дальше будем использовать в начале будет указана команда “sudo”, которая позволяет запускать команды от имени суперпользователя root.
Необходимо понимать, что помимо главного репозитория, содержащего все пакеты от разработчиков дистрибутива Ubuntu, существует и масса других источников пакетов. Одним из таких является пакет R. Добавление такого стороннего пакета происходит в 4 этапа:
А теперь подробнее о каждом из этих пунктов:
Другими словами, мы добавляем в файл /etc/apt/sources.list информацию о том, откуда нужно брать файлы для установки R. Для этого, с помощью следующей команды мы откроем нужный файл через текстовый редактор nano. Вы можете использовать другой текстовый редактор, например vim.
sudo nano /etc/apt/sources.list
в открывшемся окне опускаемся в конец документа и добавляем строчку
deb https://cran.rstudio.com/bin/linux/ubuntu xenial/
После этого нажимаем комбинацию Ctrl+X для выхода из редактора. В открывшемся окне вводим “Y” для сохранения изменений.
В последнем окне нажимаем Enter, чтобы записать данные в тот же файл, который мы редактировали.
Ключ используется для удостоверения подлинности и надежности репозитория. И добавляется с помощью следующей команды:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9
которая запрашивает ключ напрямую у сервера сертификации Ubuntu - keyserver.ubuntu.com
Выполняется с помощью команды:
sudo apt update
Теперь можем установить необходимый нам пакет R с помощью команды:
sudo apt-get install r-base
В ходе выполнения команды нужно будет подтвердить, что вы готовы установить программное обеспечение с помощью ввода “Y”. Или же можно сразу воспользоваться командой
sudo apt-get install r-base -y
Помимо установки R, для удобства работы, нам нужно установить R Studio. И первым делом для этого нужно скачать установочный файл. Делаем это с помощью команды wget
wget https://download2.rstudio.org/rstudio-server-1.0.136-amd64.deb
Теперь, для того, чтобы провести установку R Studio, устанавливаем еще один пакет - gdebi. Gdebi — программа для установки .deb пакетов.
sudo apt-get install gdebi-core -y
И последней командой устанавливаем R Studio со скачанного файла:
sudo gdebi rstudio-server-1.0.136-amd64.deb
Теперь необходимо указать порт, при обращении к которому вы будете получать доступ в R Studio. Для этого нужно внести информацию в файл /etc/rstudio/rserver.conf. Делаем это с помощью команды
sudo nano /etc/rstudio/rserver.conf
и добавляем в файл следующую строку:
www-port=80
После этого задаем пароль для доступа в R Studio командой
sudo passwd user_name
где, вместо user_name используем имя пользователя
При вводе пароля вам будет казаться, что ничего не происходит, но на самом деле введенные символы запоминаются. После второго успешного ввода вы увидите примерно следующее:
Осталось перезапустить серверный R Studio и можно приступать к работе.
sudo service rstudio-server restart
Чтобы попасть в привычный интерфейс R Studio нужно перейти по внешнему адресу:
Скорее всего при входе вы увидите следующую ошибку.
Связана она с тем, что вы пытаетесь подключиться по протоколу HTTPS, а для работы с R Studio мы открывали 80 порт для протокола HTTP. Убрав в адресной строке лишнюю букву можно заходить.
https://22.222.222.22/
-> http://22.222.222.22/
В открывшемся окне вводим логин и пароль и радуемся виду привычного R Studio, только теперь на сервере.
Скорее всего базовых пакетов R для работы вам будет недостаточно, и дополнительно придется устанавливать другие. Давайте разберем установку таких пакетов на примере “googleAnalyticsR”.
Если вы просто введёте в консоли R команду установки пакета
install.packages("googleAnalyticsR")
, то скорее всего получите вот такую ошибку.
Чтобы такого не случилось, необходимо дополнительно установить некоторые пакеты Ubuntu. Сделать это можно с помощью следующей команды в консоли сервера.
sudo apt-get install build-essential libcurl4-gnutls-dev libxml2-dev libssl-dev
После этой нехитрой манипуляции выбор остается за вами: можно устанавливать пакеты R стандартным способом в консоли R Studio или же можно все это сделать с консоли Ubuntu. Для последнего нужно ввести команду ниже, которая позволит ввести оболочку R в качестве пользователя root:
sudo -i R
Теперь с консоли Ubuntu мы можем устанавливать пакеты с помощью install.packages() также как и с консоли R Studio.
Собственно теперь разберем то, ради чего лично я и ставил R на сервер - автоматический запуск скриптов по расписанию. Для этого будем использовать пакет cronR. Для начала установим пакет и загрузим соответствующую библиотеку.
install.packages("cronR")
library(cronR)
Теперь на вкладке аддоны у нас появился новый аддон “Schedule R scripts on ...”
При первом запуске у вас появится вот такое окно:
в котором нужно смело нажать “Yes”.
В итоге, после того как установятся все необходимые пакеты вы увидите вот такое окно:
В этом окне нужно указать скрипт, запуск которого мы хотим запланировать, а также параметры этого запуска. Мы с вами разберем основные, отмеченные на скриншоте.
На этом с настройкой автоматического запуска скриптов пожалуй все. А хотя, нет. Чтобы увидеть, какие задачи у вас уже запланированы нужно перейти на вкладку “Manage existing jobs”
и кликнуть на кнопку “Show current crontab schedule”:
В консоли R Studio вы увидите выполнение каких скриптов и на какое время у вас запланировано:
Вот теперь все ;)
Еще одна особенность R, с которой вы столкнетесь или возможно уже столкнулись, - это кодировка и локаль. По умолчанию кодировка в R соответствует настройкам локали. В случае нашего сервера, она будет следующей:
И, если вам нужно будет её изменить, вы столкнетесь со следующей ошибкой:
Для того чтобы обойти эту ошибку, нужно добавить необходимую локаль в настройки сервера. Сделать это можно в несколько шагов следующим образом:
sudo dpkg-reconfigure locales
В открывшемся окне выбираем нужный нам, например ru_RU.CP1251 CP1251
Делаем отметку с помощью нажатия кнопки “Space” и сохраняем изменения.
После этого необходимо перезагрузить сервер с помощью следующей команды:
sudo reboot now
Теперь при настройке локали в R Studio всё отлично работает:
Вместо заключения: R очень мощный язык программирования, который идеально подходит для решения задач связанных со сбором, подготовкой и последующей обработкой данных. С помощью установки R на сервер эти возможности становятся поистине безграничны. А как вы используете R?