일반적으로는 git과 함께 사용하여 git tag를 통해 대용량 데이터 버전관리를 할 때 유용하게 쓰인다. git에서는 2GB 이상의 데이터를 push할 수 없기 때문에, 대용량 폴더는 dvc로 관리하고 git ignore에 명시하여 git이 추적하지 않도록 한다.
대용량 폴더는 dvc를 이용하여 데이터를 원격저장소에 저장한다. dvc가 관리하는 파일들은 [폴더명.dvc]라는 메타정보파일이 남는다. 이 메타정보 파일에는 원격저장소에 저장된 데이터 경로와 데이터 size, 파일개수가 쓰여있다. git은 이 메타정보 파일을 추적하여 버전관리를 한다.
예시)
Workspace를 보면 train.py, pred.py, data폴더, model폴더가 존재한다. 이 중 data와 model은 대용량폴더이기 때문에 dvc로 관리한다. 그렇게 되면 git repository에는 train.py, pred.py와 data와 model 폴더의 메타정보를 담은 data.dvc, model.dvc 파일이 관리되고, 데이터는 원격저장소로 push되어 원격저장소 내에 저장되어있다. model.dvc 내용을 살펴보면 model의 원격저장소 위치와 size, 파일개수, path 정보가 들어있다. 원격저장소에서 c6/efae81ddbbf2a8a88d6d3790e60e61.dir을 찾아가서 살펴보면 원격저장소 파일경로와 실제파일명이 매칭되어 적혀있다. 10/d2a131081a3095726c5721ed31c21f의 내용을 확인하면 Workspace/model/model1.pt 파일내용을 볼 수 있다
dvc는 왜 파일을 이렇게 복잡한 파일명으로 관리하는걸까? dvc는 해시값을 이용하여 데이터를 관리한다. 해시값이란 파일의 데이터를 해시 함수(Hash Funtion) 또는 해시 알고리즘(Hash Algorithm)을 통해 계산하여 산출된 값으로 이러한 값은 해당 파일의 고유한 값이다. 해시값은 고유한 값이기 때문에 두 파일의 해시값이 같다는 것은 두 파일이 동일한 파일임을 의미한다. 해시값을 이용하여 데이터를 저장하면 동일한 파일을 중복저장하지 않을 수 있다. 파일명만 다르고 내용이 동일한 파일이 있는 경우, 데이터는 한 번만 저장되고 동일한 해시 값을 참조한다.
# 원격 저장위치 설정
# model 내용을 두 개의 원격저장소에 push해보기
dvc remote add aimodel C:\Users\stone\seokhwa_practice\DVC\aimodel
# 원격저장소 config git add
git add .dvc/config
git commit -m "Configure remote storage"
pwd:현재 작업중인 디렉토리 정보 출력
cd:경로 이동
ls:디렉토리 목록확인
ls -a: 숨겨진 파일이나 디렉토리 출력
ls -l: 상세내용을 출력한다.
ls -al: 디렉토리 상세 정보 출력
cp: 파일 혹은 디렉토리를 복사 (디렉토리 복사시 -r 옵션 필요)
mv: 파일 혹은 디렉토리 이동,이름을 변경하는 용도로도 사용한다.
mkdir:디렉토리 생성 -p 옵션을 주면 하위 디렉토리까지 생성완료
rm:파일이나 디렉토리 삭제 (디렉토리 삭제시 -r 옵션 필요)
cat: 파일내용 출력,생성,덧붙이기, 하나로 합치기 등등 다양한 기능
find [검색경로] -name [파일명]: 특정 파일이나 디렉토리를 검색한다
nginx.exe 더블클릭 시 실행됨 (브라우저로 http:localhost를 열면 Welcome to nginx 페이지를 볼 수 있다)
nginx 기본 명령어
## nginx.exe가 존재하는 위치에서 아래 명령어 사용 ##
# 버전
nginx -v
# 시작 : nginx 설치경로로 가서 nginx.exe 더블클릭
nginx (nginx 명령어로 시작 가능하지만 cmd 멈춤.. 끄고 다른 cmd창 열어야함)
# 기동 중인 nginx에 명령하기
## 설정파일 변경 반영을 위해 reload (내린 후 다시 로드해야 되는 경우도 있음)
nginx -s reload;
## 멈추기
nginx -s stop
nginx 디렉토리 구조 (리눅스 버전)
sudo find / -name nginx.conf # 디렉토리 찾기
cd /etc/nginx # nginx 경로로 이동
sudo apt-get install tree # 트리명령어 사용을 위해 설치
tree . # 현재 디렉토리 트리구조로 보기
nginx.conf 기본 환경설정 튜닝하기
nginx.conf 파일은 Nginx가 동작해야 할 방식을 설정 값을 통해 지정
root 계정만 수정이 가능하기 때문에, 수정이 필요하다면 sudo vim nginx.conf 를 통해 파일 열기
default : Install Now를 통해 설치하면 C:\Users\{usr_name}\AppData\Local\Programs\Python\Python310 경로에 설치됨
사용자지정 : Customize installation을 통해 설치 경로 지정 가능
3. 설치된 파이썬 확인
cmd에서 아래 명령어를 통해 설치된 파이썬 리스트를 확인 가능
## 설치된 파이썬 리스트
py --list
# Installed Pythons found by py Launcher for Windows
# -3.10-64 *
# -3.7-64
## 설치된 파이썬 리스트와 경로
py --list-paths
# Installed Pythons found by py Launcher for Windows
# -3.10-64 C:\project\common\Python\Python310\python.exe *
# -3.7-64 C:\project\common\Python\Python37\python.exe
## py 도움말 : # py -h를 통해 출력 가능
## 파이썬이 여러 개 설치되어있는 경우 py -버전 명령어를 통해 실행 가능
py -3.7 # 3.7버전 실행
## pip 사용 시 -m 옵션을 주어 py 명령라인에서 pip 실행 가능
py -3.7 -m pip install 라이브러리명
파이썬 개발환경 관리 (pipenv)
pipenv는 파이썬에서 격리된 가상 환경(virtual environment)과 프로젝트 단위의 패키지 관리를 가능하게 하는 도구
서로 다른 환경의 프로젝트를 컴퓨터 한 대로 개발해야 하는 경우 각 프로젝트 별로 격리된 환경 필요
pipenv를 통해 격리된 가상환경 구성 가능
cmd에서 아래 명령어를 실행하여 pipenv 사용 가능
1. 설치
# 파이썬을 설치한지 오래 된 경우 pip 업그레이드가 필요할 수 있음 (pip install --upgrade pip)
pip install pipenv
2. 가상환경 만들기
# 프로젝트 경로로 이동
cd project1
# 가상환경에서 사용할 파이썬 버전을 --python 옵션에 명시하여 pipenv 커맨드를 실행하면 가상환경 생성됨
pipenv --python 3.10
프로젝트 디렉터리에 Pipfile이 생성됨
프로젝트의 메타 정보가 저장됨
3. 가상환경 사용
# 가상환경 shell에 접속 / 나가기
pipenv shell
exit
# 가상환경 제거
pipenv --rm
# 가상환경 내에 패키지 설치 > 설치한 패키지가 pipfile에 자동으로 명시됨
# pipfile을 통해 어디에서든 동일한 파이썬 개발환경 구성 가능 (동일한 환경을 구성하고 싶은 경로에 pipfile을 복사 후 pipenv install)
pipenv install 패키지명
# 파이썬 실행 / 중단
pipenv run python
exit()
# 프로젝트에 설치된 패키지들을 트리구조로 시각화하여 보여줌
pipenv graph
# 보안취약점이 있는 패키지가 설치되어있는지 체크
pipenv check