목록오늘 배운 프로그래밍 (10)
아무나 빌려가세요
이번 게시글엔 배포하는 과정에서 골머리를 앓은 부분만 정리하여 적어보도록 하겠다. 파이썬 패키지에 uwsgi 설치가 불가능한경우 처음 설치한 파이썬 패키지는 python:3.9-slim 이였다. 하지만 uwsgi를 설치하는 과정에서 계속 오류가 났다. 검색결과 파이썬에 필요한 필수패키지가 없어 uwsgi를 설치할 수 없다는 메시지였고 기본 python 이미지를 설치하자 오류가 사라졌다. requirements.txt 설치에 오류가 생기는 경우 잘못 설치된 컨테이너와 이미지를 지우고 재설치할때 패키지를 설치하는 과정에서 계속 네트워크 오류가 났다. 해결방법은 단순히 systemctl을 이용해 restart docker를 하면 해결된다. 그리고 이미지를 삭제하면 캐시가 남게 될경우 docker builder..
apahce 설정 httpd.conf 수정 각자의 apahce 설치 위치가 다르기때문에 필자가 배포한 디렉토리를 기준으로 설명하겠다. LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so 기존 웹서버에 기본적으로 들어가 있었기 때문에 별다른 패키지를 설치할 필요가 없었다. 혹시 없는경우 설치를 필요로 한다. virtualHost 80 설정 vhosts가 설정되어있는 파일에 아래 코드를 추가한다. ServerName app.com ErrorLog "error.log" CustomLog "access.log" common ProxyRequests off Order deny,allow Allow from all ProxyPreserveHost On ProxyPa..
1부에 이어서 DockerFile에 들어갈 내용을 서술하도록 하겠다. DockerFile FROM python:3.9 WORKDIR /app COPY . /app COPY requirements.txt . RUN pip install -r requirements.txt EXPOSE 80 CMD ["uwsgi", "--ini","/app/uwsgi.ini"] FROM : 도커이미지를 넣는 부분이며 Flask앱을 배포하기위해 Python:3.9 버전을 입력했다. 도커에서 제공하는 여러가지 파이썬 버전이 있는데 하이픈이 달린 버전을 설치할경우 uwsgi패키지가 설치되지 않을수 있으니 주의 WORKDIR : 앱이 운영될 디렉토리를 설정하는 파일이다. COPY - : 현재 DockerFile 디렉토리에 있는 파일..
파이썬으로 만든 웹앱을 배포해야 되는 일이 생기면서 기존의 웹서버에 파이썬을 설치하기 보단 docker를 이용하는 방법을 선택했다. 이유는 회사에서 운영중인 서버였기 때문에 기존의 파이썬을 어떻게 사용하는지 알 수 있는 방법이 없었다. 그래서 서버에 설치된 파이썬을 건드리지 않고 앱을 배포하고 싶었다. 클라우드서버는 centos7을 사용하고 있고 아파치는 기존에 배포된 앱이 있기 때문에 세부적인 설정은 이글에 빠져있다. 도커 설치 도커 공식홈페이지에서 RedHat 계열의 centOS에 설치하는 방법이 나와있다. https://docs.docker.com/engine/install/centos/ [Install Docker Engine on CentOS Learn how to install Docker E..
프로시저 : 쿼리를 하나의 메서드처럼 생성하여 복잡한 쿼리문을 실행할 수 있다. 프로시저를 만들어 중간의 idx값이 삭제된후 다시 숫자순서대로 재정렬 한다. CREATE PROCEDURE `AdjustIdx`(p_idx int) BEGIN DELETE FROM table WHERE idx = p_idx; SET @new_idx = 0; UPDATE table SET idx = (@new_idx := @new_idx + 1) ORDER BY idx; END DELETE FROM table WHERE idx = p_idx; : 원하는 idx값의 컬럼을 삭제한다. SET @new_idx = 0; : 가상변수 @new_idx를 생성한다. UPDATE table SET idx = (@new_idx := @new_..
이전에 사용했던 노드 프로젝트를 클러스터모드로 변경했을때 예기치 못한 오류가 발생했다. 원인은 script 설정에 있었다. apps: [ { name: "app", script: "npm start", autorestart: true, instances: 0, exec_mode: "cluster", }, ], 이전 설정은 package.json에서 설정한 스크립트인 npm start를 실행했는데 클러스터모드에선 작동하지 않았다. script: "./app.js", // 현재 경로에 있는 app.js실행 이렇게 하면 오류가 사라지고 잘 작동한다.
top이란 명령어는 대표적인 리눅스 cpu 상태 명령어지만 좀더 정확한 상태를 보여주는 명령어가 따로 있다. mpstat apt get install sysstat yum install sysstat usr은 사용중인 어플리케이션의 점유율을 나타낸다. 보통 평균서버는 소수점을 왔다갔다하지만 10% 이상 넘어가면 이상이 있는걸로 간주된다. 메모리 사용율 명령어 ``` free -h total used free shared buff/cache available Mem: 7.5G 5.1G 137M 55M 2.3G 2.0G Swap: 4.0G 768K 4.0G -h를 붙일경우 단위가 붙어 더욱 명료하게 확인할 수 있다. ```디스크 상태 명령어 df -h Filesystem Size Used Avail Use%..
말 그대로 SSLPassPhraseDialog 명령어를 인식하지 못한다는 말로 이땐 mode_ssl 이란 패키지를 설치해야 한다. model_ssl 설치방법 RedHat 계열(centos, oracle linux...) sudo yum install mod_ssl debian 계열(ubuntu..) sudo apt get mod_ssl 필자는 서버의 운영체제가 CENTOS6 이였는데 지원이 중단된 관계로 제대로 설치가 되지 않았다. 그땐 mod_ssl.so 파일을 구하여 httpd-ssl.conf 파일에 직접 모듈을 불러온다. httpd-ssl.conf LoadModule ssl_module /usr/local/src/httpd-2.2.17/modules/ssl/mod_ssl.so Listen 443 아..