Потребуется кредитная карточка. Деньги списываться не будут. Данная инструкция работает на linux и macos.
Создаём аккаунт на cloud.google.com.
В России придётся делать вид, что ты не частное лицо, а предприятие. Или делать вид, что ты частное лицо, но в Антарктиде :) Я сделал вид, что я — предприятие.
Создаём проект кликая мышкой.
Далее будем работать через командную строку. Мышкой, конечно, нагляднее, но протоколировать и быстро повторить действия гораздо тяжелее :)
Скачиваем и устанавливаем google cloud sdk.
~/Downloads/google-cloud-sdk
;cd ~/Downloads/google-cloud-sdk
;./install.sh
gcloud init
Перед созданием виртуальной машины (ВМ) посмотрим доступные образцы операционных систем, возможных зон и мощностей:
gcloud compute images list
gcloud compute zones list
gcloud compute machine-types list
Смотрим на ценник разных виртуальных машин
Выбираем любую временную зону, свежую убунту и мощности по карману для нашей первой виртуальной машины
gcloud compute instances create rstudio2 --image-family ubuntu-1710 --image-project ubuntu-os-cloud --machine-type n1-standard-4 --zone europe-west4-c
Опций у этой команды много разных, можно посмотреть с помощью команды:
gcloud compute instances create --help
Для совсем новичков в командной строке: чтобы отдохнуть от чтения документации можно кликнуть q
.
Список всех наших машин:
gcloud compute instances list
Мне надоело указывать зону каждый раз, поэтому я установил настройки по умолчанию:
gcloud config set compute/zone europe-west4-c
gcloud config configurations list
Теоретически, можно иметь ВМ с одинаковыми именами в разных зонах, но этот масштаб мне пока не нужен :)
Создаём правило, которое разрешает Rstudio Server работать на порту 8787:
gcloud compute firewall-rules create allow-rstudio --allow=tcp:8787
Это правило по умолчанию будет применяться для всех ВМ (?)
Список всех правил:
gcloud compute firewall-rules list
Здесь может быть потенциальная опасность: если правила разрешают слишком много, то машину смогут атаковать плохие дяденьки и тётеньки! И начать майнить криптовалюту или атаковать какой-нибудь белый и пушистый сайт :)
Для справки:
gcloud compute firewall-rules --help
Наконец заглянем на нашу ВМ! Как там она поживает?
gcloud compute ssh rstudio2
При первом логине потребуется создать ключ ssh и придумать пароль. При наборе пароль не виден, это нормально!
Если не настраивать временную зону по умолчанию, то соединяться с машиной приходится чуть длиннее:
gcloud compute ssh rstudio2 --zone europe-west4-c
Ставим свежую версию R на нашу машину.
Во-первых мы добавим нашей убунте репозиторий, из которого будет ставиться R. При этом надо уточнять версию убунту.
У нас поставлена убунту версии 17.10 с кодовым именем artful
. Поэтому добавка репозитория делается так:
Во-вторых, добавляем ключ, которым подписаны все пакеты R на CRAN:
sudo sh 'echo "deb https://cloud.r-project.org/bin/linux/ubuntu artful/" >> /etc/apt/sources.list'
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E084DAB9
sudo apt update
sudo apt install r-base r-base-dev
Первая команда добавляет строку deb https::/cloud.r-project/bin/linux/ubuntu artful/
в конец файла /etc/apt/sources.list
.
Это можно сделать и руками запустив редактор vim: sudo vim /etc/apt/sources.list
.
Далее войти в режим редактирования нажав i
. Добавить строку, сохранить, и выйти нажав Esc
, затем :wq
и энтер.
Для семейства tidyverse
и devtools
:
sudo apt install libcurl4-openssl-dev libssl-dev libxml2-dev
sudo apt install libssh2-1-dev
Для работы с гео-данными: (?что-то тут не взлетает)
# commented out: sudo add-apt-repository -y ppa:ubuntugis/ubuntugis-unstable
# commented out: sudo apt update && sudo apt upgrade
sudo apt install libgeos-dev libproj-dev libgdal-dev libudunits2-dev
Разумно попробовать последнюю без первых двух (?, ибо что-то там не взлетело?)
Весь нужный код с номером свежей версии написан на страничке Rstudio Server:
sudo apt-get install gdebi-core
wget https://download2.rstudio.org/rstudio-server-1.1.442-amd64.deb
sudo gdebi rstudio-server-1.1.442-amd64.deb
На вопрос Do you want to install the software package?
отвечаем yes
.
У нас будет два новых пользователя, sasha и masha, относящиеся к одной группе team.
И оба они будет иметь доступ на чтение и запись к папке home/sasha/project
.
Поехали:
sudo adduser sasha
sudo adduser masha
На вопросы про адрес и личные привычки можно не отвечать :)
sudo groupadd team
sudo gpasswd -a masha team
sudo gpasswd -a sasha team
Создаём папку у пользователя sasha, указываем пользователя по умолчанию и группу владельцев и даём всем доступ на чтение и запись (770):
sudo mkdir /home/sasha/project
sudo chown -R sasha:team /home/sasha/project
sudo chown -R 770 /home/sasha/project
su - sasha
R
Оказавшись в R:
install.packages(c("tidyverse", "caret", "forecast"))
Это ж линукс, клонируем с гитхаба без дополнительных программ :)
git clone https://github.com/user/repository.git
Выходим за Сашу:
exit
Логинимся за Машу и из её домашней папки создаём ссылку на Сашину папку /home/sasha/project
su - masha
ln -s /home/sasha/project /home/masha/project
exit
Смотрим внешний IP адрес:
gcloud compute instances list
В браузере набираем внешний IP и после :8787
, примерно так ‘35.xxx.xxx.xxx:8787’ и жмём энтер :)
Интересно, будут ли от лица Маши стоять пакеты?
gcloud compute scp --recurse rstudio2:/home/sasha/project ~/project_local_copy
Опция --recurse
скопирует все подпапки и файлы в них.
Логинимся на машину с помощью
gcloud compute ssh rstudio2
Запускаем tmux
.
tmux
Запускают чистый R внутри tmux
R
Запускают внутри R свой мега-скрипт.
Жмакают ctrl-b
а затем d
.
Выходят с машины:
exit
При этом процесс внутри tmux запущен и работает!!!
После некоторого времени возвращаются обратно на ВМ и подсоединяют сессию в tmux
tmux attach
gcloud compute instances stop rstudio2
gcloud compute instances start rstudio2
Описание машины:
gcloud compute instances describe rstudio2
Заходим на запущенную машину и выходим из неё:
gcloud compute ssh rstudio2
exit
Обновляем находясь на самой машине:
gcloud components update
apt update
apt ugrade
После четырёх дней работы моей первой виртуальной машины, я получил предупреждение от гугла, что она майнит криптовалюту :) После апелляции гугл сказал, что это ошибка их алгоритма :)
March 17th, 2018 by Борис Демешев