장고:리눅스에 올리기
편집하기
둘러보기로 이동
검색으로 이동
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
{{장고}} ==개요== 보통 개발은 윈도우에서, 서비스는 리눅스에서 하곤 한다. ==기본 서버환경 구축== {| class="wikitable" |+ !과정 !방법 ! |- |파이썬 설치 | #sudo apt update #sudo apt install --only-upgrade python3 | #업데이트 하고 #설치 혹은 업데이트 한다. |- |가상환경 만들기 |잠시! git으로 동기화된 디렉터리에 가상환경이 있을텐데, 이건 못써먹나? 실험해보자! #sudo apt install python3-venv #가상환경을 만들고자 하는 디렉터리로 이동 #mkdir venvs #cd venvs #python3 -m venv mysite | #가상환경 패키지 설치 #cd 명령어로 이동하지. #가상환경디렉터리를 만들고, #가상환경 디렉터리로 이동 후, #mysite라는 이름의 가상환경 제작 |- | |첨언. |pip freeze > requirements.txt 명령을 기입하면 가상환경에 설치된 것이 텍스트파일에 기록된다. 이후 서버에서 pip install -r requirements.txt 를 실행하면 그 안에 있는 걸 따라 그대로 설치해준다. |- |가상환경 실행 | #cd bin #. activate | #가상환경 안의 bin으로 이동. #해당 경로에서 활성화. 그럼 프롬프트 왼쪽에 가상환경명이 뜬다. |- |가상환경 해제 |아무데에서나 deactivate를 입력 | |- |장고 설치 |가상환경을 실행한 상태에서.. pip install django |기본 베이스에서 설치하면 다른 사람들에게도 영향이 간다. |} ===가상환경 자동 실행=== 매번 디렉터리로 들어가 activate를 치고 프로젝트 디렉터리로 돌아오는 건 굉장히 귀찮은 일이다. 다음과 같 쉘.sh 파일을 만들어보자.<syntaxhighlight lang="python"> #!/bin/bash cd ~/프로젝트/프로젝트명 #프로젝트 디렉터리로 이동 . ~/vens/가상환경주소/bin/activate #가상환경 실행 </syntaxhighlight>쉘 파일 실행은 <code>. 쉘.sh</code> 로 가능하다.(. 띄고 파일명임에 유의) 이걸 alias에 등록하여 사용하면 참 간단하게 원하는 가상환경을 실행하고 작업공간으로 이동할 수 있다.([[리눅스:alias(명령 축약)|리눅스:alias]] 참조) ==git 에서 받아오기== {| class="wikitable" !과정 !방법 ! |- |디렉터리만들기 |프로젝트 디렉터리를 담을 공간을 만든다. |~/project 따위로. |- |받아오기 |프로젝트 디렉터리를 둘 디렉터리 안에서 git clone https://저장소주소 프로젝트명 |마지막에 프로젝트명을 붙여야 한다. 그러면 프로젝트디렉터리 안에 해당 프로젝트명의 디렉터리가 새로 생긴다.(복사된 것) |- |DB생성 |프로젝트 디렉터리 안에서 python manage.py migrate |~/project/mysite 등 안에서. |- |서버구동 |python manage.py runserver | |} ===받아오기=== 매번 변경사항이 생길때마다 위의 과정을 거치는 건 비효율적이다. git pull 에서 아이디와 패스워드를 입력하면 변경사항을 반영한다. 매번 아이디와 패스워드를 치는 것도 귀찮다. 그럴땐 프로젝트디렉터리에서 <code>git config credential.helper store</code> 을 넣어주자. ==호스트 설정== 장고가 서버에서 서비스 될 때엔 Settings.py 안의 ALLOWED_HOSTS 항목을 설정해 주어야 한다.(아마 보안문제인듯) 그 안에 서버의 아이피를 기입한다.(도메인도 되는지 해보자.) <br /> ==서버 실행 자동화== 파일명.sh 파일을 만들어보자. 위에서 설명한 가상환경 sh 파일에 <code>python manage.py runserver 0:8000 --settings=세팅파일경로</code>등 서버를 실행한다는 내용만 추가해주면 된다. <br /> ==최종형태== .sh 파일을 다음과 같이 만들어주면 프로젝트디렉터리로의 이동과 가상환경 실행, 서버동기화, 실행까지 단번에 끝낼 수 있다.<syntaxhighlight lang="bash"> #!/bin/bash cd ~/projects/mysite . ~/venvs/mysite/bin/activate git pull python manage.py makemigrations python manage.py migrate python manage.py collectstatic --settings=config.service_settings # 운영세팅으로 collectstatic. nohup python /home/id8436/projects/mysite/manage.py runserver 0:8000 --settings=config.service_settings & </syntaxhighlight>에러가 뜨면 python manage.py collectstatic --noinput 를 사용한다. ===주의=== 서버가 종료되지 않은 상태에서 터미널이 종료되면 서버 실행 시 Error : That port is already in use. 라는 에러가 뜬다. 이땐 killall python을 실행하고 서버를 실행하면 된다.(이거 말고 핀포인트로 종료하는 방법은 없나;;? <br /> ===nohup 을 사용한 지속작업=== 위처럼 실행시키면 터미널이 닫히거나 로그아웃하면 실행을 멈춰버린다. 이를 위해 nohup을 사용해 <code>nohup python manage.py runserver --settings=config.로컬용세팅파일 0:8000 &</code> 형태로 올리면 백그라운드에서 서버를 돌린다. 멈추기 위해선 종료해주어야 하는프로세스가 4개 정도 되어, killall python 을 입력하는 게 낫다.
요약:
학교의 모든 지식. SMwiki에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
학교의 모든 지식. SMwiki:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
이 문서에서 사용한 틀:
틀:장고
(
원본 보기
) (보호됨)
둘러보기 메뉴
개인 도구
로그인하지 않음
토론
기여
로그인
이름공간
문서
토론
한국어
보기
읽기
편집
원본 편집
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보