Код-серверная IDE — это код Microsoft Visual Studio Code, запущенный на удаленном сервере и доступный напрямую из браузера. Это означает, что вы можете использовать различные устройства, работающие под управлением различных операционных систем, и всегда иметь под рукой постоянную среду разработки.
В этом обучающем руководстве вы настроите код-серверную облачную IDE-платформу на компьютере с Ubuntu 18.04 и сделаете ее доступной на вашем домене, защищенном с помощью Let’s Encrypt. Более подробную версию этого обучающего руководства см. в статье Настройка код-серверной облачной IDE-платформы в Ubuntu 18.04.
Сервер с Ubuntu 18.04 и не менее чем 2 ГБ оперативной памяти, root-доступ и учетная запись sudo без прав root. Вы можете выполнить настройку, следуя указаниям документа Начальная настройка сервера для Ubuntu 18.04.
Nginx, установленный на сервере. Выполните шаги 1–4 руководства по установке Nginx в Ubuntu 18.04.
Полное зарегистрированное доменное имя для размещения код-сервера, указывающее на ваш сервер. В этом обучающем руководстве мы будем использовать имя code-server.your-domain
. Вы можете купить доменное имя на Namecheap, получить его бесплатно на Freenom или воспользоваться услугами любого предпочитаемого регистратора доменных имен.
На вашем сервере должны быть настроены обе нижеследующие записи DNS. В руководстве Введение в DigitalOcean DNS содержится подробная информация по их добавлению.
your-domain
указывает на публичный IP-адрес вашего сервера.your-domain
указывает на публичный IP-адрес вашего сервера.Создайте каталог для хранения всех данных код-серверной IDE:
Перейдите в каталог:
Посетите страницу релизов Github код-серверной IDE и выберите последнюю сборку Linux. Загрузите ее с помощью следующей команды:
Распакуйте архив:
Перейдите в каталог, содержащий исполняемый файл код-серверной IDE:
Чтобы получить доступ к исполняемому файлу в вашей системе, скопируйте его с помощью:
Создайте папку для код-серверной IDE для хранения пользовательских данных:
Создайте службу systemd
, code-server.service
, в каталоге /lib/systemd/system
:
Добавьте следующие строки:
[Unit]
Description=code-server
After=nginx.service
[Service]
Type=simple
Environment=PASSWORD=your_password
ExecStart=/usr/local/bin/code-server --host 127.0.0.1 --user-data-dir /var/lib/code-server --auth password
Restart=always
[Install]
WantedBy=multi-user.target
--host 127.0.0.1
привязывает ее к localhost
.--user-data-dir /var/lib/code-server
задает каталог пользовательских данных.--auth password
указывает, что для аутентификации посетителей используется пароль.Обязательно замените your_password
на желаемый пароль.
Сохраните и закройте файл.
Запустите службу код-серверной IDE:
Убедитесь, что она запущена корректно:
Результат будет выглядеть примерно так:
Output● code-server.service - code-server
Loaded: loaded (/lib/systemd/system/code-server.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2019-12-09 20:07:28 UTC; 4s ago
Main PID: 5216 (code-server)
Tasks: 23 (limit: 2362)
CGroup: /system.slice/code-server.service
├─5216 /usr/local/bin/code-server --host 127.0.0.1 --user-data-dir /var/lib/code-server --auth password
└─5240 /usr/local/bin/code-server --host 127.0.0.1 --user-data-dir /var/lib/code-server --auth password
...
Активируйте код-серверную службу для автоматического запуска после перезагрузки сервера:
Теперь мы настроим Nginx в качестве обратного прокси для код-серверной IDE.
Создайте code-server.conf
для хранения конфигурации для публикации код-серверной IDE на вашем домене:
Добавьте следующие строки для настройки серверного блока, используя необходимые директивы:
server {
listen 80;
listen [::]:80;
server_name code-server.your_domain;
location / {
proxy_pass http://localhost:8080/;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
}
}
Замените code-server.your_domain
на желаемый домен, а затем сохраните и закройте файл.
Чтобы сделать данную конфигурацию сайта активной, создайте символьную ссылку:
Проверьте валидность конфигурации:
Вывод должен выглядеть так:
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Чтобы новая конфигурация вступила в силу, перезапустите Nginx:
Теперь вы должны обеспечить защиту вашего домена с помощью TLS-сертификата Let’s Encrypt.
Добавьте хранилище пакетов Certbot на ваш сервер:
Установите Certbot и его плагин Nginx:
Настройте ufw
для принятия шифрованного трафика:
Результат будет выглядеть следующим образом:
OutputRule added
Rule added (v6)
Перезапустите, чтобы конфигурация вступила в силу:
Результат будет выглядеть так:
OutputFirewall reloaded
Перейдите на домен код-серверной IDE.
Введите пароль код-серверной IDE. Вы увидите интерфейс, опубликованный на вашем домене.
Чтобы обеспечить его защиту, выполните установку TLS-сертификата Let’s Encrypt с помощью Certbot.
Запросите сертификат для вашего домена:
Предоставьте адрес электронной почты для срочных уведомлений, примите Правила и условия EFF и выберите, нужно ли перенаправить весь HTTP-трафик на HTTPS.
Результат будет выглядеть примерно следующим образом:
OutputIMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/code-server.your_domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/code-server.your_domain/privkey.pem
Your cert will expire on ... To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
...
Certbot успешно сгенерировал TLS-сертификаты и применил их для конфигурации Nginx для вашего домена.
Теперь у вас есть код-серверная IDE, установленная на сервере Ubuntu 18.04 и опубликованная на вашем домене с защитой в форме сертификатов Let’s Encrypt. Дополнительную информацию о других функциях и подробные инструкции по работе с прочими компонентами код-серверной IDE см. в документации для Visual Studio Code.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!