개발환경 : AWS ec2 - ubuntu 18.04 터미널을 보기 좋게 쓰기 위해 개발환경에 oh-my-zsh를 설치해보자. zsh 설치 sudo apt install zsh -y 기본 쉘을 zsh로 변경 chsh -s /bin/zsh 만약 여기서 변경이 안되고 chsh:PAM authentication failed 오류가 발생했다면, 다음 순서를 따라하고 다시 쉘을 변경해준다. 1.chsh 설정 파일을 vim으로 접속 sudo vim /etc/pam.d/chsh 2.해당 파일의 auth required pam_shells.so 주석처리 oh-my-zsh 설치 sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/too..
문제 상황 개발환경에서 DockerHub에 Docker 이미지를 푸시하고, 배포서버에서 pull해서 사용하려고 하자 실행시 WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested 와 같은 에러가 발생했다. 이는 개발환경은 WSl2 Ubuntu (linux/amd64) 이고, 배포 서버는 linux/arm64 아키텍처이기 때문이다. 따라서 로컬에서 docker image를 빌드 시, 해당 아키텍처용 이미지를 만들어주어야 한다. 이를 위해선 docker buildx가 필요한데, buildx란 다..
MobaXterm을 사용해야 하는 이유 원격 서버에서 작업해야 할 경우 대부분 연결을 ssh로 하게 되었는데, 기존에는 로컬에서 작업 ➡️ git에 push ➡️ 원격 서버에서 pull 로컬에서 scp프로토콜을 이용해 파일 전송 등의 방식을 사용하였고, 크게 불편함을 느낀 적이 없었다. 그러나 서버측에서 간단한 수정만을 하거나, 리눅스 서버에 데스크탑 환경이 깔려있지 않음 + 위 두가지 방법을 사용 못하는 경우엔 꼼짝없이 vi로 코딩을 해야만 했다. 나의 경우는 원격 서버 내의 파일들이 필요하지만 전부 로컬로 옮길 수 없는 방대한 양인데다가, 기존 코드 자체가 해당 데스크탑의 폴더 구조를 기준으로 짜여져 있기 때문에 반드시 추가 작업을 해당 원격 서버 환경에서 해야만 했다. 따라서 SSH로 접속하고, 해..
PostgreSQL을 설치하면 기본적으로 외부 서버에서 접속할 수 없기 때문에, config 파일들을 수정해주어야 한다. 개발환경은 WSL2 + ubuntu18.04 이다. 우선 다음 명령어로 Ubuntu에서 열려있는 포트를 확인한다. netstat -nltp postgres의 기본 포트는 5432이다. 위 결과처럼 127.0.0.1:5432로 되어 있다면 5432포트는 내부에서만 접속할 수 있다는 뜻이다. postgresql.conf파일 수정 Postgres 설정을 변경하려면 postgresql.conf에서 변경해 줘야 한다. 먼저 다음 명령어로 postgresql.conf 파일을 vim 편집기로 변경해준다. sudo vim /etc/postgresql/10/main/postgresql.conf (po..
PostgreSQL을 사용하며 DB를 생성하거나, psql로 접속할때 종종 Peer authentication 에러가 발생하곤 한다. 이때에는 pg_hba.conf파일의 설정을 변경해주어야 한다. 먼저 pg_hba_conf 파일의 위치를 찾아야하는데, 리눅스 우분투의 경우 보통 다음 경로에 위치한다. /etc/postgresql/{postgresql 버전}/main/pg_hba.conf 해당 파일을 vi 편집기로 접속하고, 몇가지 설정을 변경해준다. 로컬 호스트 기준 여기서 local all postgres와 local all all의 peer을 모두 md5로 변경해준다. 위 사진과 같이 변경되었다면 저장을 해준다. 외부 host기준 host all all 127.0.0.1/32 md5 위 설정에서 12..
postgresql 설정 파일이 위치한 폴더로 이동한다. 각 OS별로 대부분 다음 위치에 존재한다. Linux /etc/postgresql/13/main/postgresql.conf macos /usr/local/var/postgres/postgresql.conf window C:\\Program Files\\PostgreSQL\\13\\data\\postgresql.conf 해당위치의 postgresql.conf 파일에서 data_directory를 확인한다. 해당 경로가 postgresql 서버에서 사용하는 모든 데이터와 메타데이터가 저장되는 데이터베이스 클러스터이다. 그리고 해당 파일에서 log_temp_files 부분을 다음과 같이 수정해준다. log_temp_files = 10240 공간 확보 ..
프로젝트를 하다보면 종종 SSH로 연결된 서버에 파일 혹은 폴더를 전송해야 하는 경우가 있다. 이때는 SCP를 활용한다. 로컬 ➡️ 원격 서버 scp -P 포트번호 -r {전송할 폴더 위치} {전송한IP의 ID}@{전송할IP}:{도착주소} 원격 서버 ➡️ 로컬 scp -P {원격서버포트} -r {원격서버ID}@{원격서버 IP or DDNS}:{전송하려는 파일 절대경로} {전송받는 로컬 폴더 절대경로} -r 옵션은 폴더를 전송할 때 사용한다. 파일을 전송한다면 생략해도 된다. 만약 원격 서버 ➡️ 로컬을 진행할때, ssh 키 등록이 안되어있어 에러가 난다면, 로컬의 ssh public 키를 원격 서버의 ~/.ssh/authorized_keys 에 등록해준다.
리눅스 환경에서 프로그램을 돌리다보면 에러 메시지가 뜨지 않고 killed라는 글자만 쓰여있는 경우가 있다. 이 때는 다음과 같이 커맨드에 입력해주면 process가 강제종료된 원인을 알 수 있다. 대부분은 out of memory문제이다. dmesg | grep -E -i -B100 'killed process'