Infra (23) 썸네일형 리스트형 [Linux] sudo vs su 서버에서 작업을 하던 중 관리자 권한이 필요한 작업이 있었다. 관리자 권한을 얻기 위해서 'sudo su' 를 실행한 후 관리자 권한으로 작업을 진행했다. 그런데 명령어를 실행하니까 에러가 발생하면서 명령어가 정상적으로 동작하지 않았다. 로그상으로는 명령어가 저장된 path 를 찾지 못하는 것 같았다. 그래서 이번에는 'su -' 명령어로 관리자 권한을 얻은 뒤 명령어를 실행해보았다. 그러자 이번에는 정상적으로 명령어가 동작했다. 이 과정에서 sudo 와 su 가 같은 동작이 아닌 내부적으로 차이가 있다는 것을 알게 되었다. 이 글에서는 이 둘을 비교하면서 내용을 정리한다.1. sudo vs su- susu 는 substitue user 의 줄임말로 다른 계정, 다른 사용자로 전환하는 명령어이다. su .. [nginx] Docker 컨테이너 재시작 시, Nginx Connection Error 발생 docker compose 로 개발 환경을 구성했다. 이 환경에서 nginx 를 리버스 프록시로 사용하고 있는데, docker 서비스 컨테이너를 재시작 한 뒤 nginx 에서 Connection Error 가 발생하면서 해당 서비스에 접근하지 못하는 문제가 발생했다.여러 자료를 찾아보니 컨테이너를 재생성하면서 변경된 IP 가 nginx 에 캐싱된 IP 정보와 달라서 발생하는 문제였다. 문제는 nginx reload 로 DNS 정보를 업데이트 하여 문제를 해결했는데, 그 과정에서 찾아본 여러가지 내용들과 해결법 등을 정리해본다.1. docker compose network- default networkdocker compose 환경을 실행할 때 따로 네트워크를 명시하지 않으면 자동으로 기본 네트워크를 하나.. [uWSGI] max-requests 와 min-worker-lifetime uwsgi 는 설정에 따라 여러 개의 worker 프로세스로 동작한다. 이 과정에서 worker 프로세스의 memory leak 이 발생할 수 있다. 이러한 문제를 해결하기 위해서 특정 조건에 도달하면 프로세스를 삭제하고 재실행하는 설정이 있는데, 그 중 하나가 max-requests 이다. 이 글에서는 max-requests 에 대해서 정리한다.1. max-requestsmax-requests 는 이름 그대로 worker 프로세스가 처리할 요청의 최대개수를 설정한다. worker 프로세스는 요청을 처리하다가 요청의 개수가 max-requests 에 도달하면 해당 프로세스는 삭제되고 새로운 프로세스로 재실행된다. 이 과정을 통해서 해당 프로세스에 의한 memory leak 을 방지할 수 있다.2. max.. [Linux] CRLF vs LF 리눅스에서 쉡 스크립트를 실행하려고 하다보면 아래와 같은 에러가 발생하는 경우가 있다. $'\r': command not found 스크립트를 열어보면 다른 특수문자나 오타는 없는데 이러한 에러가 나는 것이 이상했다. 검색해보니 윈도우와 리눅스에서 사용하는 개행문자와 관련된 형식의 차이로 발생하는 문제였다. 이와 관련해서 이 글에서 정리해본다.1. CR + LFCRLF 는 Carriage Return (CR) 과 Line Feed (LF) 두가지 단어를 합친 용어이다. 이 용어들은 예전 타자기에서 유래한 단어로 타자기에서 한 줄을 다 친 후 종이를 한 줄 간격만큼 올려주는 행위 (LF, Line Feed) 와 커서를 맨 앞으로 돌리는 행위 (Carriage Return) 에서 기반한 용어이다. 프로그래밍.. [nginx] ssl 인증서 적용 특정 도메인에 https 로 접속하기 위해서는 서버에 ssl 인증서가 적용되어 있어야 한다. 이번에 ssl을 적용하는 서버는 앞단에 nginx 를 두어서 모든 요청이 nginx를 거치도록 하고있다. 이때문에 https를 사용하기 위해서는 nginx에 ssl 인증서를 적용해야 했다. 이를 위해서 다음과 같은 과정을 수행한다.1. ssl 인증서 키 확인ssl 인증서는 crt, cer, csr, pem 등등 다양한 형식을 가지고 있다. 이번에는 pem 형식의 ssl 인증서를 제공받아 이를 적용하게 되었다. ssl 인증서는 인증서 파일인 fullchain.pem 과 키 파일인 privkey.pem 으로 구성되어 있다. (파일 명칭은 달라질 수 있다.)2. nginx configuration 파일 수정ssl 인증.. [Linux] systemd, service, systemctl 리눅스 서버에서 시스템 서비스를 실행하기 위해 systemctl 또는 service 명령어를 사용한다. 이 글에서는 해당 명령어들이 어떤 의미를 가지고 어떻게 동작하는지, 시스템 서비스는 어떤 것들인지에 대해서 정리한다.1. systemdservice와 systemctl을 이해하기 위해서는 먼저 systemd에 대한 이해가 필요하다. systemd는 리눅스에서 PID 1번을 차지하고 있는 프로세스로 리눅스에서 실행되는 서비스, 데몬들을 관리하는 역할을 한다. 데몬이란, 사용자가 직접적으로 제어하지 않고 백그라운드에서 여러 작업을 수행하는 프로그램을 말한다. 리눅스가 부팅되면 네트워크 요청을 처리하는 데몬, 하드웨어 동작을 처리하는 데몬 등 시스템에 필요한 여러 데몬들이 실행된다. 리눅스에서는 이러한 데몬.. [Docker] hosts 파일과 docker-compose extra_hosts 도메인으로 서버에 접속시 이에 매핑되는 ip 주소로의 변환이 필요하다. 일반적인 경우 dns 서버를 통해 도메인 주소에 해당하는 ip 주소를 찾아와서 접속한다. dns 서버를 거치지 않고 로컬에서도 변환할 수 있는데, 이때 사용되는 것이 hosts 파일이다. docker-compose 를 기반으로 서버를 구축하면서 서비스 간의 통신을 위해 hosts 에 도메인을 등록하였다. 그런데 docker 서비스를 재시작 할 때마다 hosts 파일이 초기화 되면서 매번 수정을 해주어야 하는 불편함이 있었다. 이를 해결하기 위해서 docker-compose 의 extra_hosts 옵션을 사용했다. 이 글에서는 extra_hosts 옵션을 사용하면서 찾아본 hosts 파일과 extra_hosts 등의 내용을 정리한다... [Docker] Docker Root Directory (도커 스토리지) 변경 도커를 사용해서 개발을 하다보면 도커 이미지들이 계속해서 쌓이게 된다. 버전별로 빌드된 도커 이미지들은 작으면 몇 MB 에서 nvidia, gpu 와 관련된 이미지들의 경우에는 20GB 정도까지 용량이 커지곤 한다. 이러한 이미지들이 계속해서 쌓이면 로컬 디스크의 용량이 부족해지는 경우가 있다. 이 글에서는 이런 상황을 해결하기 위하여 마운트된 디스크와 같이 특정 위치로 도커 스토리지의 위치를 변경하는 법을 정리한다. 1. Docker Root Directory 도커 데몬은 도커와 관련된 파일들, 컨테이너 정보, 도커 이미지, 볼륨 정보, 서비스 정보 등등 도커와 관련된 정보들을 특정 디렉토리에 저장하여 사용한다. 이러한 디렉토리를 Docker Root Directory 라고 하는데 해당 디렉토리의 기본.. 이전 1 2 3 다음