Azure에 배포

완료됨

이 연습에는 샌드박스가 필요합니다. 샌드박스를 통해 별도 비용이 없는 리소스에 액세스할 수 있습니다. 개인 구독에는 요금이 청구되지 않습니다.

샌드박스는 Microsoft Learn 학습을 완료하는 데만 사용할 수 있습니다. 다른 이유로 사용하는 것은 금지되어 있으며, 사용할 경우 샌드박스 액세스 권한이 영구적으로 손실될 수 있습니다.

사이트를 공개적으로 사용할 수 있도록 하려면 Azure에 배포합니다. Visual Studio Code에서 Azure App Service 확장을 사용하여 프로세스를 간소화합니다.

Azure App Service 확장 설치

Visual Studio Code에 Azure App Service 확장을 설치하여 시작합니다.

  1. Visual Studio Code에서 확장 아이콘을 선택합니다.

    Screenshot showing the Extensions icon.

  2. 확장 검색 입력란에 App Service를 입력합니다.

  3. Azure App Service에서 설치를 선택합니다.

Azure App Service 확장이 이미 있는 경우 최신 버전으로 업데이트되었는지 확인합니다. 확장 페이지에서 마지막으로 업데이트된 날짜를 참조하세요. 최신 버전으로 작업하는 경우 App Services 노드가 있는 RESOURCES 노드가 표시됩니다.

애플리케이션 배포

시작 리포지토리를 복제하는 단계를 수행했을 때 VS Code를 열기 전에 디렉터리를 스타터 폴더로 변경해야 합니다. 스타터 디렉터리에는 App Service에 Django 웹앱을 배포하고 있음을 알리는 manage.py 파일이 포함되어 있습니다.

  1. Visual Studio Code 왼쪽에 있는 도구 모음에서 Azure 아이콘을 선택합니다.

    Screenshot showing the Azure icon.

  2. 로그인을 선택하여 샌드박스를 만드는 데 사용한 계정으로 Azure에 로그인합니다.

  3. Azure 확장의 RESOURCES 표시줄에 마우스를 가리키고 +(더하기 기호) 아이콘을 선택하여 리소스를 만듭니다.

    Screenshot showing the App Service bar. The Deploy icon is highlighted.

  4. 구독을 선택하라는 메시지가 표시되면 Azure 구독을 선택합니다.

  5. App Service 웹앱 만들기...를 선택합니다.

    Screenshot showing how to create a new web app.

  6. 애플리케이션의 고유한 이름을 지정하세요.

    Screenshot showing where to provide an app name.

  7. 런타임 스택으로 Python 3.9를 선택합니다.

    Screenshot showing the runtime stack selection.

  8. 가격 책정 계층을 선택합니다.

    Screenshot showing the the pricing tier selection.

    확장은 웹 애플리케이션을 만듭니다. 이 프로세스는 몇 분 정도 걸립니다.

  9. 웹앱을 만들 때 App Service 웹앱을 배포하라는 메시지가 표시되면 배포를 선택합니다.

    Screenshot showing the deployment configuration option.

    앱을 배포하라는 알림을 놓쳤거나 알림을 닫은 경우 만든 App Service를 찾아서 배포하고 마우스 오른쪽 단추로 클릭한 다음, 웹앱에 배포를 선택하여 배포할 수도 있습니다.

이제 사이트가 배포됩니다.

데이터베이스 서버 만들기

이제 PostgreSQL 데이터베이스를 만듭니다.

  1. Azure 확장의 RESOURCES 표시줄에 마우스를 가리키고 +(더하기 기호) 아이콘을 선택하여 리소스를 만듭니다.

    Screenshot of the Databases extension, showing the Create Server icon.

  2. 구독을 선택하라는 메시지가 표시되면 Azure 구독을 선택합니다.

  3. 데이터베이스 서버 만들기...를 선택합니다.

    Screenshot showing how to create a new database server.

  4. Azure Database 서버의 경우 PostgreSQL 유연한 서버를 선택합니다.

    Screenshot showing a list of available database servers.

  5. 데이터베이스 서버의 고유한 이름을 입력합니다.

    중요

    데이터베이스 서버에 사용하는 이름을 메모해 둡니다.

  6. Postgres SKU 및 옵션을 선택합니다.

  7. 관리 사용자의 이름에 shelter_admin을 입력합니다.

  8. "86i^z5#emSk6wu3t10nC*"와 같은 보안 암호를 입력합니다.

    중요

    암호를 만들 때 달러 기호($)를 사용하지 마세요. 이 기호에 의해 Python 연결에 문제가 발생할 수 있습니다. 사용하는 암호를 메모해 둡니다.

  9. 확인을 위해 암호를 두 번 입력합니다.

  10. 리소스 그룹의 경우 웹앱이 만들어진 것과 동일한 리소스 그룹을 선택합니다.

    웹앱을 만드는 데 사용되는 리소스 그룹 이름 및 위치를 찾으려면 Azure 확장에서 App Service를 찾아 이름을 마우스 오른쪽 단추로 클릭하고 보기 속성을 선택합니다. “id” 키에서 리소스 그룹 이름은 “/resourceGroups/” 다음에 나오는 부분입니다. “위치” 키는 위치를 표시합니다.

    App Service의 이름을 마우스 오른쪽 단추로 클릭하고 포털에서 열기를 선택하여 리소스 그룹 이름과 위치를 찾을 수도 있습니다.

  11. 새 리소스의 위치에 대해 리소스 그룹 및 웹앱에 동일한 위치를 선택합니다.

    중요

    서로 통신하는 여러 Azure 리소스를 만드는 경우 항상 동일한 지역에 배치합니다. 이 배치를 사용하면 최상의 성능이 보장됩니다.

