-
Notifications
You must be signed in to change notification settings - Fork 0
07 pip, git and github
어제 그동안 예제 했던거 다시 복습...
+ 패키지 관리자 pip
pypi(Python Package Index) 파이썬 라이브러리!
# 팩키지 설치 pip install 팩키지명1 [팩키지명2] [팩키지명3] # 팩키지 삭제 pip uninstall 팩키지명1 [팩키지명2] [팩키지명3] # 팩키지 검색 pip search 검색할팩키지명 # 설치된 팩키지 목록을 표준 출력 pip freeze # 설치된 팩키지 목록을 현재 경로의 requirements.txt 파일에 새롭게 저장 pip freeze > requirements.txt
매번 프로젝트 세팅할 때마다 직접 pip install 명령에 팩키지를 일일이 나열하는 것이 너무 번거로움
그래서, 팩키지명을 한 파일에 나열해두고 명령 한 번으로 설치 파일명은 대개 requirements.txt를 많이 . 거의 룰
pip install -r requirements.txt
설치시 항상 최신버전으로 설치되므로 == 로 버전을 지정할 수 있음
각 구동환경 별로 별도의 requirements.txt 파일을 둡니다.
예시
./reqs/common.txt : 공통파일 ./reqs/dev.txt : 로컬 개발용 ./reqs/dev_v2.0.txt : 로컬 v2.0 개발용 ./reqs/prod_aws.txt : AWS EC2 배포용 ./reqs/prod_aws_lambda.txt : AWS Lambda 배포용
SCM(Source Code Management)
대세의 흐름 : 서버/클라이언트 구조, 분산형
서버/클라이언트 구조 : CVS, SVN 등 매번 서버로 커밋하는 것의 부담. 매 작업이 네트워크 속도에
분산형 : Git, Mercurial 등 로컬에 커밋하고, 커밋을 정리해서, 서버로 PUSH/PULL
다른 git Bitbucket, Gitlab
Git의 일반적인 사용 시나리오
- 중앙의 소스 저장소를 두고, 각 개발자가 저장소를 로컬에 CLONE
- 주요 변경내역마다 로컬에 COMMIT하여 기록 남기기
- 서버에 반영할 내역은 PUSH하여 밀어넣기
- PULL할 내역이 있을 때에는 PUSH가 되지 않음. 먼저 PULL해야함.
- 로컬에 없는 내역은 PULL하여 당겨오기
저장소 (Repository) : 소스코드 저장소
- Clone : 원격지 저장소를 로컬에 복제하여, 로컬 저장소 생성
- Index : 커밋할 파일들의 스냅샷
- Commit : 추가/수정/변경내역 저장 단위
- PUSH: 원격지 저장소에 반영되지 않은 로컬 저장소 내역을 PUSH
- PULL : 로컬 저장소에 반영되지 않은 원격지 저장소 내역을 PULL
- Branch : 저장소 내에서 독립된 커밋 공간. 기본 브랜치는 master
git config --global user.name YoungBaeeee git config --global user.email [email protected]
CLI에서는 ssh인증이 필요함
ssh-keygen 으로 생성!! 그러면
(myvenv) ubuntu@ip-172-31-17-74:~/ssh$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa): # 경로설정 Enter passphrase (empty for no passphrase): # 비밀번호 Enter same passphrase again: # 비번다시 Your identification has been saved in /home/ubuntu/.ssh/id_rsa. Your public key has been saved in /home/ubuntu/.ssh/id_rsa.pub. The key fingerprint is: SHA256:x8Y/FzJ5qaOqh1yCrLLWJPudkIMld1re4nivlbhBmc0 ubuntu@ip-172-31-17-74 The key's randomart image is: +---[RSA 2048]----+ | | | | | | | = o . . | | . + B ES = + + | | .=.X + oo . = . | | .=* * B = . | |.o..*.O . . + | |oo.o.*++... | +----[SHA256]-----+
생성완료!!
(myvenv) ubuntu@ip-172-31-17-74:~/.ssh$ ls authorized_keys id_rsa id_rsa.pub
id_rsa는 비밀키 외부공개 절대 안됨 id_rsa.pub 공개키
cat으로 파일을 읽어서 git웹의 setting에 새로운 ssh 생성
웹에서 새로운 Repository 생성 ssh주소획득
연결
git clone [email protected]:YeongBaeeee/hello_django.git
파일생성 확인
(myvenv) ubuntu@ip-172-31-17-74:~/hello-django/hello_django$ git status On branch master Initial commit Untracked files: (use "git add <file>..." to include in what will be committed) README.md nothing added to commit but untracked files present (use "git add" to track)
윈도에서는 add와 commit을 같이 해줌 로컬에 커밋하는것임!!
새로운 소스파일을 생성, 혹은 기존 소스파일을 수정하여 변경내역 생성
git status
# 새롭게 생성된 파일이나 수정된 파일을 index에 올리기 git add 파일경로1 파일경로2 # 파일을 삭제하며, index에 올리기 git rm 파일경로1 파일경로2 # 디렉토리를 통채로 삭제하며, index에 올리기 git rm -r 파일경로1 파일경로2
index에 올린 파일을 커밋하기
git commit -m "커밋 메세지"
-a 옵션 : 기존 커밋된 파일들 중에 수정/삭제된 파일을 자동 index에 추가
git commit -a -m "커밋 메세지"
log 살펴보기
git log
Github 원격 저장소에 변경내역 올리기 Github 원격 저장소에 쌓인 커밋내역 반영을 위해 PUSH
git push origin master
- origin : 반영시킬 원격 저장소의 별칭. Github 저장소 Clone시에 자동 지정
- master : 브랜치 지정
git remote -v origin [email protected]:askdjango/vod-django.git (fetch) origin [email protected]:askdjango/vod-django.git (push)
- 다른 원격 저장소를 추가할려면, git remote add 명령
git push -u origin master
그 이후에는 저장소/브랜치 생략 가능 쉘> git push
다른 개발자/머신에서 PUSH된 내역을 받아올 때
git pull # upstream이 지정되어있을 경우 git pull origin master
tracked된 파일 untrack 하기
git rm --cached REAME
Sphinx로 홈페이지 만들기: 기본형태 Sphinx는 파이썬을 기반으로한 문서제작도구이다.
이를 이용해서 다양한 형태의 문서를 만들 수 있는데 그 중 하나로서 이 포스트에서는 가장 기본적인 형태인 default 상태의 홈페이지를 만드는 과정을 정리해본다.
Python (ver 2.7.8) 및 Sphinx가 설치되어있다고 가정한다. 각각의 OS에 따른 Sphinx의 설치는 이 링크를 참조. 간단한 터미널 사용법(폴더 이동, 폴더 만들기 등)을 알고 있다고 가정한다. Sphinx를 설치한 후, 다음의 단계를 따라서 가장 단순한 홈페이지를 만든다.
웹문서가 저장될 폴더를 만든다. 터미널을 시작해서 해당 폴더로 이동한다. 터미널에서 sphinx-quickstart(엔터) 터미널 상에서 나타나는 질문들에 대해 순서대로 대답한다. Root path for the documentation [.]: 엔터를 치면 default로 현재의 폴더가 루트 폴더가 된다.
Separate source and build directories (y/n) [n]: 디폴트는 n인데 y를 선택하면 소스 폴더가 따로 생성된다. 파일관리를 편하게 하기 위해서 별도로 소스 폴더를 유지하는 것이 낫다.
Name prefix for templates and static dir [_]: 모든 과정 후에 templates와 static이라는 폴더(디렉토리)가 생기는데 그 prefix를 언더바(디폴트)로 할 것인가의 질문.
Project name: Author name(s): Project version: Project release [0.0.1]: Source file suffix [.rst]: default는 소스 파일의 확장자가 .rst가 된다. 이 경우 소스파일은 reStructuredText라는 형식을 사용하게 되는데 이에 대해서는 후에 따로 설명하도록한다. . . . Name of your master document (without suffix) [index]: Create Makefile? (y/n) [y]: Create Windows command file? (y/n) [y]: 이 마지막 두 질문에 대해서는 반드시 y를 선택하도록 한다.
이상의 과정이 완료되면, 첫 단계에서 만든 루트 폴더 밑에 다음과 같은 폴더 및 파일들이 생성된다. source 폴더 밑의 conf.py 파일은 설정 파일이고, index.rst 파일은 홈페이지의 index.html에 대응되는 파일이 된다. 이 두 파일(및 이후 추가될 .rst 파일들)이 홈페이지의 소스가 된다.
이제 최종적으로 홈페이지를 만드는(build) 단계.
루트 폴더에서 터미널로 make html을 하면 build 폴더 내에 index.html을 포함하는 html 폴더가 생성된다.
이 웹페이지를 발행하고자한다면 이 html폴더를 서버로 보내면 된다.
위 단계에서 언급한 conf.py와 index.rst 파일을 수정하는 것, 다른 rst 파일을 source 폴더에 추가하는 것으로 이 default 상태의 홈페이지를 수정하게 된다.