본문 바로가기
[파이썬으로 웹개발] wsgi, 내가 플라스크 개발하는데 그런 거까지 알아야 되니? 오늘날 거의 모든 파이썬 웹 프레임워크는 웹 서버와 통신하기 위한 (유일한 수단은 아니지만) 주요 수단으로 WSGI를 사용합니다. 이것이 Django, Flask 및 기타 많은 인기 있는 프레임워크가 수행하는 방식입니다. 웹은 월드 와이드 웹의 줄임말로, www, w3, web 등으로 쓰입니다. 1989년 3월 컴퓨터 과학자인 팀 버너스 리가 만들었습니다. 그리고 저작권의 모든 부분을 공개하면서 웹이라는 것이 폭발적으로 세계에 퍼지고 쓰이게 되었습니다. 1993년에 웹은 약 1,400만 명의 사용자와 100개의 웹사이트 가 있는 초기 단계였습니다. 페이지는 정적일 수 밖에 없는 상태였지만 최신 뉴스 및 데이터 같은 동적 컨텐츠를 계속해서 생성할 필요가 있었습니다. 이에 대한 응답으로 Rob McCool과.. 2021. 10. 19.
KPT 프로젝트 리뷰 :: "오늘뭐먹지?" 프로젝트 2,3주차 되짚어보기 사이트 URL을 바꿨습니다 :: 오늘 뭐 먹지? 퇴근 전에 슬쩍 배달 맛집 탐방하기!! 날씨와 기분에 맞춰 꺼내먹어요 www.mysmallmeal.shop KPT: Keep, Problem, Try의 약자로 회고 내용을 세 가지 관점으로 분류하여 회고를 진행한다는 것이 중요한 포인트이다. 이처럼 팀을 3개의 관점으로 나누면서, 회고를 진행하여, 꼼꼼하고 효율적인 회고가 이루어질 수 있게 된다. 🚗 KEEP: keep it on 서로의 코드를 리뷰해줬던 과정 과한 컨벤션을 지정하지 않고 기존 회사들의 컨벤션에서 차용한것 주석을 통해 코드를 설명해 준 것 -> 후반에는 좀 부족해지긴 했지만 적당한 수준 AWS ElasticBeanstalk 완전(까지는 아니고) 정복...! => 무중단배포(!!AWS!!) 몽.. 2021. 10. 19.
[AWS] AWS ELASTICBEANSTALK :: Flask 웹사이트 HTTPS로 배포하기 자동재배포 구성하기에 바로 이어서 씁니다. 일부 혹은 전체 기능이 사용자의 위치 정보를 필요로 하는 등 HTTPS 포트 제공이 필요한 경우에 이 내용 따라하시면 될 것 같습니다!! 앞의 글 내용대로 하니까 잘 배포가 되시던가요? 혹시 어떤 분들은 HTTP 프로토콜이라 특정 기능을 사용할 수가 없다며 배포 자체가 진행되지 않는 분들도 있으실 겁니다. 그런 경우에 맞춰서 HTTPS 배포 방법 알려드립니다. 일부분은 앞에 쓴 CloudFront 글과 좀 겹치는 부분이 있습니다. 처음 보시는 분들도 있다 생각하고 작성합니다. 1. DNS 관리 기능을 맡고 있는 AWS ROUTE 53에 접속합니다. 2. 왼쪽 네비게이션 탭에 따라 대시보드 아래의 호스팅영역에 들어가 주세요! 3. 호스팅 영역 생성(주황색 버튼!).. 2021. 10. 14.
[AWS] AWS ElasticBeanstalk(EB)으로 파이썬 플라스크 사이트 배포하기 프론트에 이어서 백 배포 팁도 공유합니다. 여기까지 작성하고 푸쉬한 워크플로우가 200개는 넘는다는 얘기가....ㅎㅎ 덜 똑똑하면 손발이 더 고생하는거쥬 조금이라도 도움이 되시면 좋겠군요!! 우선 제가 배포하려는 사이트는 마이크로 프레임워크인 플라스크로 서버단을 구성하고, 기본적인 html과 js,css로 만든 평범한 웹사이트입니다. 데이터베이스는 몽고디비를 사용 중이라 pymongo를 사용했습니다. 기본적인 requirements.txt는 다음과 같습니다. certifi==2021.5.30 chardet==4.0.0 click==7.1.2 Flask==1.1.4 Flask-Cors==3.0.10 gunicorn==19.10.0 idna==2.10 itsdangerous==1.1.0 Jinja2==2.1.. 2021. 10. 14.
[Github] CloudFront + Github 연동으로, 도메인+https+자동재배포까지 해결하자!! 이번 파트는 깃헙을 통해 해당 배포를 자동화시키는 부분입니다. 도메인 붙이기와 클라우드 프론트 배포 자체는 앞 게시물을 참고해주세요!!! 깃허브의 원격 리포지토리에는 생각보다 많은 보조기능이 있습니다. 이슈, 풀리퀘스트, 디스커션, 액션, 위키, 시큐리티 등등이요. 우리가 오늘 사용할 부분은 액션 탭입니다. 대표적인 클라우드들과 연결할 수 있는 기능들이 있고 우리가 사용하려는 아마존의 템플릿도 있네요. 클릭해서 한번 들여다 볼까요? 이런 템플릿을 제공해 줍니다. on: 부분은 어떠한 액션을 했을 때 이 프로세스들이 작동할 것인지를, env는 AWS 사용자 정보 등 원하는 기능을 수행하기 위한 환경 셋팅을, jobs는 그 작업 내용을 말합니다. 이 정도만 아셔도 큰 무리는 없구요. 좀 더 들여다 보면 ac.. 2021. 10. 12.
[AWS] CloudFront + Github 연동으로, 도메인+https+자동재배포까지 해결하자!! 아마존닷컴은 10년전 (1995년) 웹 서버와 데이터베이스 백엔드를 가지는 모놀리식(Monolithic) 애플리케이션으로 시작하였습니다. 5년전(2001년) 아마존은 주요한 아키텍쳐 변화가 있었는데 2 티어(tier)기반에서 서로 다른 애플리케이션 기능을 제공하는 분산 서비스 플랫폼으로 변화하였습니다. 여러분이 지금 Amazon.com의 첫화면에 들어온다면, 그 페이지를 생성하기 위해 100여개가 넘는 서비스를 호출하여 만들고 있습니다. 위의 인터뷰는 아마존의 CTO 버너 보겔스의 인터뷰 내용입니다. AWS는 아마존이 사용하던 인프라를 그대로 서비스로 만들어 놓은 것입니다. 그렇기에 아마존 닷컴의 아키텍처와 같이 블록처럼 조립해서 쓸 수 있게 서비스를 구성해 놓았습니다. 🔥 AWS를 사용한다는 것은 단순.. 2021. 10. 11.
내일배움캠프 타임어택 CRUD 구현하기 접근 - Python 사용자가 특정 게시글을 읽으려 함 Method: GET URL: /post/ pymongo: db.stock.update({"id":id}, {"$inc": {"read": +1}}) return list(db.stock.find({"id": id}, {"_id": False}))[0] request: - requirement: content, id, mod_date, read, reg_date, title response: body: { id: [ID], title: [제목], content: [내용], read: [조회수], reg_date: [작성일], mod_date: [수정일] } 사용자가 사이트에 접속함 Method: GET URL: /posts pymongo: return db.stock.f.. 2021. 10. 8.
우분투 18.04 몽고디비 세팅하기 기본적인 우분투 기초세팅 내용입니다. sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10 sudo apt-get update sudo apt-get install -y python3-pip sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1 wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add - echo "deb [ arch=amd64,arm64 ] http.. 2021. 10. 8.
우분투 18.04 초기 서버 설정하기 + 간단한 리눅스 명령어 모음 우분투 18.04 버전 서버를 새로 만든 후 보안을 강화하고 나중에 관리하기 편하도록 초기에 세팅해놓아야 할 몇가지 단계가 있습니다. 1단계 - 루트 계정으로 로그인하기 새로 설치된 서버에는 일반적으로 루트 계정만 설정되어 있고, 이것으로 처음 로그인을 하게 됩니다 .루트 사용자는 매우 광범위한 권한이 있는 관리자 계정이기 때문에 정기적으로, 장기적으로 사용하는 것은 권장하지 않습니다. 이는 루트 계정에 내재된 권한의 일부가 우연히 실수로라도 매우 파괴적인 변경을 할 수 있기 때문입니다. 이러한 이유로 권장되는 방법은 일반 시스템 사용자 계정을 만들고, 이 사용자에게 일시적으로 특정 제한 사항이 있는 관리 명령문을 실행할 수 있도록 sudo 라는 권한을 부여하는 것입니다. ssh -i [SSH키가 위치한.. 2021. 10. 8.
[JavaScript] 모든 제이쿼리 함수를 바닐라로 만들기 실험결과 프로젝트에서 다른 팀원들의 이해를 돕기 위해(실력 향상 목표로) 제이쿼리의 사용을 제한해서 사용했다. 그리고 팀원들이 작성하신 제이쿼리 문법이랑 섞이면서 어떤 곳은 제이쿼리 어떤 곳은 자바스크립트로 작성된 JS 파일이 됐다. 그리고 어떤 api는 $.ajax로, 어떤 api는 async/fetch로, 어떤 것은 fetch.then()으로 작성을 해서 다소 건드리기 난감한 코드 덩어리를 가지고 있었다. 1차 프로젝트 발표 이후 개선점을 짚으면서 우리 팀은 라이트하우스 스코어에 주목했고 하루 이틀 만에 퍼포먼스를 제외한 나머지 항목들은 올릴 수 있는 최대한까지 올려놓았다. 그런데 퍼포먼스는 진짜 뭘 해도 줄어들지 않았고, 폰트를 미리 다운받아 사용한다던가 이미지의 크기를 받을 때부터 제한해서 받는다던가 하는.. 2021. 10. 6.
OG 태그가 무엇이냐면 오픈 그래프입니다. 제목부터 답을 부르고 시작하는 싱거운 글입니다. 오픈 그래프, 들어보셨나요? 아니면 og:image 이런 태그는 보신 적 있으신가요? 일반적인 웹사이트를 카카오톡이나 페이스북/트위터 등에 공유하면 (티스토리도 마찬가지) 나는 URL만 그대로 갖다붙였을 뿐인데 저절로 페이지의 내용과 제목, 그리고 썸네일까지 불러올 때가 있습니다. 작성자는 따로 이 내용에 대해 설명할 필요가 없어지죠! 네 이것이 og 태그입니다. 평소에 접속하는 사이트에서 개발자도구 혹은 소스보기 탭에서 태그 속의 태그들을 살펴보세요. 메타태그는 HTML 문서의 태그 내에 입력하는 특수한 태그로, 사이트의 디자인이나 기능에는 거의 영향을 미치지 않고, 해당 문서가 어떤 내용을 담고 있고, 문서의 주요 키워드는 무엇이며, 누가 만들었는지 어.. 2021. 10. 6.
[파이썬으로 웹개발] 프로젝트 유지보수 및 발전 방향 웹 프로그래밍 A-Z 심화에서 배운 내용 적극활용 웹개발종합반 심화과정의 내용은 크게는 플라스크의 의존성 패키지인 진자템플릿 (서버사이드 렌더링) 활용하기 라우팅 구현해 멀티페이지 사이트 만들기 외부 api 사용해 지도, 로그인 등 구현하기 JWT 모듈을 이용한 몽고디비 로그인/회원가입 구현 셀레니움을 이용한 고급 웹제어 기술 (웹스크래핑) 1차 프로젝트의 POC 구현 대상에서 제외된 기능 추가 기술적으로 혹은 시간적으로 부족해 구현하지 못한 기능들을 구현해보자 확실하게 사용자를 구분하고 다른 디바이스로 접속했을 때도 인식할 수 있도록 로그인/회원가입 구현 지나치게 api에 의존적인 뷰를 개선하기 위해 서버사이드 렌더링 증가 (but 속도 개선) 엔터테인 요소로 삽입한 룰렛을 onload 방식이 아닌 o.. 2021. 10. 5.