Instalando o Visual Studio Code na nuvem



Os serviços em nuvem há muito entraram em nossa vida, agora já é impensável imaginar uma existência moderna no espaço digital sem eles, eles simplificam muito a vida e diminuem o limite de entrada de TI para pequenas empresas, livrando-as da necessidade de adquirir e configurar sua própria infraestrutura. Smartphones e computadores são conectados às nuvens e mais e mais dados e serviços são transferidos para eles.



Os IDEs também não escaparam da migração para a nuvem. Cerca de dez anos atrás, isso era um truque, Cloud IDEs estavam apenas começando a se desenvolver, mas então os maiores participantes do setor de TI chamaram a atenção para eles. 



A Amazon comprou e desenvolve o serviço Cloud9 :





O Google incorporou o Cloud Shell Editor em sua plataforma de nuvem :





A Microsoft inicialmente criou sua própria plataforma de desenvolvimento baseada em nuvem, mas depois a abandonou em favor da solução que o GitHub está preparando agora - Codespaces :





Todos eles estão unidos por uma ideia: "Use ferramentas de desenvolvimento em qualquer lugar e em qualquer plataforma!" O desempenho do IDE não depende mais de um computador pessoal, não há necessidade de comprar um desktop poderoso e caro ou um laptop ainda mais caro - a nuvem fará a computação. E o usuário receberá um ambiente de desenvolvimento que não depende do seu sistema, não necessita de configuração local, você pode trabalhar no IDE da nuvem até mesmo em um tablet, se conectar um mouse e teclado nele. E não será vi por meio de um console médio, mas um aplicativo GUI completo. 



Existem também ambientes de desenvolvimento de nuvem menos comuns, de sandboxes simples como CodePen a outros mais sérios como Codenvy , que a Red Hat assumiu sob sua proteção.



Mas todas essas soluções têm mais algumas coisas em comum: elas são executadas em seus próprios servidores; alguns exigem pagamento por parte da funcionalidade de trabalho; sua interface demora para se acostumar. Você pode resolver esses problemas instalando o conhecido Cloud IDE em um VPS alugado. O pagamento será feito apenas pelo aluguel de um servidor com a capacidade exigida, sem restrições de capacidades, e a interface será familiar e familiar para um grande número de desenvolvedores, pois nada mais é do que o Microsoft Visual Studio Code . Esta oportunidade apareceu recentemente graças ao projeto de servidor de código . Este artigo descreve a instalação passo a passo do código VC no servidor virtual RuVDS.



Preparando o servidor para instalação



Primeiro você precisa selecionar e executar um VPS de teste . Para a demonstração, escolhi o servidor virtual RUCLOUD em Moscou para reduzir o 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

      
      





A opção mais acessível com um sistema de disco SSD:





Isso é o suficiente para testar o funcionamento do Cloud IDE e trabalhar nos projetos mais simples que não requerem muito poder de computação.



Depois de conectar-se a um novo servidor com o usuário root , vamos realizar a configuração inicial. Primeiro, vamos criar um novo usuário <nome do usuário> e adicioná-lo ao grupo sudo :  Em seguida, desative a autorização do usuário root via SSH, para isso, no arquivo / etc / ssh / sshd_config , altere o parâmetro PermitRootLogin yes para no



adduser <user-name>

adduser <user-name> sudo











 nano /etc/ssh/sshd_config

      
      





Para simplificar a descrição, vamos deixar a entrada da senha, sem gerar chaves. Em seguida, corrigimos o arquivo host adicionando o nome da máquina virtual a ele para não receber o aviso " sudo: não foi possível resolver o host ruvds-xx12x: Nome ou serviço desconhecido" :



echo 127.0.0.1 $HOSTNAME >> /etc/hosts

      
      





Depois disso, desconectamos do servidor, conectamos como um novo usuário e concluímos 



a configuração definindo as regras para o firewall:



sudo ufw allow OpenSSH
sudo ufw enable

      
      





Vamos verificar as configurações com o comando sudo ufw status.



sudo ufw status

      
      





A saída do programa deve ser assim:



Status: active

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

      
      





Vamos atualizar o sistema e instalar o servidor da web nginx :



sudo apt update
sudo apt upgrade
sudo apt install nginx

      
      





Depois disso, vários novos perfis serão adicionados ao firewall, que podem ser visualizados com o comando sudo ufw app list:



sudo ufw app list

Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

      
      





Para verificar as configurações do servidor web, precisamos dos dois tipos de conexão, ative-os: 



sudo ufw allow 'Nginx Full'

      
      





Vamos ter certeza de que tudo está incluído corretamente:



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)

      
      





Verifique se o servidor da web está funcionando:



systemctl status nginx

      
      





O resultado deve ser algo assim: Verifique no navegador se o servidor está servindo a página do nosso site ( <your_server_ip> é o endereço do seu VPS):  O seguinte texto deve aparecer:



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>













A configuração inicial está concluída, vamos começar a instalar o ambiente de desenvolvimento.



Primeiro, vamos criar um diretório onde todos os dados IDE serão armazenados e ir para ele: 



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

      
      





Em seguida, baixe a versão mais recente do lançamento do projeto e descompacte-o. O número da versão pode ser encontrado em: https://github.com/cdr/code-server/releases . No momento, é a v3.8.0 e o arquivo para ela se chama: 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

      
      





O diretório resultante deve ser copiado para / usr / lib / code-server



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

      
      





Em seguida, faça um link sim para o arquivo executável IDE e crie um diretório onde os dados do usuário serão armazenados:



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

      
      





É hora de configurar o serviço de ambiente de desenvolvimento em nuvem. Crie um arquivo code-server.service no editor e adicione as seguintes linhas: Certifique-se de definir a senha <sua_senha> , ela será usada para fazer login no IDE, é melhor escolher uma que não corresponda à senha da conta.  Quase tudo pronto, você pode iniciar o serviço: 



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

      
      





Vamos verificar o status de seu trabalho. 



sudo systemctl status code-server

      
      





Se tudo foi feito corretamente, ele ficará  Ativo: ativo (em execução) : Para que o serviço reinicie em caso de falhas, execute o seguinte 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

      
      





Resta vincular um domínio ao nosso servidor, protegê-lo instalando um certificado do Let's Encrypt e configurar o Nginx para trabalhar com ele. Um domínio gratuito é fácil de obter em https://www.freenom.com e é o suficiente para colocar nosso ambiente em funcionamento. Você pode ler sobre como vinculá-lo na seção de ajuda do RuVDS .



Crie um arquivo de configuração no editor: 



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

      
      





E adicione as seguintes linhas: No lugar de <vc-code.domain> você precisa substituir seu domínio que você registrou para o IDE. Para que a configuração funcione, você precisa criar um link simbólico para ele no diretório / 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 precaução, vamos verificar a validade das configurações: 



sudo nginx -t

      
      





Se tudo estiver em ordem, veremos o seguinte texto no console:



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

      
      





Nos últimos anos, fomos ensinados que os sites devem ser protegidos e trabalhar com o protocolo HTTPS, um site que funciona sem SSL parece estranho e estranho, como se o administrador tivesse preguiça de escrever algumas linhas no console. Portanto, obteremos um certificado da conhecida empresa Let's Encrypt e o IDE da nuvem estará pronto para uso. 



Vamos instalar um dos bots de configuração mais comuns: 



sudo apt install certbot python3-certbot-nginx

      
      





E então, com sua ajuda, iremos registrar e instalar um certificado para nosso domínio <vc-code.domain> :



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



Durante o processo de configuração, teremos que responder a várias perguntas: insira seu endereço de e-mail mail, concorde com os termos de serviço, compartilhe (ou não) o endereço de e-mail com a Electronic Frontier e configure um redirecionamento forçado para HTTPS (recomendado). Em seguida, você pode instalar o Git:



sudo apt install git

      
      





Tudo está pronto!



Abra seu site no navegador e você receberá um convite do VC Code para inserir a senha que foi especificada no arquivo de configuração





O ambiente está funcionando, vemos a interface familiar do código VC:





Você pode começar a trabalhar. Como um teste, vamos tentar editar o arquivo com o prompt Nginx padrão.





Vamos substituir o nginx pelo código VC e atualizar a página que o servidor emite em resposta a uma chamada direta para o endereço IP:





Tudo está funcionando!



Este é um Código VC totalmente funcional e familiar, ele funcionará com um sistema de controle de versão:





Você pode conectar plug-ins a ele:





Um IDE não é diferente de um aplicativo de desktop, exceto que ele é executado em um servidor remoto e em um navegador.





Boa sorte na nuvem! :)










All Articles