Docker 기반 CI·CD 파이프라인 구축

CI/CD - Linux 핵심 명령어 / Linux 코드 작성 환경 준비 (vs code) / 간단한 Flask 어플을 만들어보는데, Flask가 뭐지? / EC2 인스턴스에 연결하기

wy-family 2024. 12. 5. 11:23

Linux에서 자주 사용되는 핵심 명령어는 파일 관리, 시스템 상태 확인, 프로세스 제어 등 다양한 작업을 수행하는 데 유용합니다. 아래는 Linux 초보자부터 중급자가 알아두면 좋은 주요 명령어를 간단히 정리한 목록입니다.


1. 파일 및 디렉토리 관리

(1) 디렉토리 탐색 및 관리

  • ls
    디렉토리 내용 확인.
  • cd
    디렉토리 이동.
  • pwd
    현재 작업 중인 디렉토리 경로 출력.

(2) 파일 및 디렉토리 생성/삭제

  • touch
    빈 파일 생성.
  • mkdir
    새 디렉토리 생성.
  • rm
    파일 또는 디렉토리 삭제.
  • cp
    파일/디렉토리 복사.
  • mv
    파일 이동 또는 이름 변경.

2. 파일 내용 확인

  • cat
    파일 내용 출력.
  • less
    긴 파일을 페이지 단위로 읽기.
  • head / tail
    파일의 시작 또는 끝 부분 출력.
  • grep
    파일 내용에서 특정 문자열 검색.

3. 권한 및 소유권 관리

  • chmod
    파일/디렉토리 권한 변경.
  • chown
    파일/디렉토리 소유자 변경.
  • ls -l
    파일/디렉토리의 권한과 소유자 확인.

4. 프로세스 및 시스템 관리

  • ps
    현재 실행 중인 프로세스 확인.
  • top / htop
    실시간으로 시스템 자원 및 프로세스 모니터링.
  • kill
    프로세스 종료.
  • df
    디스크 사용량 확인.
  • free
    메모리 사용량 확인.

실제로 시작할 때 추천 명령어

  1. ls, cd, pwd로 파일/디렉토리 탐색.
  2. touch, mkdir로 파일/디렉토리 생성.
  3. cat, less, grep으로 파일 내용 확인.
  4. sudo apt update / sudo apt install로 패키지 설치.

이 명령어들만 익혀도 Linux 환경에서 작업을 시작하는 데 충분합니다! 😊

각각의 명령어들은 어쨌든 영어 단어의 줄임말, 축약형일텐데, 그 원래 단어를 대응시켜서 알려줄래?

1. 파일 및 디렉토리 관리

ls list 디렉토리의 내용을 나열(list)합니다.
cd change directory 현재 디렉토리를 변경합니다.
pwd print working directory 현재 작업 중인 디렉토리 경로를 출력합니다.
touch touch 파일의 **시간 정보(timestamps)**를 갱신(없으면 새로 생성)합니다.
mkdir make directory 새로운 디렉토리를 생성합니다.
rm remove 파일이나 디렉토리를 삭제합니다.
cp copy 파일이나 디렉토리를 복사합니다.
mv move 파일을 이동하거나 이름을 변경합니다.

2. 파일 내용 확인

cat concatenate 파일 내용을 출력하거나 여러 파일을 연결(concatenate)합니다.
less less 긴 파일을 페이지 단위로 탐색합니다. (이름은 more 명령어보다 개선되었다는 의미에서 유래.)
head head 파일의 첫(head) 부분(기본 10줄)을 출력합니다.
tail tail 파일의 끝(tail) 부분(기본 10줄)을 출력합니다.
grep global regular expression print 파일 내에서 정규 표현식을 검색하여 해당 내용을 출력합니다.

3. 권한 및 소유권 관리

chmod change mode 파일의 권한 모드를 변경합니다.
chown change ownership 파일의 소유자(ownership)를 변경합니다.

4. 프로세스 및 시스템 관리

