Instalación de Visual Studio Code en la nube



Los servicios en la nube han entrado por mucho tiempo y con fuerza en nuestra vida, ahora ya es impensable imaginar una existencia moderna en el espacio digital sin ellos, simplifican enormemente la vida y bajan el umbral para ingresar a TI para las pequeñas empresas, liberándolas de la necesidad de comprar y configurar su propia infraestructura. Los teléfonos inteligentes y las computadoras están conectados a las nubes, y cada vez se les transfieren más datos y servicios.



Los IDE tampoco han escapado a la migración a la nube. Hace unos diez años, esto era un truco, los IDE en la nube apenas comenzaban a desarrollarse, pero luego los jugadores más importantes de la industria de TI llamaron la atención sobre ellos. 



Amazon compró y desarrolla el servicio Cloud9 :





Google ha incorporado su plataforma en la nube Cloud Shell Editor :





Microsoft primero creó su propia plataforma de desarrollo basada en la nube, pero luego la abandonó en favor de la solución que ahora está preparando GitHub : Codespaces :





Todos comparten una idea: "¡Utilice herramientas de desarrollo en cualquier lugar y en cualquier plataforma!" El rendimiento del IDE ya no depende de una computadora personal, no hay necesidad de comprar una computadora de escritorio potente y costosa o una computadora portátil aún más costosa: la nube hará la computación. Y el usuario recibirá un entorno de desarrollo que no depende de su sistema, no requiere configuración local, puede trabajar en el IDE en la nube incluso en una tableta, si le conecta un mouse y un teclado. Y no será vi a través de una consola mala, sino una aplicación GUI completa. 



También hay entornos de desarrollo basados ​​en la nube menos comunes, desde simples sandboxes como CodePen hasta otros más serios como Codenvy , que Red Hat ha tomado bajo su protección .



Pero todas estas soluciones tienen algunas otras cosas en común: se ejecutan en sus propios servidores; algunos requieren el pago de parte de la funcionalidad de trabajo; su interfaz requiere acostumbrarse. Puede resolver estos problemas instalando el conocido Cloud IDE en un VPS alquilado. El pago se realizará solo por alquilar un servidor con la capacidad requerida, sin restricciones en las capacidades, y la interfaz será familiar y familiar para una gran cantidad de desarrolladores, porque no es más que Microsoft Visual Studio Code . Esta oportunidad ha aparecido recientemente gracias al proyecto del servidor de códigos . Este artículo describirá la instalación paso a paso de VC Code en el servidor virtual RuVDS.



Preparación del servidor para la instalación



Primero debe seleccionar y ejecutar un VPS de prueba . Para la demostración, elegí el servidor virtual RUCLOUD en Moscú para reducir el ping: 





ping -c4 194.87.103.124
PING 194.87.103.124 (194.87.103.124) 56(84) bytes of data.
64 bytes from 194.87.103.124: icmp_seq=1 ttl=55 time=4.98 ms
64 bytes from 194.87.103.124: icmp_seq=2 ttl=55 time=5.27 ms
64 bytes from 194.87.103.124: icmp_seq=3 ttl=55 time=14.3 ms
64 bytes from 194.87.103.124: icmp_seq=4 ttl=55 time=5.30 ms

--- 194.87.103.124 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 4.984/7.487/14.384/3.984 ms

      
      





La opción más asequible con un sistema de disco SSD:





Esto es suficiente para probar el funcionamiento del Cloud IDE y trabajar en los proyectos más simples que no requieren mucha potencia informática.



Después de conectarnos a un servidor nuevo con el usuario root , llevemos a cabo la configuración inicial. Primero, crearemos un nuevo usuario <user-name> y lo agregaremos al grupo sudo :  Luego deshabilite la autorización del usuario root vía SSH, para esto, en el archivo / etc / ssh / sshd_config , cambie el parámetro PermitRootLogin yes a no



adduser <user-name>

adduser <user-name> sudo











 nano /etc/ssh/sshd_config

      
      





