개인 프로젝트

    [Ubuntu] mysqlclient 설치 시 'get_requires_for_build_wheel' 오류 해결

    [Ubuntu] mysqlclient 설치 시 'get_requires_for_build_wheel' 오류 해결

    AWS RDS로 DB를 생성하고 Django settings.py에 관련 모듈에 대한 정보를 업데이트 해주었다. 업데이트 된 settings.py 내용을 WAS 서버에서 업데이트 해주고, 적용하려면 mysqlclient 모듈을 설치해야 했다. 그런데 AWS EC2로 만든 WAS서버에서 mysqlclient 모듈을 설치하려는데 계속 오류가 발생했다. 구글링해가며 오류를 해결했고, 그 과정을 기록해두고자 한다! 기본 정보 기본 정보 서버: AWS EC2 OS: Ubuntu 20.04 설치하려는 모듈: mysqlclient 오류 내용 ec2서버의 가상환경에서 pip install mysqlclient 명령어로 모듈을 설치하면 위와 같은 에러가 발생한다. ERROR: Command errored out with..

    [K8S] 'node had volume node affinity conflict' 문제 해결

    [K8S] 'node had volume node affinity conflict' 문제 해결

    쿠버네티스 실습 중 mysql pod가 계속 pending 상태에 빠져있어 pod describe를 봤더니 다음과 같은 에러메세지가 뜬다. 1 node had taint {}, that the pod didn-t tolerate - 한 노드는 테인트 설정 때문에 할당이 되지 않는 상태이다. 1 node had volume node affinity confilct - 한 노드는 affinity conflict 때문에 할당이 막혀있는 상태이다. 현재 환경 구성은 마스터노드 1대와 워커노드 1대로 총 2대의 노드를 사용중이다. 마스터 노드 마스터 노드의 정보를 확인해보면, NoSchedule이라는 Taint가 적용되어있다. 즉, 마스터 노드는 스케줄링을 허용하지 않고있다는 의미다. 따라서 1 node had ..

    [K8S] emptyDir 공유 볼륨 사용하기

    [K8S] emptyDir 공유 볼륨 사용하기

    EmptyDir 볼륨 emptyDir은 컨테이너 간에 공유 볼륨을 사용하고자 할 때 사용된다. 이때 생성되는 공유 볼륨은 파드 안에 생성되기 때문에 파드가 삭제될 때 함께 삭제된다. (즉, 파드 재생성시 데이터도 날라가게 된다.) 만약 파드간에 공유 볼륨을 사용하고자 한다면, persistent volume(PV)(NFS, 클라우드 스토리지 볼륨 등)을 사용하는것이 좋다. PV는 영구볼륨으로 파드가 삭제되어도 계속 남아있기 때문이다. 먼저 파드 템플릿은 다음과 같이 작성한다. apiVersion: v1 kind: Pod metadata: name: pod-volume-1 spec: containers: - name: container1 image: kubetm/init volumeMounts: - nam..

    [IaC] VirtualBox + Vagrant로 CentOS 환경 구축하기

    [IaC] VirtualBox + Vagrant로 CentOS 환경 구축하기

    쿠버네티스 교육을 듣기에 앞서 환경 세팅을 위해 VirtualBox와 Vagrant로 CentOS OS의 가상머신을 구축해보았다. Vagrant란? Vagrant란 HashCorp사의 서비스로, 코드 기반으로 호스트에 빠르게 가상환경을 구축하도록 해준다. 코드 기반으로 가상환경을 구축하기 때문에 IaC(Infrastructure as Code) 도구이다. 일반적으로 VM을 생성하려면 Hypervisor에 가상머신을 생성하고, OS를 설치하고 HDD 파티션 설정, SSH 설정 등 많은 과정을 거쳐야 한다. 이때 Vagrant를 사용하면 이 과정들을 코드 기반의 파일(vagrantfile)로 생성해두고 hypervisor에 빠르게 동일한 스펙의 서버들을 프로비저닝 할 수 있다. (그림 참조) 참고로 Vagr..

    [Django] 상용 환경에서 staticfiles를 찾지 못하는 에러 해결

    [Django] 상용 환경에서 staticfiles를 찾지 못하는 에러 해결

    https://jjung0326.tistory.com/101 [django] WEB 서버 '400 Bad Request Error' 해결 AWS에서 3 tier architecture을 구성하고 WEB서버에 접속하면 'Bad Request 400 에러'가 떨어지는 문제를 해결해보았다. 구성한 서버는 다음과 같다. WEB - Nginx IP: 3.39.165.45 WAS - Gunicorn IP: 3.37.209.223 1. 에러 확 jjung0326.tistory.com WEB서버에서 400에러가 뜨는 문제는 해결했는데... 화면이 깨져 나오는걸 보니 staticfiles 경로를 찾고있지 못하고 있는 것 같다. 아마 설정파일 어딘가에서 꼬여있는 것 같다. 뭐가 문젠지 찾아보자. 1. Django sett..

    [Django] WEB 서버 '400 Bad Request Error' 해결

    [Django] WEB 서버 '400 Bad Request Error' 해결

    AWS에서 3 tier architecture을 구성하고 WEB서버에 접속하면 'Bad Request 400 에러'가 떨어지는 문제를 해결해보았다. 구성한 서버는 다음과 같다. WEB - Nginx IP: 3.39.165.45 WAS - Gunicorn IP: 3.37.209.223 1. 에러 확인 vi /var/log/nginx/error.log 명령어로 어디서 에러가 나고있는지 확인할 수 있다. 에러내용을 보면 ~/register_form/.static_root 폴더와 ~/register_form/.static_root/css 폴더가 forbidden 되어있다. 그리고 was 서버로 connection이 refused 되어 연결이 계속 failed되는 상태이다. 2. 포트 확인 WEB서버와 WAS서버..

    [SQLite] SQLite 특징

    Flask로 간단한 앱을 만드는 프로젝트를 하는데 데이터베이스로 SQLite를 사용했다. SQLite는 파이썬에 내장되어있는 db라서 따로 서버에 설치할 필요가 없어서 간단하게 사용하기 좋다. 다만 입력이 동시에 들어오는 경우, 이를 하나씩 처리하기 때문에 시스템이 느려질 수 있다. 작은 프로젝트를 할 때는 사용하기 편하지만, 큰 애플리케이션을 만들때는 다른 DB사용을 고려해보는 것이 좋을 것 같다.

    <FORM> 태그 submit시 confirm 확인하기

    게시판의 글 삭제 시 삭제 버튼을 누르면 confirm창이 뜨면서 재확인하는 작업을 구현하고 싶었다. 삭제 위와 같이 코드를 작성하고 버튼을 클릭하면 confirm에서 뭘 선택했는지 (확인/취소)와 상관없이 무조건 submit이 넘어가는 문제가 발생했다. 잘은 모르겠지만 내가 생각했을 때 1. 버튼 클릭과 동시에 submit이 바로 제출되거나 2. script에서 false를 return 할 때 submit에 대한 false가 일어나지 않음 때문일 것 같다. (혹시 아시는분은 댓글로 알려주시면 감사하겠습니다 :) ) 여튼 열심히 찾아본 결과 태그 내에서 onsubmit을 사용해 해결할 수 있었다. 삭제 처음의 script문은 그냥 지우고 onsubmit을 활용하면 confirm문의 결과에 따라 submi..