웹 프로젝트 (IBAS)

    [서버 장애 (2021-09-13 12:22)] uwsgi  --ini 과 linux effectiveUser 에 대한 문제

    [서버 장애 (2021-09-13 12:22)] uwsgi --ini 과 linux effectiveUser 에 대한 문제

    상황 : 프로젝트 폴더를 옮긴 후 기존의 프로젝트 폴더를 삭제하자마자 발생 : 예산 내역과 명예의 전당 페이지 렌더링 중에 not found file or directory 오류 발생 해결 : 2021-09-13 13:15 : uwsgi 프로세스 ini 시, 기존의 작동하던 프로세스가 꼬여서 새로운 프로세스가 nginx와 연결되지 못함. 기존의 프로세스가 nginx 와 붙은 채로 떨어지지를 않음 : uwsgi 관련 모든 프로세스 강제 종료 후 올바른 권한의 계정으로 새롭게 ini 해주었음 분석 : uwsgi ini 시 프로세스의 effective user 권한이 설계와 다르게 움직이면서, 그에 따른 파일들의 권한도 꼬이게 됨.. 추가 방향 : 서버 권한 및 프로세스 effective user 권한을 분석..

    [Django 웹 프로젝트] 7. 유지 보수를 위한 새로운 인가인증 체계 고민 (2021-10-31)

    [Django 웹 프로젝트] 7. 유지 보수를 위한 새로운 인가인증 체계 고민 (2021-10-31)

    https://github.com/InhaBas/Inhabas.com/discussions/77 새로운 권한설계 고민 · Discussion #77 · InhaBas/Inhabas.com — 기존 권한 검사 문제점 — 유저마다 역할과 그룹이 있는데, 어떤 url 요청이 있을 때마다 해당 유저의 역할과 그룹을 확인하는 함수를 이용했다. 권한 관련 설정이 초기에 계획했던 것보다 더 github.com — 기존 권한 검사 문제점 — 유저마다 역할과 그룹이 있는데, 어떤 url 요청이 있을 때마다 해당 유저의 역할과 그룹을 확인하는 함수를 이용했다. 권한 관련 설정이 초기에 계획했던 것보다 더 복잡해지면서, if 문으로 추가되는 코드량이 점점 많아졌다. 현재는 유저 역할이나 그룹에 대한 변경이 필요할 시에, 거..

    [Django 웹 프로젝트] 6. 유지 보수를 위한 새로운 아키텍처 고민 (2021-10-21)

    — 현재 문제점(2021-10-21) — views, DB, 권한간 의존성이 커서 서로 종속적이다. 하나가 수정될 시에 다른 여러곳에 영향을 미칠텐데 그 영향을 최소화할 필요가 있다. (DB 와 views) spring의 dao, domain, dto 와 같은 형태 도입이 필요해보임 view 안에서 db 속성값을 기술하니, 가독성이 떨어짐 db 최적화 등의 이유로 추후 db 모델을 변경할 때, 모든 views 에서 일일히 변경해야함. 다 완벽하게 찾을 수 없음. 장고 ORM 쿼리를 views 에서 직접 날리는 것 안좋은 듯. (DB 와 forms) 현재는 클라이언트 사이드를 장고 템플릿 언어로 해결하고 있지만, 향후 vue로 분리될 것을 생각하면, forms 는 vaildation의 역할만 하게 됨. f..

    [Spring Boot] 4. 로컬 개발을 위한 CORS 설정 - (1) w3c recommendation

    공식 레퍼런스 https://fetch.spec.whatwg.org/ [프론트 단에서의 비동기 통신 요청] - XMLHttpRequest 객체를 이용한 AJAX(AsynchronousJavaScript And XML (en-US)) 프로그래밍을 용이하게 하기 위해 jquery-ajax/fetch/axios 를 사용함. [서버 단에서의 비동기 통신 응답] - api 엔드포인트에서 적절한 응답을 보내주면 되는데, 이 때 CORS 정책을 잘 지켜주어야 한다. 1. CORS(Cross Origin Resource Sharing)란? - Origin 이 다른 경우에 자원을 주고 받을 수 있도록 하는 http 통신 프로토콜. - Origin 은 https://naver.com, http://localhost:808..

    [Django 웹 프로젝트] 5. static file name hashing 하기 (2021-09-09)

    [배경] 당시에 프론트 단의 js validation 로직을 구현하고 서버에 적용을 시켰는데, 적용된 파일이 제대로 작동하지 않는 현상이 발생했다! 일일이 서버의 파일 수정 -> 빌드 -> 재배포 하면서 계속 디버깅해본 결과,, static file 이 브라우저에 의해 캐시되고 있어서 변경된 js 파일이 적용되지 않았던 것이다. 파일 이름은 동일하니까, 브라우저 입장에서는 해당 파일이 변경되었는지 알 수 없다. [가능한 대처 방안] 이 경우에는 사용자가 직접 쿠키를 지우거나, ctrl+f5 눌러서 새로 정적파일을 받아오거나 파일 이름에 해시값을 붙여, 배포 시에 변경된 파일 이름만 해시값을 변경해주는 방식 파일 이름에 태그를 붙이는 방식인데, naver 메인페이지 html 헤더 보니까, 태그에 수정날짜를..

    [Django 웹 프로젝트] 4. 댓글(vue.js)을 django 에 붙이기 (2021-08-03)

    [배경] 댓글도 django 에서 url 엔드포인트 잡고 작업했더니, 댓글을 CRUD 가 일어날 때마다 전체 화면 렌더링이 다시되었다. 팀원들 모두 그 때 당시에는 이게 불편하다고 느꼈는데, 아무도 해결할 수 있는 사람이 없어보여서, 내가 뚝딱 해버리자는 마인드로 시작했다. 왜냐하면 django 로 템플릿 렌더링까지 다 해야하는 상황에서, 프론트팀 3명은 웹 디자인만 해주고, 백엔트팀(선배 한명과 나)이 모든 기능을 개강전까지 다 마무리를 해야하는 시기였다. 백엔드 쪽에서는 웬만한 기능은 다 구현이 되었고, 자잘한 버그와 프론트쪽에서의 폼 유효성 검사 등을 추가해야했었다. 진짜 심적으로 엄청 급하게 했던 기억이 있다. 첫날에 검색하면서 좀 알아보다가 비동기 , Restful 등의 개념을 알게 되었고, 댓..

    [Spring Boot] 3. OAuth2 인증 설계 및 구현 (feat. Security FilterChain 분석)

    [Spring Boot] 3. OAuth2 인증 설계 및 구현 (feat. Security FilterChain 분석)

    이 게시글은 당시에 고민했던 내용으로, securityFilterChain 을 파헤치기 아주 좋은 공부였습니다. 현재는 인증 모듈을 구현 완료하여, https://github.com/InhaBas/Inhabas.com-api/wiki/Auth-module-document 에 자세히 작성하여 놓았습니다. 아래의 사진과 같이 OAuth2 인증을 통해 로그인/회원가입이 가능하도록 되어있다. 이를 spring 에서 구현해야하기 때문에, spring security 및 oauth2 인증 관련하여 공부했다. [spring security 구조] 아래 깃헙 이슈에서 자세히 기술해놓았다. spring security 구조를 파헤쳐보자 · Issue #48 · InhaBas/Inhabas.com-api 슬슬 소셜로그인도..

    [Spring Boot] 2. 서버 개발 환경 분리 (Spring Cloud Config 적용) 및 배포 자동화

    [배경] 기존의 장고 프로젝트를 배포서버와 개발서버로 나누어서 운영했음. ( 테스트 환경 설정파일 / 개발 서버 환경 설정파일 / 배포서버 환경 설정 파일 ) 모두 달랐다. 외부에 노출되면 안되는 정보들이 있어서 github 에 무턱대고 업로드 할 수가 없었다. => 로컬에서 직접 관리했다. 하나의 리눅스 서버 안에서, 유저를 나누어서 환경을 분리했다.. 프로젝트 하위에 rsync 로 직접 설정파일을 넣어주고 있었다. 빠르게 환경 설정 파일을 변경해야할 일들이 생겨서, 직접 리눅스 서버 파일을 수정했다가 나중에 내 로컬 원본을 수정했다 하면서, 설정파일 관리가 힘들어짐. 동아리 예산 문제, 학교 네트워크 문제 등으로 서버를 옮기거나 재시작해야하는 등 프로젝트를 새로운 환경에서 재빌딩하는일이 종종 있었는데..