Para simplificar la descripción, dejaremos la entrada de la contraseña, sin generar claves. Luego arreglamos el archivo host agregando el nombre de la máquina virtual para no recibir la advertencia " sudo: no se puede resolver el host ruvds-xx12x: Nombre o servicio no conocido" :



echo 127.0.0.1 $HOSTNAME >> /etc/hosts

      
      





Después de eso, nos desconectamos del servidor, nos conectamos como nuevo usuario y 



completamos la configuración estableciendo las reglas para el firewall:



sudo ufw allow OpenSSH
sudo ufw enable

      
      





Comprobemos la configuración con el comando sudo ufw status.



sudo ufw status

      
      





La salida del programa debería ser así:



Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

      
      





Actualicemos el sistema e instalemos el servidor web nginx :



sudo apt update
sudo apt upgrade
sudo apt install nginx

      
      





Después de eso, se agregarán varios perfiles nuevos al firewall, que se pueden ver con el comando sudo ufw app list:



sudo ufw app list

Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

      
      





Para comprobar la configuración del servidor web, necesitamos ambos tipos de conexión, los activamos: 



sudo ufw allow 'Nginx Full'

      
      





Asegurémonos de que todo esté incluido correctamente:



sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

      
      





Compruebe que el servidor web se esté ejecutando:



systemctl status nginx

      
      





El resultado debería ser algo como esto: Verifique en el navegador si el servidor está sirviendo la página de nuestro sitio ( <your_server_ip> es la dirección de su VPS):  Debería aparecer el siguiente texto:



nginx.service - A high performance web server and a reverse proxy server

   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)

   Active: active (running) since Fri 2020-04-20 16:08:19 UTC; 3 days ago

     Docs: man:nginx(8)

 Main PID: 2369 (nginx)

    Tasks: 2 (limit: 1153)

   Memory: 3.5M

   CGroup: /system.slice/nginx.service

           ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;

           └─2380 nginx: worker process











http://<your_server_ip>













La configuración inicial está completa, comencemos a instalar el entorno de desarrollo.



Primero, creemos un directorio donde se almacenarán todos los datos IDE y vayamos a él: 



mkdir ~/code-server
cd ~/code-server

      
      





Luego, descargue la última versión del lanzamiento del proyecto y descomprímalo. El número de versión se puede encontrar en: https://github.com/cdr/code-server/releases . Por el momento es v3.8.0, y el archivo se llama: code-server-3.8.0-linux-amd64.tar.gz



wget https://github.com/cdr/code-server/releases/download/v3.8.0/code-server-3.8.0-linux-amd64.tar.gz
tar -xzvf code-server-3.8.0-linux-amd64.tar.gz

      
      





El directorio resultante debe copiarse en / usr / lib / code-server



sudo cp -r code-server-3.8.0-linux-amd64 /usr/lib/code-server

      
      





Luego, haga un enlace sim al archivo ejecutable IDE y cree un directorio donde se almacenarán los datos del usuario:



sudo ln -s /usr/lib/code-server/bin/code-server /usr/bin/code-server
sudo mkdir /var/lib/code-server

      
      





Es hora de configurar el servicio de entorno de desarrollo en la nube. Cree un archivo code-server.service en el editor y agregue las siguientes líneas allí: Asegúrese de establecer la contraseña <your_password> , se usará para iniciar sesión en el IDE, es mejor elegir uno que no coincida con la contraseña de la cuenta.  Casi todo está listo, puede iniciar el servicio: 



sudo nano /lib/systemd/system/code-server.service



[Unit]

Description=code-server

After=nginx.service



[Service]

Type=simple

Environment=PASSWORD=<your_password>

ExecStart=/usr/bin/code-server --bind-addr 127.0.0.1:8080 --user-data-dir /var/lib/code-server --auth password

Restart=always



[Install]

WantedBy=multi-user.target















sudo systemctl start code-server

      
      





Revisemos el estado de su trabajo. 



sudo systemctl status code-server

      
      





Si todo se hizo correctamente, entonces estará  Activo: activo (en ejecución) : Para que el servicio se reinicie en caso de fallas, ejecute el siguiente comando: 



