ㅁ 탐색기
- ftp://192.168.10.5를 입력한다.
- 192.168.10.5는 선생님 컴에서 cmd로 ipconfig쳤을때 나오는 ipv4주소다.
- 필요한 파일은 앞으로 여기에 둘테니 가져가면 된다.
- 우리가 개발한 애플리케이션을 사용자들이 들어와서 쓸 수 있게 하려면 어딘가에 노출(공개)시켜야 한다.
이걸 배포과정이라고 한다.
ㅁ 서버는 윈도우, 유닉스, 리눅스 등 여러개가 있다.
- 우리는 많이 쓰이는 리눅스 서버에 배포한다.
- 개발은 윈도우에서 했다. 개발은 어디서하든 상관없다.
- 첫번째로 로컬 리눅스(물리적인 서버)에 애플리케이션을 직접 배포하는 방식으로 해보고,
두번째로 가상화 이용해서 리눅스를 설치하고 애플리케이션을 배포해본다.
- 리눅스 서버를 쓸 때 온전하게 리눅스 서버를 설치하면 불필요한 파일도 많아서 용량이 엄청 크다.
도커는 배포에 필요한 파일들만 모아서 컨테이너를 만들 수 있다.
컨테이너도 서버라고 보면 된다. 경량 서버다. 그 컨테이너를 관리하는게 도커다.
- 그리고 컨테이너에 배포를 한다.
- 첫번째로 온전한 리눅스에 배포하고, 두번째로 컨테이너를 이용해서 배포하고,
세번째로 aws를 이용해서 aws에 서버를 만들고 도커를 설치하고 컨테이너 만들어서 배포하는 방식도 해본다.
- 첫번째, 두번째, 세번째 방법 중에서 선택적으로 하면 된다. 무조건 aws를 무조건 이용해야 하는 것은 아니다.
- 클라우드 서비스도 aws 말고도 여러 서비스가 있는데 이런 클라우드 서비스를 쓰면 훨씬 편하게 배포할 수 있다.
- 그리고 최종적으로 Git, Github, Jenkins, Docker, Docker Hub, AWS를 활용하여 CI/CD 환경을 구축할 수 있다.
마지막으로 CI/CD환경까지 구축한다.
- 1. 로컬 리눅스(우분투) 서버에 배포하기
- 2. 도커 컨테이너에 배포하기
- 3. AWS EC2(우분투)에 배포하기
- 4. EC2에 도커 설치 후 컨테이너에 배포하기
- 5. Git, Github, Jenkins, Docker, Docker Hub, AWS를 이용하여 CI/CD 배포환경 구축하기
- 리눅스도 해봐야되고 도커도 알아야 하고 AWS도 알아야되고, 젠킨스 등의 도구도 사용방법을 알아야 한다.
- 리눅스는 OS(운영체제) 중의 하나다.
- 리눅스는 여러 배포판이 있다. 우분투는 리눅스 배포판 중 하나다.
많이 쓰이는 우분투를 이용해서 배포해본다.
- 리눅스 설치 방법은 여러가지가 있다.
첫번째로 OS가 설치되지 않은 시스템에 까는 방법이 있고,
두번재로 WSL(Windows Subsystem for Linux)이라고 윈도우에 리눅스 커널이 가상화되어서 내장되어 있다.
WSL 기능을 이용해서 우분투를 설치하는 방법이 있고,
세번째로 VM 가상화 프로그램을 통해서 VM(Virtual Machine)을 만들고 리눅스 설치하는 방식이 있다.
- 우리는 두번째, 세번째 방법을 해본다.
- 리눅스는 서버로 사용할 경우 GUI환경보다 CLI환경을 더 많이 쓴다.
- cmd를 관리자 권한으로 실행한다.
- wsl --install을 입력한다.
- 이렇게 다 설치되면 컴퓨터를 리부팅한다.
- 컴퓨터를 재부팅하면 위와 같은 cmd 창이 자동으로 뜬다.
- username과 password, 비밀번호 확인을 입력한다.
비밀번호는 입력해도 화면에서는 아무것도 안보인다. 그냥 입력하고 엔터누르면 된다.
- 나 lsw, lsw, 한나님 hn, hn
===================================================================================
ㅁ MobaXterm(https://mobaxterm.mobatek.net/) 설치파일 다운로드
ㅁ 오라클 VirtualBox(https://www.virtualbox.org/) 설치파일 다운로드
ㅁ MobaXterm 설치파일 실행
- 다운받은 설치파일을 압축풀고 빨간 박스의 파일을 실행한다.
- 다 next 눌러서 설치한다.
ㅁ VirtualBox 설치파일 실행
- 그런데 에러가 뜬다. 미리 설치되어 있어야 하는게 있다.
- 구글에 visual c++ 2019 redistributable을 검색한다.
- X64 링크를 눌러서 다운받는다.
- 다운되면 실행해서 설치한다. 설치가 완료되면 재부팅한다.
- VirtualBox 설치파일을 실행해서 마저 설치한다.
ㅁ Ubuntu 옛날 버전으로 다운로드하기
- 검색에서 Ubuntu를 검색하고 실행하면 위와같은 CMD 창이 뜬다.
- 그런데 지금 Ubuntu는 wsl을 설치하면서 같이 설치된 최신버전이다.
우리는 좀 더 옛날 버전으로 설치할 것이다.
- 마이크로소프트 스토어에 들어가서 ubuntu를 검색한다.
- Ubuntu 20.04.6 LTS를 다운로드한다.
- 현재 ubuntu가 2개 설치되어 있다.
WSL을 설치하면서 같이 설치된 최신버전 ubuntu는 헷갈리니까 제거한다.
- 그리고 Ubuntu 20.04.6 LTS를 실행하면 아까처럼 사용자를 또 만들라고 한다.
아까처럼 username, 비번, 비번확인을 입력해서 사용자를 만들어준다.
- 리눅스 사용할 때는 이 ubuntu 창을 계속 켜놔야 한다.
=============================================================================
[2교시]
ㅁ MobaXterm 실행
- 서버는 모니터가 없는 경우가 많다. 그래서 이런 터미널을 사용한다.
- 서버에 접속하려할 때 물리적으로 선을 연결하고 접속할 수도 있지만 원격으로 접속할 수도 있다.
telnet, ssh 등을 이용해서 윈도우에서 터미널 프로그램(MobaXterm)으로 서버에 원격으로 접속할 수 있다.
- 기존의 WSL -Ubuntu는 Delete session으로 삭제한다.
ㅁ ubuntu
○ ip adrress
- ubuntu에서 ip address를 입력하면 Ubuntu의 네트워크 장치와 IP 주소 정보를 확인할 수 있다.
- lo, eth0는 장치 이름이다.
lo는 루프백(loopback) 인터페이스로 자기 자신을 나타내는 네트워크 장치다. (보통 127.0.0.1로 설정).
eth0은 일반적으로 이더넷 네트워크 장치의 이름으로 실제 네트워크에 연결된 장치다.
(Ubuntu 버전에 따라 네트워크 장치 이름이 enp0s3 같은 형식일 수도 있다.)
- 172.24.92.208
우분투의 주소를 알아낸다. 이게 서버의 주소다.
출력된 IP 주소 중 실제 네트워크에 연결된 인터페이스의 주소가 서버의 IP 주소로 사용된다.
- SSH 서비스를 이용하려면 서버에서 SSH 프로그램이 동작 중이어야 한다.
현재는 서버에 설치되어 있지 않은 상태이다.
- 모든 네트워크 프로그램은 서버 프로그램이 요청을 받아 처리하고,
클라이언트 프로그램이 요청을 보내는 방식으로 상호작용하여 동작한다.
○ sudo apt update
- 패키지 목록을 최신 상태로 업데이트하는 명령어를 실행한다.
○ sudo apt install openssh-server
- SSH 서버 프로그램을 설치하는 명령어다.
- openssh-server가 ssh 서버 프로그램이다.
- SSH 서비스는 기본적으로 22번 포트를 사용한다.
이를 위해 22번 포트가 리스닝 상태(대기 상태)여야 한다.
○ sudo apt install net-tools
- 네트워크 도구 패키지를 설치하는 명령어다.
- 리스닝 상태를 확인하기 위해 net-tools 패키지가 필요하다.
- net-tools 패키지를 설치하면 netstat 명령어를 사용할 수 있어 리스닝 상태를 확인할 수 있습니다.
○ netstat -ntlp
- netstat -ntlp 명령어로 현재 리스닝 상태(대기 상태)인 포트를 확인한다.
- 22번 포트가 리스닝 상태로 표시되어야 SSH 서비스가 동작하고 있는 것이다.
현재는 22번 포트가 리스닝 상태로 표시되고 있지 않다.
○ sudo service ssh start
- SSH 서비스를 시작시키는 명령어다.
- 이 명령어를 실행해도 화면에 별다른 반응이 없는 것이 정상이다.
- 이후 netstat -ntlp 명령어를 다시 실행하면 22번 포트가 LISTEN 상태로 표시된다.
SSH 서비스가 정상적으로 동작 중임을 확인할 수 있다.
=============================================================================
ㅁ MobaXterm
- 상단의 Sessions 메뉴 - New session을 클릭한다.
- SSH를 선택한다.
- Remote host에 ubuntu에서 ip a(ip address)로 표시되었던 우분투 ip 주소를 복붙한다.
- Specify username을 체크하고 아이디를 쓴다.
- accept를 누른다.
ㅁ ubuntu
○ sudo nano /etc/ssh/sshd_config
- SSH 서버의 설정 파일을 편집할 수 있는 명령어다.
- 현재 설정으로는 키보드로 입력한 패스워드를 이용해 SSH 접속이 불가능하다.
- PasswordAuthentication no로 되어있는걸 yes로 바꾼다.
- 저장을 위해 ctrl + x, y, 엔터를 누른다. 그러면 이 파일을 빠져나올 수 있다.
○ sudo service ssh restart
- 설정을 저장하고 나서 sudo service ssh restart 명령어를 실행한다.
- SSH 서비스를 재시작하는 명령어다.
ㅁ MobaXterm
- 아까 만든 세션을 클릭해서 접속한다.
비번 lsw를 입력한다.
- 비밀번호를 저장할거냐는 창이 뜨면 no를 누른다.
실수로 yes를 눌렀어도 그냥 닫으면 된다.
- 그럼 이런 화면이 뜬다.
- 지금은 SSH 서비스를 password 가지고 인증을 했다.
나중에 aws로 하면 password로 인증하지 않고 키 가지고 인증을 한다.
- mobaxterm에서 키를 만들어본다.
- 엔터를 치면 키가 저장될 위치가 나온다.
- 또 엔터친다. 그러면 이 키를 보호할 passphrase를 입력하락 뜬다.
키를 보고하기 위한 암호다. 이것도 엔터친다.
- 또 엔터친다.
○ ssh-keygen -t rsa -b 1024
- RSA 알고리즘을 사용해 1024비트 길이의 SSH 키 쌍(공개키와 개인키)을 생성하는 명령어다.
○ cd .ssh
- SSH 관련 키 파일이 저장된 디렉토리로 이동한다.
○ ls
- 명령어로 디렉토리 내 파일 목록을 확인한다.
- 두 개의 파일이 있는데 id_rsa는 개인키이고, id_rsa.pub는 공개키이다.
○ cp id_rsa.pub authorized_keys
- id_rsa.pub 파일을 authorized_keys라는 이름으로 복사하는 명령어이다.
- 이 명령어를 실행하면 .ssh 디렉토리에 authorized_keys라는 새 파일이 생성된다.
- 위의 사진은 atuhorizaed_keys로 잘못 입력한 상태다.
○ ls
- ls 명령어로 다시 확인하면, 새로 생성된 authorized_keys 파일이 목록에 나타난다.
※ 키 이름 변경
- key 이름에 오타가 있어서 비번 대신 키로 인증을 했는데도 비밀번호를 계속 물어본다. 키 이름을 바꿨다.
- 왼쪽 탭에서 태양같은 아이콘을 눌러서 브라우저를 연다.
- 위쪽의 Refresh folder 아이콘을 눌러서 새로고침 한다.
- 그러면 브라우저에 아까까지 없던 .ssh 폴더가 생긴다.
- .ssh를 들어가보면 위와 같이 3개의 파일이 보인다.
- MobaXterm의 id_rsa를 드래그해서 d드라이브에 뒀다.
- d드라이브에 id_rsa가 복사되었다. d드라이브가 안되면 c드라이브에 해도 된다.
- 원래는 더 복잡한 방법으로 개인키를 가져와야 하는데 MobaXterm을 사용해서 편하게 d드라이브로 가져왔다.
- 기존의 탭은 닫는다.
- User sessions에서 방금 만든 세션을 우클릭하고 Edit session을 클릭한다.
- Advanced SSH settings에서 User private key를 체크한다.
그리고 방금 d드라이브로 가져온 id_rsa 파일을 넣고 OK를 누른다.
- 이러고 접속하면 패스워드를 물어보지 않고 접속된다.
패스워드 대신 키로 인증하고 접속했다.
- 그런데 만약 내가 접속해야 하는 서버가 많다면,
공개키만 서버에 넣어두면 이 키 하나가지고 다 접속할 수 있다.
=============================================================================
[3교시]
- 지금까지 WSL에 우분투를 설치하는 방식을 했다.
- WSL을 설치하면서 우분투 최신버전이 같이 설치되었었다. 쓸거면 써도 된다. 지금은 삭제했다.
- 이것 말고도 나중에 더 필요하면 설치해주면 된다.
- 지금 MobaXterm이라는 터미널 프로그램을 이용해서 서버에 접속해서 쓰고 있다.
- 모니터가 없는 시스템에 접속할 수 있게 해주는 프로그램이다.
- 서버를 도메인 등록해서 이름 주소를 쓴다면 이름 주소를 써도 된다.
- 위의 서버 ip주소와 사용자 id만 작성해도 접속은 할 수 있는데, 키보드로 패스워드 입력하는 걸 막아놨으면 못한다.
- 참고로 리눅스는 대소문자를 다 구분한다. 잘 써야한다.
ㅁ MobaXterm
○ sudo nano /etc/ssh/sshd_config
- SSH 서버의 설정 파일(sshd_config)을 수정하기 위한 명령어다.
- 비밀번호 lsw를 입력한다.
- PasswordAuthentication에 yes를 no로 바꾼다.
- ctrl + x, y, 엔터를 입력해서 저장한다.
- 처음부터 키로 로그인할거면 이걸 건드리지 않아도 됐는데 패스워드로 로그인을 한번 해보기 위해 건드렸던 것이다.
- 이렇게 no로 바꾸고 저장하면 이제 비번으로는 로그인이 안된다.
- aws는 기본적으로 패스워드 로그인을 막아놨다.
물론 지금처럼 이렇게 설정에 들어가서 바꿀 수는 있다.
○ sudo service ssh restart
- 설정 파일을 바꿨으니 SSH 서비스를 재시작한다.
- 현재 탭은 닫고, session에 우클릭 - Edit session을 누른다.
- Use private key를 체크해제하고 OK한다.
이러면 이제 키를 가지고는 접속할 수 없고, 비밀번호로 접속해야 한다.
- 세션에 접속해보면 이렇게 로그인이 안된다.
- 다시 이 탭을 끄고 session에 우클릭 - Edit session, Use private key를 체크하고 d드라이브의 키를 선택하고 OK한다.
그리고 세션에 접속해보면 다시 key로 접속이 된다.
'배포 > Linux(Ubuntu)' 카테고리의 다른 글
6. 공개키/개인키 생성 (0) | 2024.12.05 |
---|---|
5. SSH 인증 방식 (0) | 2024.12.05 |
4. MobaXterm과 cmd로 우분투에 접속해보기 (1) | 2024.12.05 |
3. 가상화를 이용한 리눅스 설치 및 애플리케이션 배포 (2) | 2024.12.04 |
2. 로컬 리눅스에서 애플리케이션 빌드 및 배포 (1) | 2024.12.04 |