Gravatar호환성 문제 해결

직접 구현해서 해결

1


2



Heroku와 Gunicorn

11



Publishing Our Flask Website


.gitignore 파일 추가하기

  • posts.db파일이나 venv폴더, 숨겨진 Pycharm .idea폴더가 업로드 되는 것을 방지할 수 있음.



Git을 사용해 프로젝트 버전 관리하기

  • 프로젝트의 버전 관리 활성화

3


  • Git선택

  • 추적되지 않은 파일 추가하고 커밋하기

4


  • 작업이 성공적으로 완료되면 Git Log 패널에서 첫 번째 커밋 내역을 확인할 수 있다

5



환경 변수를 사용해 민감한 정보 저장하기

  • os모듈 임포트
  • 코드 대체
app.config['SECRET_KEY'] = '8BYkEfBA6O6donzWlSihBXox7C0sKR6b'
 app.config['SECRET_KEY'] = os.environ.get('FLASK_KEY')

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///posts.db'
 app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get("DB_URI", "sqlite:///posts.db")



Gunicorn으로 WSGI 서버 설정하기

  • 앱 실행 시 개발 모드에서 프로덕션 모드로 전환해 웹사이트를 시작할 때 WSGI 서버를 사용해야 한다는 경고가 표시 됨

6


  • 일반적인 웹 서버는 파이썬 애플리케이션을 실행할 수 없으므로, Flask 앱을 실행하기 위해 특별한 유형의 서버(WSGI)가 생성됨

  • WSGI서버의 핵심 기능은 파이썬 Flask 애플리케이션과 호스트 서버 간의 언어와 프로토콜을 표준화하는 것

  • requirements.txtgunicorn==21.2.0추가하기
  • gunicorn 서버 정보, 앱 이름, Flask라는 설정 파일을 사용


Procfile 생성하기

  • 최상위 폴더에 Procfile.생성
  • Procfile에 web: gunicorn main:app작성 : 호스팅 제공자가 HTTP요청을 수신할 수 있는 web작업자를 생성.
    Procfile은 웹 앱이 gunicorn을 사용하도록 명시함
    Procfile은 main.py파일이 app오브젝트라는 것을 명시
    ⇨ 호스팅 제공자가 앱의 진입점을 알고 어떤 앱이 호출되는지 알 수 있다.

  • 변경 사항 커밋



Github에 원격 저장소 푸시하기

  • PyCharm에 GitHub 연결하기

7


  • GitHub에 원격 저장소 푸시하기
    Git을 사용하면 PyCharm에서 VCS메뉴가 ‘Git’으로 표시됨
    Git -> GitHub -> Share project on Github를 선택해 원격 저장소에 코드를 푸시

8


  • GitHub 사이트에서 프로젝트 확인 가능
    9



호스팅 제공 서비스에 회원가입하고 웹 서비스 생성하기

  • 호스팅 제공 서비스 계정 생성하기
    앱을 인터넷에 배포하기 위해 다양한 호스팅 제공자를 사용할 수 있다.
    호스팅 제공자마다 기능과 가격 정책이 다르며 가격 정책이 변경될 수 있음

10


  1. 호스팅 제공 서비스 계정 생성하기
  2. 호스팅 서비스에 GitHub 저장소 연결하기
  3. 호스팅 서비스에 PostgreSQL 데이터베이스 설정하기
  4. 호스팅 서비스에 환경 변수 키-값 쌍 저장하기



SQLite 데이터베이스를 PostgreSQL로 업그레이드하기

  • SQLite는 파일 기반 데이터베이스이다.
    데이터베이스 코드를 작성하고 디버깅할 때는 DB Viewer를 사용해 간단하게 SQLite파일을 열어 데이터를 확인할 수 있어서 편리했음
  • 하지만 호스팅 제공자를 통해 배포한 후에는 파일 경로가 24시간 등의 주기에 따라 변하기 때문에 불편함. 메일 데이터베이스가 초기화될 수 있으므로 불편을 겪는 사용자가 생김
  • 따라서 수많은 데이터 항목을 처리하고 사용자에게 안전하게 데이터를 전달할 수 있는 PostgreSQL로 업그레이드 하기
  1. 웹사이트 메뉴에서 새 PostgreSQL 데이터베이스 생성
  2. 내부 데이터베이스 URL 복사하기 : 데이터베이스 생성 후 정보탭에서 Internal Database URL을 확인
  3. SQLALCHEMY_DATABASE_URI 환경 변수 설정하기
    • 웹서비스 Environment설정에서 main.py에서 사용하는 키 이름과 동일한 환경 변수 생성
    • 키 값에 내부 데이터베이스 URL 붙여 넣기
      키 값 앞부분 postgrespostgresql로 변경
💡SQLite을 Postgres로 문제없이 전환할 수 있는 이유 : 
SQLAlchemy와 함께 psycopg 패키지를 사용하기 때문 
psycopg 모듈은 널리 사용되는 파이썬용 PostgreSQL 데이터베이스 어댑터이다.  
(requirements.txt 의 목록에 psycopg 패키지가 들어 있음)  

12


file : day-70-starting-files-blog-for-deployment