code-server.service - code-server

     Loaded: loaded (/lib/systemd/system/code-server.service; disabled; vendor preset: enabled)

     Active: active (running) since Mon 2020-12-21 07:28:53 MSK; 4s ago

   Main PID: 32357 (node)

      Tasks: 22 (limit: 1094)

     Memory: 55.6M

     CGroup: /system.slice/code-server.service

             ├─32357 /usr/lib/code-server/lib/node /usr/lib/code-server --bind-addr 127.0.0.1:8080 --user-data-dir /var/lib/code-server --aut>

             └─32390 /usr/lib/code-server/lib/node /usr/lib/code-server --bind-addr 127.0.0.1:8080 --user-data-dir /var/lib/code-server --aut>











sudo systemctl enable code-server

      
      





Queda por vincular un dominio a nuestro servidor, protegerlo instalando un certificado de Let's Encrypt y configurar Nginx para que funcione con él. Un dominio gratuito es fácil de obtener en https://www.freenom.com y es suficiente para poner en funcionamiento nuestro entorno. Puede leer sobre cómo enlazarlo en la sección de ayuda de RuVDS .



Cree un archivo de configuración en el editor: 



sudo nano /etc/nginx/sites-available/code-server.conf

      
      





Y agregue las siguientes líneas allí: En lugar de <vc-code.domain> , debe sustituir el dominio que registró para el IDE. Para que la configuración funcione, debe crear un enlace simbólico en el directorio / etc / nginx / sites-enabled .



server {

    listen 80;

    listen [::]:80;



    server_name <vc-code.domain>;



    location / {

      proxy_pass http://localhost:8080/;

      proxy_set_header Upgrade $http_upgrade;

      proxy_set_header Connection upgrade;

      proxy_set_header Accept-Encoding gzip;

    }

}











sudo ln -s /etc/nginx/sites-available/code-server.conf /etc/nginx/sites-enabled/code-server.conf

      
      





Por si acaso, verifiquemos la validez de la configuración: 



sudo nginx -t

      
      





Si todo está en orden, veremos el siguiente texto en la consola:



nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

      
      





En los últimos años, nos han enseñado que los sitios deben estar protegidos y funcionar con el protocolo HTTPS, un sitio que funciona sin SSL parece extraño y se ve incómodo, como si el administrador fuera demasiado vago para escribir un par de líneas en la consola. Por lo tanto, tomaremos un certificado de la conocida empresa Let's Encrypt y el IDE en la nube estará listo para usar. 



Instalemos uno de los bots de instalación más comunes: 



sudo apt install certbot python3-certbot-nginx

      
      





Y luego, con su ayuda, registraremos e instalaremos un certificado para nuestro dominio <vc-code.domain> :



sudo certbot --nginx -d <vc-code.domain>



Durante el proceso de configuración, tendremos que responder varias preguntas: ingrese su dirección de correo electrónico correo electrónico, acepte los términos del servicio, comparta (o no) la dirección de correo electrónico con Electronic Frontier y configure un redireccionamiento forzado a HTTPS (recomendado). A continuación, puede instalar Git:



sudo apt install git

      
      





¡Todo está listo!



Abra su sitio en el navegador y recibirá una invitación de VC Code para ingresar la contraseña que se especificó en el archivo de configuración





El entorno se está ejecutando, vemos la interfaz familiar de VC Code:





Puedes ponerte manos a la obra. Como prueba, intentemos editar el archivo con el indicador estándar de Nginx.





Reemplacemos nginx con VC Code y actualicemos la página que emite el servidor en respuesta a una llamada directa a la dirección IP:





¡Todo está funcionando!



Este es un código VC completamente funcional y familiar, funcionará con un sistema de control de versiones:





Puedes conectarle complementos:





Un IDE no es diferente de una aplicación de escritorio, excepto que se ejecuta en un servidor remoto y se ejecuta en un navegador.





¡Buena suerte en la nube! :)










All Articles