장고:리눅스에 올리기: 두 판 사이의 차이
(같은 사용자의 중간 판 12개는 보이지 않습니다) | |||
33번째 줄: | 33번째 줄: | ||
#가상환경 디렉터리로 이동 후, | #가상환경 디렉터리로 이동 후, | ||
#mysite라는 이름의 가상환경 제작 | #mysite라는 이름의 가상환경 제작 | ||
|- | |||
| | |||
|첨언. | |||
|pip freeze > requirements.txt 명령을 기입하면 가상환경에 설치된 것이 텍스트파일에 기록된다. | |||
이후 서버에서 pip install -r requirements.txt 를 실행하면 그 안에 있는 걸 따라 그대로 설치해준다. | |||
|- | |- | ||
|가상환경 실행 | |가상환경 실행 | ||
49번째 줄: | 54번째 줄: | ||
|가상환경을 실행한 상태에서.. | |가상환경을 실행한 상태에서.. | ||
pip install django | pip install django | ||
|기본 베이스에서 설치하면 다른 사람들에게도 영향이 간다. | |||
|} | |} | ||
103번째 줄: | 105번째 줄: | ||
그 안에 서버의 아이피를 기입한다.(도메인도 되는지 해보자.) | 그 안에 서버의 아이피를 기입한다.(도메인도 되는지 해보자.) | ||
<br /> | <br /> | ||
==서버 실행 자동화== | ==서버 실행 자동화== | ||
파일명.sh 파일을 만들어보자. | 파일명.sh 파일을 만들어보자. | ||
위에서 설명한 가상환경 sh 파일에 <code>python manage.py runserver 0:8000</code>등 서버를 실행한다는 내용만 추가해주면 된다. | 위에서 설명한 가상환경 sh 파일에 <code>python manage.py runserver 0:8000 --settings=세팅파일경로</code>등 서버를 실행한다는 내용만 추가해주면 된다. | ||
<br /> | <br /> | ||
161번째 줄: | 122번째 줄: | ||
. ~/venvs/mysite/bin/activate | . ~/venvs/mysite/bin/activate | ||
git pull | git pull | ||
nohup python /home/id8436/projects/mysite/manage.py runserver 0:8000 & | 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> | </syntaxhighlight>에러가 뜨면 python manage.py collectstatic --noinput 를 사용한다. | ||
===주의=== | ===주의=== | ||
169번째 줄: | 134번째 줄: | ||
이땐 killall python을 실행하고 서버를 실행하면 된다.(이거 말고 핀포인트로 종료하는 방법은 없나;;? | 이땐 killall python을 실행하고 서버를 실행하면 된다.(이거 말고 핀포인트로 종료하는 방법은 없나;;? | ||
<br /> | |||
===nohup 을 사용한 지속작업=== | |||
위처럼 실행시키면 터미널이 닫히거나 로그아웃하면 실행을 멈춰버린다. 이를 위해 nohup을 사용해 | |||
<code>nohup python manage.py runserver --settings=config.로컬용세팅파일 0:8000 &</code> 형태로 올리면 백그라운드에서 서버를 돌린다. | |||
멈추기 위해선 종료해주어야 하는프로세스가 4개 정도 되어, killall python 을 입력하는 게 낫다. |
2022년 6월 27일 (월) 02:33 기준 최신판
장고! 웹 프레임워크! 틀:장고
개요[편집 | 원본 편집]
보통 개발은 윈도우에서, 서비스는 리눅스에서 하곤 한다.
기본 서버환경 구축[편집 | 원본 편집]
과정 | 방법 | |
---|---|---|
파이썬 설치 |
|
|
가상환경 만들기 | 잠시! git으로 동기화된 디렉터리에 가상환경이 있을텐데, 이건 못써먹나? 실험해보자!
|
|
첨언. | pip freeze > requirements.txt 명령을 기입하면 가상환경에 설치된 것이 텍스트파일에 기록된다.
이후 서버에서 pip install -r requirements.txt 를 실행하면 그 안에 있는 걸 따라 그대로 설치해준다. | |
가상환경 실행 |
|
|
가상환경 해제 | 아무데에서나 deactivate를 입력 | |
장고 설치 | 가상환경을 실행한 상태에서..
pip install django |
기본 베이스에서 설치하면 다른 사람들에게도 영향이 간다. |
가상환경 자동 실행[편집 | 원본 편집]
매번 디렉터리로 들어가 activate를 치고 프로젝트 디렉터리로 돌아오는 건 굉장히 귀찮은 일이다. 다음과 같 쉘.sh 파일을 만들어보자.
#!/bin/bash
cd ~/프로젝트/프로젝트명 #프로젝트 디렉터리로 이동
. ~/vens/가상환경주소/bin/activate #가상환경 실행
쉘 파일 실행은 . 쉘.sh
로 가능하다.(. 띄고 파일명임에 유의)
이걸 alias에 등록하여 사용하면 참 간단하게 원하는 가상환경을 실행하고 작업공간으로 이동할 수 있다.(리눅스:alias 참조)
git 에서 받아오기[편집 | 원본 편집]
과정 | 방법 | |
---|---|---|
디렉터리만들기 | 프로젝트 디렉터리를 담을 공간을 만든다. | ~/project 따위로. |
받아오기 | 프로젝트 디렉터리를 둘 디렉터리 안에서
git clone https://저장소주소 프로젝트명 |
마지막에 프로젝트명을 붙여야 한다.
그러면 프로젝트디렉터리 안에 해당 프로젝트명의 디렉터리가 새로 생긴다.(복사된 것) |
DB생성 | 프로젝트 디렉터리 안에서
python manage.py migrate |
~/project/mysite 등 안에서. |
서버구동 | python manage.py runserver |
받아오기[편집 | 원본 편집]
매번 변경사항이 생길때마다 위의 과정을 거치는 건 비효율적이다.
git pull 에서 아이디와 패스워드를 입력하면 변경사항을 반영한다.
매번 아이디와 패스워드를 치는 것도 귀찮다. 그럴땐 프로젝트디렉터리에서 git config credential.helper store
을 넣어주자.
호스트 설정[편집 | 원본 편집]
장고가 서버에서 서비스 될 때엔 Settings.py 안의 ALLOWED_HOSTS 항목을 설정해 주어야 한다.(아마 보안문제인듯)
그 안에 서버의 아이피를 기입한다.(도메인도 되는지 해보자.)
서버 실행 자동화[편집 | 원본 편집]
파일명.sh 파일을 만들어보자.
위에서 설명한 가상환경 sh 파일에 python manage.py runserver 0:8000 --settings=세팅파일경로
등 서버를 실행한다는 내용만 추가해주면 된다.
최종형태[편집 | 원본 편집]
.sh 파일을 다음과 같이 만들어주면 프로젝트디렉터리로의 이동과 가상환경 실행, 서버동기화, 실행까지 단번에 끝낼 수 있다.
#!/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 &
에러가 뜨면 python manage.py collectstatic --noinput 를 사용한다.
주의[편집 | 원본 편집]
서버가 종료되지 않은 상태에서 터미널이 종료되면 서버 실행 시 Error : That port is already in use. 라는 에러가 뜬다.
이땐 killall python을 실행하고 서버를 실행하면 된다.(이거 말고 핀포인트로 종료하는 방법은 없나;;?
nohup 을 사용한 지속작업[편집 | 원본 편집]
위처럼 실행시키면 터미널이 닫히거나 로그아웃하면 실행을 멈춰버린다. 이를 위해 nohup을 사용해
nohup python manage.py runserver --settings=config.로컬용세팅파일 0:8000 &
형태로 올리면 백그라운드에서 서버를 돌린다.
멈추기 위해선 종료해주어야 하는프로세스가 4개 정도 되어, killall python 을 입력하는 게 낫다.