git add .
git remote add origin https://github.com/itsdangerous/server_dev.git
git commit -m '1st cmt'
git push -u origin main​

 

2022.11.22 - [Study & 교육] - [Python | Django] 파이썬 장고 설치 (가상환경)

 

[Python | Django] 파이썬 장고 설치 (가상환경)

2022.11.22 - [Study & 교육] - [Python | 가상환경] 파이썬 가상환경 venv 사용 [Python | 가상환경] 파이썬 가상환경 venv 사용 프로젝트 마다 버전을 관리하기 위해서 가상환경을 사용합니다. python의 가상환

0418.tistory.com

 

장고 프로젝트를 생성해주었으니 이제 이걸 github에 올려야겠죠?

 

올리는 방법은 아래 포스팅에 적어두었습니다.

 

2022.11.02 - [github] - [github] terminal로 레포지토리 생성 및 push 방법

 

[github] terminal로 레포지토리 생성 및 push 방법

맨날 프로젝트 만들고 깃헙에 올리는 코드를 까먹는데 기억할겸 정리 terminal에서 새로운 repository를 만드는 command line code입니다. echo "# server_dev" >> README.md git init git add README.md git commit -m "first commi

0418.tistory.com

 

server_dev 디렉토리로 가서 다음과 같이 입력하여 깃헙 저장소에 올립니다

 

 

git init
git add .
git remote add origin https://github.com/itsdangerous/server_dev.git
git commit -m '1st cmt'
git push -u origin main

 

 

 

짝짞짞ㄱ짜!!

 

이제 이걸 서버에서 가져와서 작업하면 되겠군요?

 

ec2 서버에 들어가봅시다!

 

먼저 python과 pip를 설치해봅니다

 

sudo apt update

전 로컬에서 파이썬을 3.10 버전을 사용해서, ec2에서도 같은 환경을 적용해줄게요

 

sudo add-apt-repository ppa:deadsnakes/ppa # 선택적
sudo apt install python3.10

* 이게 안된다면

 아래꺼 실행해주세요

curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10

 

잘 설치 됐네요

 

제가 사진은 첨부하지 못했지만,
로컬에 설치되어 있는 파이썬 버전으로 가상환경을 만들어주면

로컬에서 실행한 which python의 결과와
가상환경에서 실행한 which python의 결과가 다를거에요.

그리고 그 가상환경에서 연결된 pip list를 쭉 뽑아보면 로컬 환경에 있는 pip와 다를거에요.

가상환경은 이처럼 버전관리를 위해 사용합니다.

 

 

이제 우분투에서 사용할 파이썬의 기본 버전을 변경해줄거에요

 

먼저, 파이썬3.10의 위치를 찾아줄게요

이렇게 확인해보니 링크된 폴더에 파이썬이 여러 버전이 깔려있네요 ㄷ ㄷ

 

sudo update-alternatives --config python # python python의 버전 변경 가능

# --config python : python의 버전 변경
update-alternatives: error: no alternatives for python

만약 위와 같은 에러가 뜰 경우, 변경할 버전이 설정되어 있지 않은 것입니다.

 

그런 경우에는

 

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.10 1 # 마지막 1은 첫번째 대안이란 뜻
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2

을 입력해주고 다시 

 

sudo update-alternatives --config python

을 입력해주면 아래와 같이 설정되어있는 python 버전 선택 메뉴가 등장하게 되는데,

 

 

원하는 Selection의 번호를 입력하고 Enter를 누르면 python의 해당 버전으로 default path로 설정됩니다.

 

뭐 이방법 말고 저는 bash 쓰니까 .bashrc에 PATH 설정해줘도 되긴 합니다. 이부분은 pass

 

이러고 나서 python -m venv .venv를 입력해서 가상환경을 설정했으나...

Error: Command '['/home/ubuntu/server_dev/.venv/bin/python', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.

와 같은 에러가 떴습니다.  pip가 설치가 안되어있거나, PATH 설정이 안되어있어서 그런 것 같습니다.

 

해결방법은 다음과 같았습니다.

 

아래 입력으로 pip 설치 및 업그레이드

sudo apt install python-pip # pip 설치

pip install --upgrade pip # upgrade pip version

 

