shoppingmall(2)S 3メディアサーバの設定


データベース・サーバを一元化する理由:複数のWebサーバ・インスタンス間でデータを共有する必要がある=>共有する必要があるファイル独立したファイル・サーバを使用する
アマゾンs 3を使用して
  • メディアファイル
  • を共有
    s 3を設定して
  • メディアファイルと静的ファイルを共有

    (1)S 3設定


  • S 3は、データベースやWebサーバの一例としてではなく、パケットとして用いられる

  • 作成したパケットを倉庫で使用するには、IAMがユーザーの追加と権限の設定を行う必要があります.

  • AWS上部メニューから「サービス」をクリック-IAMサービスを移動-IAMサービスをクリック-ユーザーを追加-アクセスタイププログラミングアクセスチェックのため-グループを作成-グループ名を設定し、次のようにフィルタを選択します.
  • で生成されたグループを選択し、「レビュー」画面に特別な内容がない場合は、「ユーザーの作成」ボタンをクリックして
  • を完了します.

    ダウンロード
  • アクセスキー
  • (2)静的ファイルに関する設定

  • 倉庫プロジェクトには、s 3をファイルストレージとして使用できる2つのモジュール
  • がインストールされています.
    boto 3はS 3を用いたモジュールである
    pip install boto3
    django-storagesは各種リポジトリ用のモジュールです
    pip install django-storages
    =>この2つのモジュールがインストールされている場合、django-storagesでboto 3リポジトリを使用し、boto 3でアマゾンS 3をリポジトリに設定してメディアサーバとして使用できます.
    => SETTINGS.PYの修正
    
    AWS_ACCESS_KEY_ID = 'IAM 액세스 키 ID'
    AWS_SECRET_ACCESS_KEY = '비밀 액세스 키'
    AWS_REGION = 'ap-northeast-2'
    AWS_STORAGE_BUCKET_NAME = 'django-onlineshop'
    AWS_S3_CUSTOM_DOMAIN = '%s.s3.%s.amazonaws.com' % (AWS_STORAGE_BUCKET_NAME, AWS_REGION)
    AWS_S3_OBJECT_PARAMETERS={
        'CacheControl' : 'max-age=86400',
    }
    AWS_DEFAULT_ACL = 'public-read'
    AWS_LOCATION = 'static'
    
    STATIC_URL = 'https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
    STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
    
  • AWS XXXの変数はboto 3モジュール
  • を必要とする
  • awsのs 3関連API管理ファイル
  • を使用
    =>静的ファイルに関する設定を完了し、collectstaticコマンドを実行してローカルの静的ファイルをs 3にアップロードします=>このコマンドを実行して静的ファイルを1つの場所に集約します=>現在s 3にアップロードする方法で静的ファイルを収集します
    python manage.py collectstatic
    静的ファイル収集が完了したら、s 3サービスページにアクセスしてアップロードされたファイルを表示します.
    =>先ほど作成したパケットの内容を表示します.静的ファイルが表示されます.ファイルとフォルダのリストを表示すると、静的ファイル収集が完了していることがわかります.

    (3)メディアファイルに関する設定


  • INSTALLED APPSにストレージを追加し、メディアファイルをs 3にアップロードして管理する

  • DEFAULT FILE STORAGE変数にカスタムストレージクラスを設定してメディアファイルのファイルストレージを設定する

  • settings.理由を表す
  • DEFAULT_FILE_STORAGE = '프로젝트명.asset_storage.MediaStorage'
  • カスタムストレージクラスパスをプロジェクト名/sasset storageと命名します.ファイルをpyに設定しました.パスにファイルを作成し、MediaStorageクラス
  • を作成してください.
    from storages.backends.s3boto3 import S3Boto3Storage
    class MediaStorage(S3Boto3Storage) :
    	location = 'media'
        file_overwrite = False
  • メディアファイルの設定が完了し、現在アップロードされている画像ファイルはすべてs 3
  • にアップロードされます.