웹사이트 검색

Rocky Linux 8에 Visual Studio Code Cloud IDE를 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. 1단계 - 방화벽 구성\n
  3. 2단계 - 코드 서버 설치
  4. 3단계 - 코드 서버 구성
  5. 4단계 - SSL 설치
  6. 5단계 - Nginx 설치 및 구성
  7. 6단계 - 코드 서버 사용
  8. 결론

Visual Studio Code는 가장 인기 있는 코딩 IDE 중 하나가 되었습니다. Git 및 Docker 지원, 코드 디버거, 코드 자동 완성, 원격 파일 작업 기능을 통합하고 다양한 플러그인을 지원합니다.

모든 것이 클라우드로 이동함에 따라 어디에서나 선택한 IDE에 액세스할 수 있어 최신 개발에 적합합니다. Cloud IDE는 개발자 간의 실시간 협업을 가능하게 하여 생산성을 향상시킵니다. coder-server는 원격 서버에서 Visual Studio Code를 실행하고 모든 브라우저를 통해 액세스할 수 있게 해주는 애플리케이션입니다.

이 자습서에서는 Rocky Linux 8 서버에서 코드 서버 애플리케이션을 사용하여 Visual Studio Code IDE를 설치하는 방법을 알려줍니다. SSL 지원과 함께 공개 도메인을 통해 공개할 수도 있습니다.

전제 조건

  1. A server running Rocky Linux with at least 2 GB of RAM and 2 CPU cores.

  2. A non-root user with sudo privileges.

  3. A domain registered and pointed to the server.

  4. Nginx installed on your server.

  5. Ensure everything is updated.

    $ sudo dnf update
    

1단계 - 방화벽 구성

첫 번째 단계는 방화벽을 구성하는 것입니다. Rocky Linux는 Firewalld 방화벽과 함께 제공됩니다.

방화벽이 실행 중인지 확인하십시오.

$ sudo firewall-cmd --state

다음 출력은 방화벽이 실행 중임을 증명합니다.

running

현재 허용된 서비스/포트를 확인하십시오.

$ sudo firewall-cmd --permanent --list-services

다음 출력이 표시되어야 합니다.

dhcpv6-client mdns ssh

코드 서버용 포트 8080을 엽니다.

$ sudo firewall-cmd --permanent --add-port=8080/tcp

HTTP 및 HTTPS 포트를 허용합니다.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

방화벽의 상태를 다시 확인하십시오.

$ sudo firewall-cmd --permanent --list-all

비슷한 출력이 표시되어야 합니다.

public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: cockpit dhcpv6-client http https ssh
  ports: 8080/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

변경 사항을 적용하려면 방화벽을 다시 로드하십시오.

$ sudo systemctl reload firewalld

2단계 - 코드 서버 설치

code-server는 Linux 버전을 감지하고 서버에 적합한 바이너리를 설치할 수 있는 설치 스크립트와 함께 제공됩니다. 설치 스크립트를 테스트하여 서버에서 작동하는지 여부를 확인할 수 있습니다.

다음 명령을 실행하여 설치 테스트를 수행합니다.

$ curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run
Rocky Linux 8.4 (Green Obsidian)
Installing v3.12.0 of the amd64 rpm package from GitHub.

+ mkdir -p ~/.cache/code-server
+ curl -#fL -o ~/.cache/code-server/code-server-3.12.0-amd64.rpm.incomplete -C - https://github.com/cdr/code-server/releases/download/v3.12.0/code-server-3.12.0-amd64.rpm
+ mv ~/.cache/code-server/code-server-3.12.0-amd64.rpm.incomplete ~/.cache/code-server/code-server-3.12.0-amd64.rpm
+ sudo rpm -i ~/.cache/code-server/code-server-3.12.0-amd64.rpm

rpm package has been installed.

To have systemd start code-server now and restart on boot:
  sudo systemctl enable --now $USER
Or, if you don't want/need a background service you can run:
  code-server

테스트 실행에 성공한 후 설정을 실행합니다.

$ curl -fsSL https://code-server.dev/install.sh | sh

설치 스크립트는 sudo 암호를 요구할 수 있습니다.

코드 서버 서비스를 활성화합니다.

$ sudo systemctl enable $USER

코드 서버 인스턴스를 업데이트하려면 설치 프로세스를 반복하십시오. code-server는 파일과 설정을 보존합니다.

3단계 - 코드 서버 구성

code-server는 구성 파일을 ~/.config/code-server/config.yaml에 저장합니다. 편집을 위해 엽니다.

$ sudo nano ~/.config/code-server/config.yaml

다음은 설치 중에 설정된 기본 설정입니다.

bind-addr: 127.0.0.1:8080
auth: password
password: a4768b3439e5e93b5d62489b
cert: false

기본 구성 파일은 다음 동작을 활성화합니다.

  • 루프백 IP 포트 8080에서 수신\n
  • 임의로 생성된 암호로 암호 인증을 활성화합니다.\n
  • TLS를 사용하지 않음\n

파일에서 해당 값을 변경하여 암호를 변경할 수 있습니다.

암호의 해시 버전을 저장하려면 먼저 npm을 설치해야 합니다. 설치가 완료되면 다음 명령을 실행하여 해시된 암호를 설정합니다.

$ echo -n "thisismypassword" | npx argon2-cli -e
$argon2i$v=19$m=4096,t=3,p=1$wst5qhbgk2lu1ih4dmuxvg$ls1alrvdiwtvzhwnzcm1dugg+5dto3dt1d5v9xtlws4