이 블로그대로 PATH 경로 설정

 

[linux] zsh에서 pip를 이용한 설치 시 경로(PATH) 에러 해결

문제 - WSL2 기반 Ubuntu에서 제공하는 bash가 아닌, zsh를 이용하고 있습니다. - Ubuntu가 연결되어 있는 VS Code에서 pip3를 이용하여 특정 패키지를 설치하니 다음과 같은 에러가 발생했습니다. WARNING: The

mong9data.tistory.com

 

 

venv 설치

sudo apt-get install python3.10-venv # 3.10 버전 venv 설치

 

그리고 나서

python -m venv .venv

 

를 입력하게되면, '.venv'라는 이름으로 가상환경이 생깁니다.

 

 

잘 됐네요 ㅎㅎ

 

자, 이제 ec2 서버에 가상환경도 만들어 주었겠다...

 

로컬에 있는 환경을 그대로 가져와야겠죠

 

로컬로 가서 가상환경에 접속한 다음,

 

pip freeze > requirements.txt

를 입력하면 txt파일이 하나 생깁니다

 

만약 mysqlclient 설치에 오류가 난다면

아래 링크에 정리된 대로 입력하면 해결 됩니다.

 

 

[Python | Django] makemigrations 오류 해결

python manage.py makemigrations를 하니... mysqlclient가 없어서 안된다나 머라나 그래서 pip install mysqlclient를 했더니 설치가 안된다드라 구글링 결과 다음을 하니 해결이 되었다.... sudo apt-get update sudo apt-get

0418.tistory.com

 

이걸 git에 등록하고 push한 뒤, 서버에서 pull로 받아봅니다.

 

push는 리모트와 브런치가 정해졌다면, 다음과 같이 하면 됩니다.

 

git add .
git commit -m "add reuqirements"
git push -u origin main

 

 

서버에서는 디렉토리에 들어가서 다음과 같이 입력 하면 내려받을 수 있겠죠.

git init

git remote add origin https://github.com/itsdangerous/server_dev.git

git fetch

git pull origin main

잘 내려받았습니다.

 

이제 requirements.txt에 있는 패키지 버전을 서버 가상환경에 그대로 설치해줍니다.

아래 코드를 입력하고 아래 중 하나로 버전을 확인해봅니다.

pip install -r requirements.txt

만약 mysqlclient나 uwsgi 설치가 안된다면 아래 줄 입력

sudo apt-get update
sudo apt-get install python3.10-dev libmysqlclient-dev gcc # python 버전에 맞게 쓰세요

 

이제 다 되었습니다.

장고서버를 실행시켜봅니다.

python manage.py runserver

성공했슴돠~!~~!!~!

빨간 줄로 you have 18머시기 뜬건 해석해보니

18개의 적용되지 않은 migration(admin, auth, contenttypes...)이 있어서 migrate를 진행하라고 하네요.

 

장고 default db는 sqllite인데, mysql은 나중에 쓸거고, 일단은 migrate해줄게요.

아래 줄 입력해줍니다.

python manage.py migrate

 

입력후 다시 서버 가동 하면?

 

 

잘 되는 것 같은데요? 자 이제 127.0.0.1:8000로 들어가봅니다.

 

페이지를 찾을 수 없다고 나옵니다.

 

이를 해결하기 위해선 3가지가 필요합니다.

 

1. server_dev/settings.py의 ALLOWED_HOSTS 변수에 ['*']를 할당하여, 모든 호스트를 허용케 만들고

 

2. aws의 보안그룹 인바운드 규칙에서 8000번 포트를 열어주고

 

3. 서버 실행 시 python manage.py runserver 0:8000 으로 실행

 

 

그니까, 다시 로컬에서 1작업을 하고 git으로 push하고 서버에서 pull 해줍니다.

 

해볼게요

 

잘 되네요 ㅎㅎ

 

접속은 URL은 ['ec2의 퍼블릭 dns주소':8000] 입니다.

 

다음에는 미들웨어인 NginX와 연결을 해보도록하겠습니다.

'Study > AWS' 카테고리의 다른 글

[AWS EC2] Ubuntu 18.04 LTSMacOS EC2 인스턴스에 접속 방법  (0) 2022.11.22
복사했습니다!