이제 서버가 생성됩니다. 이 프로세스는 몇 분 정도 걸립니다.

개발 환경에서 액세스를 허용하는 데이터베이스 방화벽 규칙 만들기

데이터베이스를 만든 후에는 개발자 환경이 데이터베이스에 액세스할 수 있도록 방화벽 규칙을 만들어야 합니다. 데이터베이스가 있을 때까지 기다린 후 다음 단계에 따라 규칙을 만듭니다.

  1. F1 또는 키 조합 Ctrl + Shift + P를 사용하여 Visual Studio Code 명령 팔레트를 엽니다.

  2. "PostgreSQL: 방화벽 구성"을 검색하고 선택합니다.

    Screenshot showing the firewall rule field.

  3. 방화벽을 적용할 리소스를 묻는 메시지가 표시되면 만든 Postgres 데이터베이스를 선택합니다.

  4. 계속할지 묻는 마지막 대화 상자에 추가할 IP 주소가 표시됩니다. Yes를 선택합니다.

규칙을 추가하는 데 몇 분 정도 걸립니다. VS Code 알림 창에서 상태를 확인합니다.

데이터베이스 서버에서 데이터베이스 만들기

이제 App Service를 구성하고 서버를 만들었으므로 Postgres Database 서버에서 데이터베이스를 만들 수 있습니다.

  1. Azure Tools 확장의 RESOURCES에서 PostgreSQL 서버(유연한 서버) 노드를 확장하고 사용자가 만든 서버를 찾습니다.

  2. 데이터베이스 서버의 이름을 마우스 오른쪽 단추로 클릭하고 데이터베이스 만들기를 선택합니다.

    Screenshot showing the Create Database selection.

  3. shelters를 입력합니다.

데이터베이스가 생성됩니다.

App Service에서 데이터베이스 서버에 대한 액세스 허용

이 연습에서는 Azure Database for PostgreSQL 유연한 서버에 연결하기 위해 Azure App Service에서 호스트되는 개 보호소 웹앱도 필요합니다. Azure 내에서 애플리케이션이 데이터베이스 서버에 연결하려고 시도하면 방화벽에서 Azure 연결이 허용되는지 확인합니다. 위에서는 로컬 환경에서 연결을 허용했으며 이제 App Service의 연결도 허용해야 합니다.

  1. VS Code에서 Azure Tools 확장의 RESOURCES에서 PostgreSQL 서버(유연한 서버) 노드를 확장하고 사용자가 만든 서버를 찾습니다.

  2. 데이터베이스 서버의 이름을 마우스 오른쪽 단추로 클릭하고 포털에서 열기를 선택합니다.

  3. Postgres Server의 네트워킹 리소스를 선택합니다.

  4. 네트워킹 탭에서 포털의 Azure 내 모든 Azure 서비스에서 이 서버로 퍼블릭 액세스 허용 옵션을 선택하고 저장을 선택합니다.

    Screenshot showing the how to allow public access to database server.

웹앱에 대한 애플리케이션 설정 구성

App Service는 애플리케이션 설정을 사용하여 환경 변수를 구성합니다. 설정은 데이터베이스 연결 문자열과 같이 코드에 입력하지 않아야 하는 정보를 저장하는 편리한 방법입니다.

  1. App Service에서 샌드박스 구독을 펼칩니다. 그런 다음 애플리케이션을 펼칩니다.

  2. 첫 번째 애플리케이션 설정을 만들려면 애플리케이션 설정을 마우스 오른쪽 버튼으로 클릭한 다음 새 설정 추가를 선택합니다.

    Screenshot showing how to add a new setting.

  3. 첫 번째 필드에 DBUSER 이름을 입력합니다.

  4. 두 번째 필드에 shelter_admin 값을 입력합니다.

  5. 이전 단계를 반복하여 나머지 설정을 만듭니다.

    속성
    DBHOST <The server name you created previously>
    DBPASS <The password you created previously>
    DBUSER shelter_admin
    DBNAME shelters
    SECRET_KEY <Generate a secure password>

    참고

    DBHOSTDBPASS 값을 이 연습의 앞부분에서 만든 값으로 바꿉니다. SECRET_KEY에 대해 새 암호를 만듭니다.