ps process status 현재 실행 중인 프로세스를 확인합니다.
top top (프로세스 상위 목록) 실시간으로 상위 프로세스를 모니터링합니다.
kill kill 특정 프로세스를 종료(kill)합니다.
df disk free 디스크의 사용 가능 공간을 확인합니다.
free free 시스템의 메모리 상태를 보여줍니다.
apt가 없는데 apt에 대한 명령어도 알려줄래?
apt는 Advanced Package Tool의 약자로,
Ubuntu 및 Debian 계열의 Linux에서 패키지(소프트웨어)를 관리하는 도구입니다.
패키지를
검색, 설치, 제거, 업데이트하는 데 사용됩니다.

1. apt 명령어의 주요 기능

apt는 사용자가 패키지를 효율적으로 관리할 수 있도록 다양한 옵션을 제공합니다.

(1) 패키지 목록 업데이트

sudo apt update
  • 설명: 시스템에 설치된 패키지의 최신 목록을 가져옵니다.
  • 언제 사용?
    새로운 패키지를 설치하기 전에, 최신 정보를 가져와야 문제가 발생하지 않습니다.

(2) 시스템 전체 패키지 업그레이드

sudo apt upgrade
  • 설명: 설치된 모든 패키지를 최신 버전으로 업그레이드합니다.
  • 언제 사용?
    시스템을 최신 상태로 유지하고 보안 업데이트를 적용할 때.

(3) 패키지 설치

sudo apt install package-name
  • 설명: 특정 패키지를 설치합니다.
  • 예제:
     
    sudo apt install git
    • 설치 내용: Git 소프트웨어를 설치합니다.

(4) 패키지 제거

sudo apt remove package-name
  • 설명: 특정 패키지를 제거합니다(설정 파일은 남겨둠).
  • 예제:
     
    sudo apt remove git

(5) 패키지와 설정 파일 제거

sudo apt purge package-name
  • 설명: 패키지와 함께 관련된 설정 파일까지 모두 제거합니다.

(6) 설치된 패키지 확인

apt list --installed
  • 설명: 현재 설치된 모든 패키지의 목록을 확인합니다.

(7) 패키지 검색

apt search package-name
  • 설명: 특정 패키지를 검색합니다.
  • 예제:
     
    apt search python
    • Python과 관련된 패키지 목록이 출력됩니다.

2. apt와 관련된 추가 명령어

(1) 캐시 삭제

sudo apt clean
  • 설명: 다운로드된 패키지의 캐시를 삭제해 디스크 공간을 확보합니다.

(2) 업그레이드(배포판 전체 업데이트)

sudo apt dist-upgrade
  • 설명: 기존 apt upgrade보다 더 강력하게, 시스템의 종속성까지 고려하여 패키지를 업그레이드합니다.

3. apt 명령어의 구조적 이해

  • 명령어 구조:
     
    sudo apt <명령> <패키지 이름>
  • 축약어:
    • update: 업데이트 목록 갱신
    • install: 설치
    • remove: 제거
    • autoremove: 불필요한 패키지 자동 제거
    • upgrade: 설치된 패키지 업그레이드

이 명령어들을 잘 활용하면 Ubuntu나 Debian 계열의 패키지 관리를 쉽게 할 수 있습니다! 😊

 

ubuntu linux에서 sudo apt-get install nginx 를 통해서 설치하고 나서, firefox가 있어서 거기서 localhost 를 들어가보니까,

nginx가 실행중이라는 걸 확인할 수도 있다

 

그리고 ubuntu linux에서 실행하는 vs code,, 그래픽이랑 UI가 익숙하다

 


flask가 뭐야?
Flask는 Python으로 작성된 경량 웹 프레임워크로, 웹 애플리케이션을 빠르고 간단하게 개발할 수 있게 해줍니다. **"Microframework"**라고도 불리는데, 기본적으로 필요한 기능만 제공하고, 확장이 쉽도록 설계된 것이 특징입니다.

