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! :)