Cloud-Services sind lange und eng in unser Leben eingetreten. Jetzt ist es bereits undenkbar, sich eine moderne Existenz im digitalen Raum ohne sie vorzustellen. Sie vereinfachen das Leben erheblich und senken die Schwelle für den IT-Einstieg für kleine Unternehmen, sodass sie keine eigene Infrastruktur kaufen und einrichten müssen. Smartphones und Computer sind mit den Clouds verbunden, und immer mehr Daten und Dienste werden an sie übertragen.
IDEs sind der Migration in die Cloud ebenfalls nicht entkommen. Vor ungefähr zehn Jahren war es eine Spielerei, Cloud-IDEs begannen sich gerade zu entwickeln, aber dann machten die größten Akteure der IT-Branche auf sie aufmerksam.
Amazon hat den Cloud9- Service gekauft und entwickelt :
Google hat seine Cloud-Plattform Cloud Shell Editor integriert :
Microsoft hat zunächst eine eigene Cloud-basierte Entwicklungsplattform erstellt, diese jedoch zugunsten der von GitHub derzeit vorbereiteten Lösung aufgegeben - Codespaces :
Sie alle teilen eine Idee: "Verwenden Sie Entwicklungstools überall und auf jeder Plattform!" Die IDE-Leistung hängt nicht mehr von einem PC ab, es ist nicht erforderlich, einen leistungsstarken und teuren Desktop oder einen noch teureren Laptop zu kaufen - die Cloud übernimmt die Datenverarbeitung. Und der Benutzer erhält eine Entwicklungsumgebung, die nicht von seinem System abhängt, keine lokale Konfiguration erfordert. Sie können in der Cloud-IDE sogar auf einem Tablet arbeiten, wenn Sie eine Maus und eine Tastatur daran anschließen. Und es wird nicht über eine mittlere Konsole vi sein, sondern über eine vollwertige GUI-Anwendung.
Es gibt auch weniger verbreitete Cloud-Entwicklungsumgebungen, von einfachen Sandboxen wie CodePen bis zu ernsthafteren wie Codenvy , die Red Hat unter seine Fittiche genommen hat.
Alle diese Lösungen haben jedoch noch einige andere Gemeinsamkeiten: Sie werden auf ihren eigenen Servern ausgeführt. Einige erfordern die Zahlung für einen Teil der Arbeitsfunktionalität. Ihre Benutzeroberfläche ist gewöhnungsbedürftig. Sie können diese Probleme lösen, indem Sie die bekannte Cloud-IDE auf einem gemieteten VPS installieren. Die Zahlung erfolgt nur für die Anmietung eines Servers mit der erforderlichen Kapazität, ohne Einschränkungen der Funktionen, und die Benutzeroberfläche ist einer großen Anzahl von Entwicklern vertraut, da es sich nur um Microsoft Visual Studio-Code handelt . Diese Gelegenheit hat sich kürzlich dank des Code-Server- Projekts ergeben . Dieser Artikel beschreibt die schrittweise Installation von VC-Code auf dem virtuellen RuVDS-Server.
Server für die Installation vorbereiten
Zuerst müssen Sie einen Test-VPS auswählen und ausführen . Für die Demonstration habe ich den virtuellen RUCLOUD-Server in Moskau ausgewählt, um den Ping zu reduzieren:
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
Die günstigste Option mit einem SSD-Festplattensystem:
Dies reicht aus, um die Funktion der Cloud-IDE zu testen und an den einfachsten Projekten zu arbeiten, die nicht viel Rechenleistung erfordern.
Nachdem Sie mit dem Root-Benutzer eine Verbindung zu einem neuen Server hergestellt haben , führen Sie die Erstkonfiguration durch. Zuerst erstellen wir einen neuen Benutzer <Benutzername> und fügen ihn der sudo- Gruppe hinzu : Deaktivieren Sie dann die Root- Benutzerautorisierung über SSH. Ändern Sie dazu in der Datei / etc / ssh / sshd_config den Parameter PermitRootLogin yes in no
adduser <user-name>
adduser <user-name> sudo
nano /etc/ssh/sshd_config
Um die Beschreibung zu vereinfachen, belassen wir die Passworteingabe, ohne Schlüssel zu generieren. Anschließend korrigieren wir die Hostdatei, indem wir den Namen der virtuellen Maschine hinzufügen, um nicht die Warnung " sudo: Host kann nicht aufgelöst werden ruvds-xx12x: Name oder Dienst nicht bekannt" zu erhalten :
echo 127.0.0.1 $HOSTNAME >> /etc/hosts
Danach trennen wir uns vom Server, stellen eine Verbindung als neuer Benutzer her und schließen
die Konfiguration ab, indem wir die Regeln für die Firewall festlegen:
sudo ufw allow OpenSSH sudo ufw enable
Lassen Sie uns die Einstellungen mit dem Befehl sudo ufw status überprüfen.
sudo ufw status
Die Programmausgabe sollte folgendermaßen aussehen:
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
Lassen Sie uns das System aktualisieren und den nginx- Webserver installieren :
sudo apt update sudo apt upgrade sudo apt install nginx
Danach werden der Firewall mehrere neue Profile hinzugefügt, die mit dem Befehl sudo ufw app list angezeigt werden können :
sudo ufw app list Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH
Um die Einstellungen des Webservers zu überprüfen, benötigen wir beide Verbindungstypen, aktivieren Sie sie:
sudo ufw allow 'Nginx Full'
Stellen wir sicher, dass alles korrekt enthalten ist:
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)
Überprüfen Sie, ob der Webserver ausgeführt wird:
systemctl status nginx
Die Ausgabe sollte ungefähr so aussehen: Überprüfen Sie im Browser, ob der Server die Seite unserer Site bedient ( <Ihr_Server_IP> ist die Adresse Ihres VPS): Der folgende Text sollte erscheinen:
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>
Die Ersteinrichtung ist abgeschlossen. Beginnen wir mit der Installation der Entwicklungsumgebung.
Erstellen wir zunächst ein Verzeichnis, in dem alle IDE-Daten gespeichert werden, und gehen Sie zu diesem Verzeichnis:
mkdir ~/code-server cd ~/code-server
Laden Sie dann die neueste Version der Projektversion herunter und entpacken Sie sie. Die Versionsnummer finden Sie unter: https://github.com/cdr/code-server/releases . Im Moment ist es v3.8.0 und die Datei dafür heißt: 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
Das resultierende Verzeichnis muss nach / usr / lib / code-server kopiert werden
sudo cp -r code-server-3.8.0-linux-amd64 /usr/lib/code-server
Stellen Sie dann einen Sim-Link zur ausführbaren IDE-Datei her und erstellen Sie ein Verzeichnis, in dem Benutzerdaten gespeichert werden:
sudo ln -s /usr/lib/code-server/bin/code-server /usr/bin/code-server sudo mkdir /var/lib/code-server
Es ist Zeit, den Cloud-Entwicklungsumgebungsdienst einzurichten. Erstellen Sie im Editor eine Datei code-server.service und fügen Sie dort die folgenden Zeilen hinzu: Stellen Sie sicher, dass Sie das Kennwort <Ihr_Kennwort> festlegen . Es wird verwendet, um sich bei der IDE anzumelden. Es ist besser, eines auszuwählen, das nicht mit dem Kennwort für das Konto übereinstimmt. Fast alles ist fertig, Sie können den Dienst starten:
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
Lassen Sie uns den Status ihrer Arbeit überprüfen.
sudo systemctl status code-server
Wenn alles korrekt ausgeführt wurde, ist es aktiv: aktiv (wird ausgeführt) : Führen Sie den folgenden Befehl aus, damit sich der Dienst bei Fehlern neu startet :
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
Es bleibt eine Domäne an unseren Server zu binden, sie zu schützen, indem Sie ein Zertifikat von Let's Encrypt installieren und Nginx für die Arbeit damit konfigurieren. Eine kostenlose Domain ist unter https://www.freenom.com leicht zu bekommen und reicht aus, um unsere Umgebung zum Laufen zu bringen. Informationen zum Binden finden Sie in der RuVDS-Hilfe .
Erstellen Sie eine Konfigurationsdatei im Editor:
sudo nano /etc/nginx/sites-available/code-server.conf
Fügen Sie dort die folgenden Zeilen hinzu: Anstelle von <vc-code.domain> müssen Sie Ihre Domain ersetzen, die Sie für die IDE registriert haben. Damit die Konfiguration funktioniert, müssen Sie im Verzeichnis / etc / nginx / sites-enabled einen symbolischen Link dazu erstellen .
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
Lassen Sie uns für alle Fälle die Gültigkeit der Einstellungen überprüfen:
sudo nginx -t
Wenn alles in Ordnung ist, sehen wir den folgenden Text in der Konsole:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
In den letzten Jahren wurde uns beigebracht, dass Sites geschützt werden müssen und über das HTTPS-Protokoll funktionieren müssen. Eine Site, die ohne SSL funktioniert, erscheint seltsam und sieht umständlich aus, als wäre der Administrator zu faul, um ein paar Zeilen in die Konsole zu schreiben. Aus diesem Grund erhalten wir ein Zertifikat des bekannten Unternehmens Let's Encrypt und die Cloud-IDE ist einsatzbereit.
Lassen Sie uns einen der häufigsten Setup-Bots installieren:
sudo apt install certbot python3-certbot-nginx
Und dann werden wir mit seiner Hilfe ein Zertifikat für unsere Domain <vc-code.domain> registrieren und installieren :
sudo certbot --nginx -d <vc-code.domain>
Während des Konfigurationsprozesses müssen wir mehrere Fragen beantworten : Geben Sie Ihre E-Mail-Adresse ein E-Mail senden, den Nutzungsbedingungen zustimmen, die E-Mail-Adresse mit Electronic Frontier teilen (oder nicht) und eine erzwungene Weiterleitung an HTTPS einrichten (empfohlen). Im Anschluss können Sie Git installieren:
sudo apt install git
Alles ist fertig!
Öffnen Sie Ihre Website in einem Browser und Sie erhalten eine Einladung von VC Code, das in der Konfigurationsdatei angegebene Kennwort einzugeben
Die Umgebung läuft, wir sehen die bekannte VC-Code-Oberfläche:
Sie können sich an die Arbeit machen. Versuchen wir als Test, die Datei mit der Standard-Nginx-Eingabeaufforderung zu bearbeiten.
Ersetzen wir nginx durch VC-Code und aktualisieren die Seite, die der Server als Antwort auf einen direkten Aufruf der IP-Adresse ausgibt:
Alles arbeitet!
Dies ist ein voll funktionsfähiger und vertrauter VC-Code, der mit einem Versionskontrollsystem funktioniert:
Sie können Plugins daran anschließen:
Eine IDE unterscheidet sich nicht von einer Desktop-Anwendung, außer dass sie auf einem Remote-Server und in einem Browser ausgeführt wird.
Viel Glück in der Wolke! :) :)