1. Flask의 주요 특징

  1. 경량(Microframework)
    • 필요한 최소한의 기능만 제공하여, 사용자가 원하는 대로 애플리케이션을 구성하고 확장할 수 있습니다.
    • 불필요한 기능이 포함되지 않으므로 프로젝트가 간단하고 가볍게 유지됩니다.
  2. 확장성
    • 사용자가 필요에 따라 다양한 확장 라이브러리를 추가할 수 있습니다(예: 데이터베이스, 인증, 템플릿 엔진 등).
  3. 유연성
    • 고정된 구조가 없어 자유롭게 애플리케이션을 설계할 수 있습니다.
    • 초보자부터 숙련된 개발자까지 다양한 방식으로 활용할 수 있습니다.
  4. 기본 제공 기능
    • 라우팅: URL과 함수를 연결.
    • 템플릿 렌더링: HTML을 Python 데이터와 결합하여 동적으로 생성.
    • 개발 서버: 애플리케이션을 로컬에서 실행하고 디버깅 가능.

2. Flask로 만드는 웹 애플리케이션의 흐름

  1. 클라이언트 요청: 사용자가 웹 브라우저에서 특정 URL로 요청을 보냄.
  2. Flask 처리:
    • 요청 URL에 연결된 **라우트(route)**를 기반으로 특정 Python 함수를 실행.
    • 필요하면 데이터베이스와 통신하거나 로직을 처리.
  3. 응답 반환: HTML, JSON, 텍스트 등 클라이언트가 요청한 데이터나 결과를 반환.

3. Flask의 간단한 예제

from flask import Flask

# Flask 애플리케이션 생성
app = Flask(__name__)

# 라우트(route) 정의: '/' 경로에 대해 응답할 함수
@app.route('/')
def home():
    return "Hello, Flask!"

# 애플리케이션 실행
if __name__ == "__main__":
    app.run(debug=True)

실행 및 결과

  1. 위 코드를 실행하면 로컬 서버가 실행됩니다(기본: http://127.0.0.1:5000).
  2. 브라우저에서 해당 주소로 접속하면 "Hello, Flask!" 메시지를 확인할 수 있습니다.

4. Flask를 사용하는 이유

  • 빠른 개발: 간단한 설정으로 애플리케이션 개발을 바로 시작할 수 있습니다.
  • 유연성: 특정한 프로젝트 구조를 강제하지 않아서 다양한 요구사항에 맞게 개발 가능합니다.
  • 활용 사례:
    • 프로토타이핑 및 간단한 API 구축.
    • 소규모 또는 중규모 웹 애플리케이션.
    • RESTful API 서버.

5. Flask와 다른 프레임워크와의 비교

     
특징 Flask Django
유형 경량 프레임워크 풀스택 프레임워크
유연성 높은 유연성 규칙적이고 구조화됨
기능 제공 필요한 기능만 제공 인증, ORM 등 내장 기능 제공
학습 곡선 낮음 중간
사용 목적 소규모/단순 프로젝트 대규모/복잡한 프로젝트

6. Flask로 확장 가능한 도구들

Flask는 기본 기능이 경량화되어 있지만, 다양한 확장 라이브러리를 통해 기능을 확장할 수 있습니다:

  • Flask-SQLAlchemy: 데이터베이스 ORM.
  • Flask-WTF: 폼 유효성 검사.
  • Flask-RESTful: REST API 개발.
  • Flask-Security: 인증 및 보안.

7. Flask가 적합한 프로젝트

  • 간단한 웹사이트나 블로그.
  • RESTful API 서버.
  • 데이터 시각화 대시보드(예: Flask + Pandas/Matplotlib).
  • 프로토타입 제작.

결론: Flask는 간단한 설정으로 빠르게 웹 애플리케이션을 만들 수 있는 Python 프레임워크

 

Flask 성공~~


이제 EC2 연결을 할 것이다.

 

흐앍!!!! 연결을 하려고 했지만 여러 가지 문제들에 봉착했었다.

"이제 EC2 연결을 할 것이다" 라는 문장을 작성한 후로 꽤 시간이 흘렀다. 결국에는, 리눅스 우분투에서 인스턴스를 생성해서 거기서 key.pem 을 받아냈다.

그래서 연결을 이제 해보겠다.

 

 

휴우~ 드디어 연결 완료했다. 리눅스 환경에서 EC2 리눅스로 연결, SSH를 이용해서 연결하는 걸 해냈습니다.

 

간단하게, exit 명령어를 입력하면 연결이 해제가 된다.

굿굿!!!!! 드디어!!!!!!!!!!!!!!!