이제 모든 필수 환경 변수가 앱 서비스에서 만들어집니다.

스키마 및 슈퍼 사용자 만들기

배포의 마지막 단계는 데이터베이스를 설정하는 것입니다. 로컬 개발에서는 python manage.py migratepython manage.py createsuperuser를 실행하여 데이터베이스 스키마와 슈퍼 사용자를 만듭니다. Azure에서도 동일한 작업을 수행합니다.

Secure Shell(SSH)을 사용하여 Azure의 웹 서버에 연결합니다. 아래에서 보듯이 Visual Studio Code에서 연결을 설정할 수 있습니다.

  1. App Service 확장 프로그램에서 앱 서비스를 마우스 오른쪽 버튼으로 클릭한 다음 SSH into Web App을 선택합니다.

    Screenshot of the menu for SSH.

    Azure의 웹 서버에 SSH 연결이 설정됩니다. 이 프로세스는 몇 분 정도 걸릴 수 있습니다. Visual Studio Code에 터미널 창이 표시됩니다. 이 터미널은 웹 서버에 관한 SSH 연결입니다. 연결하는 데 문제가 있는 경우 아래 문제 해결 단계를 참조하세요.

    중요

    데이터베이스에 대해 SSL을 사용하도록 설정해야 한다는 오류 메시지가 표시되면 모든 환경 변수를 올바르게 만들었는지 확인합니다.

  2. SSH 터미널 창 내에서 다음 명령을 실행하여 적절한 라이브러리가 설치되어 있는지 확인하고 데이터베이스를 만듭니다.

    # Run database migrations
    python manage.py makemigrations dog_shelters
    python manage.py migrate
    
  3. 다음 명령을 실행하여 슈퍼 사용자를 만듭니다.

    python manage.py createsuperuser
    
  4. 슈퍼 사용자의 이름, 메일 주소 및 암호를 제공합니다.

  5. 슈퍼 사용자를 만든 후 exit 명령을 실행하여 연결을 닫습니다.

이제 데이터베이스가 Azure에서 구성되었으며 사이트에 관한 슈퍼 사용자가 있습니다.

SSH 문제 해결

VS Code에서 SSH에 연결할 수 없는 경우 몇 가지 단계를 시도해 볼 수 있습니다.

  • App Service에 대한 Azure Portal 페이지로 이동하여 SSH에 액세스합니다. VS Code에서 App Service의 이름을 마우스 오른쪽 단추로 클릭하고 포털에서 열기를 선택합니다. App Service에 대한 포털 페이지에서 왼쪽 리소스 창의 SSH 리소스로 이동합니다.

  • 웹앱을 호스팅하는 App Service가 올바르게 시작되었는지 확인합니다. 배포 오류 또는 코딩 문제가 있는 경우 App Service가 시작되지 않아서 그리로 SSH할 수 없습니다. App Service 대한 포털 페이지에서 왼쪽 리소스 창의 문제 진단 및 해결로 이동하여 문제를 찾습니다.

  • App Service에서 SSH에 대해 자세히 알아보세요.

사이트로 이동

이제 모든 항목을 배포하고 구성했으므로 Azure에서 웹 사이트를 볼 수 있습니다.

App Service 확장에서 사이트 이름을 마우스 오른쪽 단추로 클릭한 다음 웹 사이트 찾아보기를 선택합니다.

Screenshot showing where to select Browse Website.

이제 웹 사이트가 표시됩니다. 기본 페이지에는 대피소가 표시 되지 않습니다. 대피소를 추가하려면 다음을 수행합니다.

  1. 웹 사이트 URL "/admin"을 추가하여 사이트의 Django 관리 부분으로 이동합니다.

    위에서 만든 수퍼 사용자 이름 및 암호를 사용하여 인증하라는 메시지가 표시됩니다.

  2. 대피소를 추가하고 메인 페이지로 다시 이동하면 해당 대피소에 개를 등록할 수 있습니다.

사이트의 스크린샷 예는 다음과 같습니다.

Screenshot showing Django admin and how to add shelters.

사이트에 존재하지 않는 위치로 이동하려고 하면 DEBUG이 비활성화되어있기 때문에 일반 찾을 수 없음 오류가 표시됩니다.

이제 Azure에 웹 사이트를 배포했습니다.