Введение
С перемещением инструментов разработки в облако растет внедрение облачных платформ интегрированной среды разработки (IDE). Облачные IDE доступны со всех видов современных устройств через веб-браузеры и предлагают многочисленные преимущества для сценариев совместной работы в реальном времени. Работа в облачной IDE обеспечивает унифицированную среду разработки и тестирования для вас и вашей команды, сводя к минимуму несовместимость платформ. Облачные IDE, доступные через веб-браузер, доступны со всех типов современных устройств.
Eclipse Theia — это расширяемая облачная среда разработки, работающая на удаленном сервере и доступная из веб-браузера. Визуально он разработан так, чтобы выглядеть и вести себя аналогично Microsoft Visual Studio, что означает, что он поддерживает множество языков программирования, имеет гибкую компоновку и имеет встроенный терминал. Что отличает Eclipse Theia от другого облачного программного обеспечения IDE, так это его расширяемость; его можно изменить с помощью пользовательских расширений, которые позволяют создать облачную IDE, соответствующую вашим потребностям.
В этом руководстве вы развернете Eclipse Theia на своем сервере Ubuntu 18.04 с помощью Docker Compose, инструмента оркестрации контейнеров. Вы предоставите его своему домену с помощью nginx-proxy, автоматизированной системы для Docker, которая упрощает процесс настройки Nginx для работы в качестве обратного прокси-сервера для контейнера. Вы также защитите его с помощью бесплатного TLS-сертификата Let's Encrypt, который он предоставит с помощью своего специализированного дополнения. В конце концов, у вас будет Eclipse Theia, работающий на вашем сервере Ubuntu 18.04, доступный через HTTPS и предлагающий пользователю войти в систему.
Предпосылки
- Сервер Ubuntu 18.04 с привилегиями root и дополнительной учетной записью без полномочий root.
- Докер установлен на вашем сервере. Как установить Докер на Ubuntu 18.04.
- Docker Compose установлен на вашем сервере. Выполните шаг 1 инструкции « Как установить Docker Compose в Ubuntu 18.04».
- Полностью зарегистрированное доменное имя. В этом уроке мы будем использовать домен
theia.your_domain
.
Если вы намерены установить Eclipse IDE Theia Cloud на удаленный сервер, продолжайте чтение, в противном случае пропустите первый абзац «Подключение к серверу» и прочитайте следующий.
Подключение к серверу
Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:
ssh root@IP_DEL_SERVER
Далее вам нужно будет ввести пароль пользователя root.
Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить root на свое имя пользователя:
ssh nome_utente@IP_DEL_SERVER
Затем вам будет предложено ввести пароль пользователя.
Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Настройте nginx-прокси с помощью Let’s Encrypt
В этом разделе вы развернете nginx-proxy
и его надстройку Let's Encrypt с помощью Docker Compose. Это позволит автоматически предоставлять и обновлять сертификат TLS, чтобы при развертывании Eclipse Theia он был доступен в вашем домене через HTTPS.
Для целей этого руководства все файлы будут храниться в ~/eclipse-theia
. Создайте каталог, выполнив следующую команду:
mkdir ~/eclipse-theia
Перейдите к нему:
cd ~/eclipse-theia
Вы сохраните конфигурацию Docker Compose для nginx-proxy
в файле с именем nginx-proxy-compose.yaml
. Создайте его с помощью текстового редактора:
nano nginx-proxy-compose.yaml
Добавьте следующие строки:
version: '2'
services:
nginx-proxy:
restart: always
image: jwilder/nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- "/etc/nginx/htpasswd:/etc/nginx/htpasswd"
- "/etc/nginx/vhost.d"
- "/usr/share/nginx/html"
- "/var/run/docker.sock:/tmp/docker.sock:ro"
- "/etc/nginx/certs"
letsencrypt-nginx-proxy-companion:
restart: always
image: jrcs/letsencrypt-nginx-proxy-companion
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
volumes_from:
- "nginx-proxy"
Здесь вы определяете два сервиса, которые Docker Compose будет nginx-proxy
и его компаньон Let's Encrypt. Для прокси укажите в качестве образа jwilder/nginx-proxy
, сопоставьте порты HTTP и HTTPS и определите тома, которые будут ему доступны во время выполнения.
Тома — это каталоги на вашем сервере, к которым определенная служба будет иметь полный доступ, которые вы позже будете использовать для настройки аутентификации пользователей. Для этого вы будете использовать первый том из списка, который сопоставляет локальный /etc/nginx/htpasswd
с тем же контейнером. В этой папке nginx-proxy
ожидает найти файл с таким же именем, как и у целевого домена, содержащий учетные данные для входа в систему для аутентификации пользователя в формате htpasswd
( username:hashed_password
).
Для надстройки вы даете имя образу Docker и разрешаете доступ к сокету Docker, определяя том. Затем вы указываете, что надстройка должна наследовать доступ к томам, определенным для nginx-proxy
. Обе службы имеют параметр restart
, установленный на always
, что указывает Docker перезапускать контейнеры в случае сбоя или перезапуска системы.
Сохраните и закройте файл.
Примените конфигурацию, выполнив эту команду:
docker-compose -f nginx-proxy-compose.yaml up -d
Здесь вы передаете имя файла nginx-proxy-compose.yaml
параметру -f
команды docker-compose
, который указывает файл для запуска. Затем он передает аргумент up
, который говорит ему запустить контейнеры. Флаг -d
включает отсоединенный режим, что означает, что Docker Compose будет запускать контейнеры в фоновом режиме.
Окончательный вывод будет выглядеть так:
Creating network "eclipse-theia_default" with the default driver
Pulling nginx-proxy (jwilder/nginx-proxy:)...
latest: Pulling from jwilder/nginx-proxy
8d691f585fa8: Pull complete
5b07f4e08ad0: Pull complete...
Digest: sha256:dfc0666b9747a6fc851f5fb9b03e65e957b34c95d9635b4b5d1d6b01104bde28
Status: Downloaded newer image for jwilder/nginx-proxy:latest
Pulling letsencrypt-nginx-proxy-companion (jrcs/letsencrypt-nginx-proxy-companion:)...
latest: Pulling from jrcs/letsencrypt-nginx-proxy-companion
89d9c30c1d48: Pull complete
668840c175f8: Pull complete...
Digest: sha256:a8d369d84079a923fdec8ce2f85827917a15022b0dae9be73e6a0db03be95b5a
Status: Downloaded newer image for jrcs/letsencrypt-nginx-proxy-companion:latest
Creating eclipse-theia_nginx-proxy_1... done
Creating eclipse-theia_letsencrypt-nginx-proxy-companion_1... done
Вы развернули nginx-proxy
и компонент Let’s Encrypt с помощью Docker Compose. Теперь вы перейдете к настройке Eclipse Theia в своем домене и его защите.
Настройка Dockerized Eclipse Theia
В этом разделе вы создадите файл, содержащий все разрешенные комбинации доступа, которые потребуется ввести пользователю. Затем вы развернете Eclipse Theia на своем сервере с помощью Docker Compose.
Как объяснялось на предыдущем шаге, nginx-proxy
ожидает, что комбинации доступа будут находиться в файле, названном в честь выставленного домена, в формате htpasswd
и сохраненном в каталоге в /etc/nginx/htpasswd
. Локальный каталог, который сопоставляется с виртуальным каталогом, не обязательно должен совпадать с указанным в конфигурации nginx-proxy
.
Для создания комбинаций доступа необходимо сначала установить htpasswd
, выполнив следующую команду:
sudo apt install apache2-utils
Пакет apache2-utils
содержит утилиту htpasswd
.
Создайте /etc/nginx/htpasswd
:
sudo mkdir -p /etc/nginx/htpasswd
Создайте файл, в котором будут храниться логины для вашего домена:
sudo touch /etc/nginx/htpasswd/theia.your_domain
Не забудьте заменить theia.your_domain
на свой собственный домен.
Чтобы добавить комбинацию имени пользователя и пароля, выполните следующую команду:
sudo htpasswd /etc/nginx/htpasswd/theia.your_domain username
Замените username
на имя пользователя, которое вы хотите добавить. Вам будет предложено ввести пароль дважды. После его предоставления htpasswd
добавит пару хешированных имени пользователя и пароля в конец файла. Вы можете повторить эту команду для всех логинов, которые хотите добавить.
Теперь вы создадите конфигурацию для развертывания Eclipse Theia. Вы сохраните его в файле с именем eclipse-theia-compose.yaml
. Создайте его с помощью текстового редактора:
nano eclipse-theia-compose.yaml
Добавьте следующие строки:
version: '2.2'
services:
eclipse-theia:
restart: always
image: theiaide/theia:next
init: true
environment:
- VIRTUAL_HOST=theia.your_domain
- LETSENCRYPT_HOST=theia.your_domain
В этой конфигурации мы определяем одну службу с именем eclipse-theia
с параметром restart
always
и theiaide/theia:next
в качестве образа контейнера. Мы также установили для init
значение true
, чтобы указать Docker использовать init
в качестве основного обработчика процесса при запуске Eclipse Theia внутри контейнера.
Затем вы указываете две переменные среды в разделе environment
: VIRTUAL_HOST
и LETSENCRYPT_HOST
. Первый используется с nginx-proxy
, который сообщает ему, к какому домену должен быть открыт контейнер, а второй используется надстройкой Let's Encrypt и указывает, для какого домена запрашивать сертификаты TLS. Если вы не укажете подстановочный знак в качестве значения для VIRTUAL_HOST
, они должны быть одинаковыми.
Не забудьте заменить theia.your_domain
на нужный домен, затем сохраните и закройте файл.
Теперь разверните Eclipse Theia, запустив:
docker-compose -f eclipse-theia-compose.yaml up -d
Окончательный вывод будет выглядеть так:
...
Pulling eclipse-theia (theiaide/theia:next)...
next: Pulling from theiaide/theia
63bc94deeb28: Pull complete
100db3e2539d: Pull complete...
Digest: sha256:c36dff04e250f1ac52d13f6d6e15ab3e9b8cad9ad68aba0208312e0788ecb109
Status: Downloaded newer image for theiaide/theia:next
Creating eclipse-theia_eclipse-theia_1... done
Затем в браузере перейдите на домен, который вы используете для Eclipse Theia. Ваш браузер покажет вам приглашение с просьбой войти в систему. После ввода правильных учетных данных вы войдете в Eclipse Theia и сразу увидите графический интерфейс редактора. В адресной строке вы увидите замочек, указывающий на то, что соединение защищено. Если вы не видите его сразу, подождите несколько минут, пока сертификаты TLS будут подготовлены, а затем перезагрузите страницу.
Теперь, когда вы можете безопасно войти в свою облачную IDE, вы начнете использовать редактор на следующем шаге.
Используйте интерфейс Eclipse Theia
В этом разделе вы познакомитесь с некоторыми функциями интерфейса Eclipse Theia.
В левой части IDE расположен вертикальный ряд из четырех кнопок, которые открывают наиболее часто используемые функции боковой панели.
Эта панель настраивается, поэтому вы можете перемещать эти представления в другом порядке или удалять их с панели. По умолчанию первое представление открывает панель Explorer, которая обеспечивает древовидную навигацию по структуре проекта. Здесь вы можете управлять своими папками и файлами, создавая, удаляя, перемещая и переименовывая их по мере необходимости.
После создания нового файла через меню « Файл » вы увидите пустой файл, открытый в новой вкладке. После сохранения вы можете просмотреть имя файла на боковой панели Проводника. Чтобы создать папки, щелкните правой кнопкой мыши боковую панель проводника и выберите « Новая папка ». Вы можете развернуть папку, щелкнув ее имя, а также перетащив файлы и папки в верхнюю часть иерархии, чтобы переместить их в новое место.
Следующие две опции обеспечивают доступ к функциям поиска и замены. Далее в следующем представлен обзор систем управления исходным кодом, которые вы можете использовать, например Git.
Последнее представление — это опция отладчика, которая обеспечивает все общие действия по отладке на панели. Конфигурации отладки можно сохранить в файле launch.json
.
Центральной частью графического интерфейса является ваш редактор, который вы можете разделить на вкладки для редактирования кода. Вы можете изменить вид редактирования в сетке или в соседних рядах. Как и все современные IDE, Eclipse Theia поддерживает подсветку синтаксиса кода.
Вы можете получить доступ к терминалу, набрав CTRL+SHIFT+`
или щелкнув Терминал в верхнем меню и выбрав Новый Терминал. Терминал откроется в нижней панели, а его рабочий каталог будет установлен в рабочей области проекта, которая содержит файлы и папки, показанные на боковой панели Проводника.
Вывод
Теперь у вас есть Eclipse Theia, универсальная облачная IDE, установленная на вашем сервере Ubuntu 18.04 с помощью Docker Compose и nginx-proxy
. Вы защитили его с помощью бесплатного TLS-сертификата Let’s Encrypt и настроили экземпляр для запроса учетных данных пользователя.