터미널에서 해시 값을 얻습니다. 복사하여 구성 파일에 붙여넣습니다.

auth: password
hashed-password: "$argon2i$v=19$m=4096,t=3,p=1$wST5QhBgk2lu1ih4DMuxvg$LS1alrVdIWtvZHwnzCM1DUGg+5DTO3Dt1d5v9XtLws4"

해시된 암호를 따옴표로 묶어야 합니다. Telemetry를 비활성화하려면 파일에 다음 행을 추가하십시오.

disable-telemetry: false

파일에서 정의할 수 있는 다른 옵션이 있습니다. 추가할 수 있는 다른 모든 옵션을 확인하려면 다음 명령을 사용하여 모든 플래그를 나열하십시오.

$ code-server --help

완료되면 Ctrl + X를 누르고 프롬프트가 표시되면 Y를 입력하여 파일을 저장합니다.

4단계 - SSL 설치

Lets Encrypt를 사용하여 SSL 인증서를 설치하려면 Certbot 도구를 다운로드해야 합니다. 하지만 먼저 EPEL 저장소를 설치해야 합니다.

다음 명령을 실행하여 Certbot을 설치합니다.

$ sudo dnf install epel-release
$ sudo dnf install certbot

SSL 인증서를 생성합니다.

$ sudo certbot certonly --standalone --agree-tos --preferred-challenges http -d code-server.example.com -m 

위의 명령은 서버의 /etc/letsencrypt/live/code-server.example.com 디렉토리에 인증서를 다운로드합니다. [email 를 실제 이메일로 바꿔야 합니다.

Diffie-Hellman 그룹 인증서를 생성합니다.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Lets Encrypt 자동 갱신을 위한 챌린지 웹루트 디렉터리를 만듭니다.

$ sudo mkdir -p /var/lib/letsencrypt

SSL을 갱신하기 위해 Cron 작업을 생성합니다. 인증서를 확인하고 필요한 경우 갱신하기 위해 매일 실행됩니다. 이를 위해 먼저 /etc/cron.daily/certbot-renew 파일을 생성하고 편집을 위해 엽니다.

$ sudo nano /etc/cron.daily/certbot-renew

다음 코드를 붙여넣습니다.

#!/bin/sh
certbot renew --cert-name example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

실행 가능하도록 태스크 파일에 대한 권한을 변경하십시오.

$ sudo chmod +x /etc/cron.daily/certbot-renew

5단계 - Nginx 설치 및 구성

공식 Nginx 리포지토리를 만들기 위한 /etc/yum.repos.d/nginx.repo 파일을 만들고 엽니다.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

Nginx 서버를 설치합니다.

$ sudo dnf install nginx

Nginx 서비스를 활성화합니다.

$ sudo systemctl enable nginx

/etc/nginx/conf.d 디렉터리에 코드 서버에 대한 구성 파일을 만듭니다.

$ sudo nano /etc/nginx/conf.d/code-server.conf

다음 코드를 붙여넣습니다.

server {
    	listen 80; listen [::]:80;
	    server_name code-server.example.com;
    	return 301 https://$host$request_uri;
}

server {
        server_name code-server.example.com;

        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        access_log /var/log/nginx/code-server.access.log;
        error_log /var/log/nginx/code-server.error.log;

        ssl_certificate /etc/letsencrypt/live/code-server.example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/code-server.example.com/privkey.pem;
        ssl_trusted_certificate /etc/letsencrypt/live/code-server.example.com/chain.pem;
        ssl_session_timeout 1d;
        ssl_session_cache shared:MozSSL:10m;
        ssl_session_tickets off;

        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

        ssl_stapling on;
        ssl_stapling_verify on;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
 
	   location / {
	       proxy_pass http://localhost:8080/;
	       proxy_set_header Host $host;
	       proxy_set_header Upgrade $http_upgrade;
	       proxy_set_header Connection upgrade;
	       proxy_set_header Accept-Encoding gzip;
	   }
}

Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

구성 파일의 유효성을 검사합니다.

$ sudo nginx -t

다음 오류가 발생하면 /etc/nginx/nginx.conf 파일을 편집하여 server_names_hash_bucket_size.

nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size

편집을 위해 /etc/nginx/nginx.conf 파일을 엽니다.

$ sudo nano /etc/nginx/nginx.conf

include /etc/nginx/conf.d/*.conf; 줄 앞에 다음 줄을 추가합니다.

server_names_hash_bucket_size  64;

Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다. Nginx를 다시 확인합니다.

Nginx 서버를 시작합니다.

$ sudo systemctl start nginx

6단계 - 코드 서버 사용

브라우저에서 도메인 https://code-server.example.com을 실행하고 암호를 입력하여 코드 서버 설치를 인증합니다. 구성 파일에서 비밀번호를 입력하십시오.

code-server는 처음 실행할 때 VS Code 설정을 요청합니다.

색 구성표를 선택하고 나머지 섹션을 살펴보고 완료되면 완료로 표시를 클릭합니다.

결론

이제 Rocky Linux 서버에 Visual Studio Code 인스턴스가 설치되었습니다. 공식 VS 코드와 비교할 때 이에 대한 특정 주의 사항이 있습니다. 사용 가능한 확장은 공식 확장이 아니라 코드 서버 비공식 저장소에서 제공됩니다. 공식 확장 프로그램을 설치하려면 공식 문서를 참조하세요. 약간의 노력이 필요합니다. 질문이 있으시면 아래 의견에 게시하십시오.