Installer Visual Studio Code dans le cloud



Les services cloud sont depuis longtemps et étroitement entrés dans notre vie, maintenant il est déjà impensable d'imaginer l'existence moderne dans l'espace numérique sans eux, ils simplifient grandement la vie et abaissent le seuil d'entrée dans l'informatique pour les petites entreprises, les libérant de la nécessité d'acheter et de mettre en place leur propre infrastructure. Les smartphones et les ordinateurs sont connectés aux nuages, et de plus en plus de données et de services leur sont transférés.



Les IDE n'ont pas non plus échappé à la migration vers le cloud. Il y a environ dix ans, c'était un gadget, les IDE Cloud commençaient à peine à se développer, mais les plus grands acteurs de l'industrie informatique ont ensuite attiré l'attention sur eux. 



Amazon a acheté et développe le service Cloud9 :





Google a intégré sa plate - forme cloud Cloud Shell Editor :





Microsoft a initialement créé sa propre plate-forme de développement basée sur le cloud, puis l'a abandonnée au profit de la solution que GitHub prépare actuellement - Espaces de codes :





Ils partagent tous une idée: "Utilisez des outils de développement n'importe où et sur n'importe quelle plateforme!" Les performances de l'IDE ne dépendent plus d'un ordinateur personnel, il n'est pas nécessaire d'acheter un ordinateur de bureau puissant et coûteux ou un ordinateur portable encore plus cher - le cloud fera le calcul. Et l'utilisateur recevra un environnement de développement qui ne dépend pas de son système, ne nécessite pas de configuration locale, vous pouvez travailler dans l'IDE cloud même sur une tablette, si vous y connectez une souris et un clavier. Et ce ne sera pas vi via une console moyenne, mais une application GUI à part entière. 



Il existe également des environnements de développement cloud moins courants, des simples bacs à sable comme CodePen à des environnements plus sérieux comme Codenvy , que Red Hat a pris sous son aile.



Mais toutes ces solutions ont encore quelques points communs: elles fonctionnent sur leurs propres serveurs; certains exigent le paiement d'une partie de la fonctionnalité de travail; leur interface prend du temps pour s'y habituer. Vous pouvez résoudre ces problèmes en installant le Cloud IDE familier sur un VPS loué. Le paiement sera uniquement pour la location d'un serveur avec la capacité requise, aucune restriction sur les capacités, et l'interface sera familière et familière à un grand nombre de développeurs, car ce n'est rien d'autre que Microsoft Visual Studio Code . Cette opportunité est apparue récemment grâce au projet de serveur de code . Cet article décrit l'installation étape par étape du code VC sur le serveur virtuel RuVDS.



Préparation du serveur pour l'installation



Vous devez d'abord sélectionner et exécuter un test VPS . Pour la démonstration, j'ai choisi le serveur virtuel RUCLOUD à Moscou pour réduire le 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

      
      





L'option la plus abordable avec un système de disque SSD:





Cela suffit pour tester le fonctionnement du Cloud IDE et travailler sur les projets les plus simples qui ne nécessitent pas beaucoup de puissance de calcul.



Après la connexion à un nouveau serveur avec l' utilisateur root , effectuons la configuration initiale. Tout d'abord, nous allons créer un nouvel utilisateur <user-name> et l'ajouter au groupe sudo :  Ensuite, désactivez l'autorisation de l'utilisateur root via SSH, pour cela, dans le fichier / etc / ssh / sshd_config , changez le paramètre PermitRootLogin yes en no



adduser <user-name>

adduser <user-name> sudo











 nano /etc/ssh/sshd_config

      
      





Pour simplifier la description, nous laisserons la saisie du mot de passe, sans générer de clés. Ensuite, nous corrigeons le fichier hôte en y ajoutant le nom de la machine virtuelle afin de ne pas recevoir l'avertissement " sudo: impossible de résoudre l'hôte ruvds-xx12x: nom ou service non connu" :



echo 127.0.0.1 $HOSTNAME >> /etc/hosts

      
      





Après cela, nous nous déconnectons du serveur, nous nous connectons en tant que nouvel utilisateur et 



terminons la configuration en définissant les règles du pare-feu:



sudo ufw allow OpenSSH
sudo ufw enable

      
      





Vérifions les paramètres avec la commande sudo ufw status.



sudo ufw status

      
      





La sortie du programme devrait ressembler à ceci:



Status: active

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

      
      





Mettons à jour le système et installons le serveur Web nginx :



sudo apt update
sudo apt upgrade
sudo apt install nginx

      
      





Après cela, plusieurs nouveaux profils seront ajoutés au pare-feu, qui peuvent être affichés avec la commande sudo ufw app list:



sudo ufw app list

Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

      
      





Pour vérifier les paramètres du serveur Web, nous avons besoin des deux types de connexion, activez-les: 



sudo ufw allow 'Nginx Full'

      
      





Assurons-nous que tout est correctement inclus:



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)

      
      





Vérifiez que le serveur Web fonctionne:



systemctl status nginx

      
      





La sortie doit être quelque chose comme ceci: Vérifiez dans le navigateur si le serveur dessert la page de notre site ( <your_server_ip> est l'adresse de votre VPS):  Le texte suivant doit apparaître:



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 configuration initiale est terminée, commençons à installer l'environnement de développement.



Tout d'abord, créons un répertoire dans lequel toutes les données IDE seront stockées et allons-y: 



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

      
      





Ensuite, téléchargez la dernière version de la version du projet et décompressez-la. Le numéro de version peut être trouvé sur: https://github.com/cdr/code-server/releases . Pour le moment, il s'agit de la v3.8.0, et le fichier correspondant s'appelle: 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

      
      





Le répertoire résultant doit être copié dans / usr / lib / code-server



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

      
      





Ensuite, créez un lien sim vers le fichier exécutable IDE et créez un répertoire dans lequel les données utilisateur seront stockées:



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

      
      





Il est temps de configurer le service d'environnement de développement cloud. Créez un fichier code-server.service dans l'éditeur et ajoutez-y les lignes suivantes: Assurez-vous de définir le mot de passe <your_password> , il sera utilisé pour se connecter à l'EDI, il vaut mieux en choisir un qui ne correspond pas au mot de passe du compte.  Presque tout est prêt, vous pouvez démarrer le service: 



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

      
      





Vérifions l'état de son travail. 



sudo systemctl status code-server

      
      





Si tout a été fait correctement, alors il sera  Actif: actif (en cours d'exécution) : pour que le service se redémarre en cas d'échec, exécutez la commande suivante: 



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

      
      





Il reste à lier un domaine à notre serveur, à le protéger en installant un certificat de Let's Encrypt et à configurer Nginx pour qu'il fonctionne avec lui. Un domaine gratuit est facile à obtenir sur https://www.freenom.com et suffit pour que notre environnement soit opérationnel. Vous pouvez lire comment le lier dans la section d'aide RuVDS .



Créez un fichier de configuration dans l'éditeur: 



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

      
      





Et ajoutez les lignes suivantes ici: À la place de <vc-code.domain>, vous devez remplacer votre domaine que vous avez enregistré pour l'EDI. Pour que la configuration fonctionne, vous devez y créer un lien symbolique dans le répertoire / 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

      
      





Au cas où, vérifions la validité des paramètres: 



sudo nginx -t

      
      





Si tout est en ordre, nous verrons le texte suivant dans la console:



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

      
      





Au cours des dernières années, on nous a appris que les sites doivent être protégés et fonctionner via le protocole HTTPS, un site qui fonctionne sans SSL semble étrange et semble gênant, comme si l'administrateur était trop paresseux pour écrire quelques lignes dans la console. Par conséquent, nous prendrons un certificat de la célèbre société Let's Encrypt et l'EDI cloud sera prêt à être utilisé. 



Installons l'un des bots de configuration les plus courants: 



sudo apt install certbot python3-certbot-nginx

      
      





Et puis, avec son aide, nous allons enregistrer et installer un certificat pour notre domaine <vc-code.domain> :



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



Pendant le processus de configuration, nous devrons répondre à plusieurs questions: entrez votre adresse email email, acceptez les conditions d'utilisation, partagez (ou non) l'adresse email avec Electronic Frontier et configurez une redirection forcée vers HTTPS (recommandé). Ensuite, vous pouvez installer Git:



sudo apt install git

      
      





Tout est prêt!



Ouvrez votre site dans le navigateur et vous recevrez une invitation de VC Code pour entrer le mot de passe qui a été spécifié dans le fichier de configuration





L'environnement est en cours d'exécution, nous voyons l'interface familière du code VC:





Vous pouvez vous mettre au travail. À titre de test, essayons d'éditer le fichier avec l'invite standard Nginx.





Remplaçons nginx par VC Code et mettons à jour la page que le serveur émet en réponse à un appel direct à l'adresse IP:





Tout fonctionne!



Ceci est un code VC entièrement fonctionnel et familier, il fonctionnera avec un système de contrôle de version:





Vous pouvez y connecter des plugins:





Un IDE n'est pas différent d'une application de bureau, sauf qu'il s'exécute sur un serveur distant et s'exécute dans un navigateur.





Bonne chance dans le cloud! :)










All Articles