亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

ホームページ バックエンド開発 PHPチュートリアル パート PHP (Laravel) アプリケーションを Amazon ECS にデプロイする

パート PHP (Laravel) アプリケーションを Amazon ECS にデプロイする

Oct 20, 2024 am 06:07 AM

チュートリアル シリーズの最初の部分では、PHP (Laravel) アプリケーションを Amazon ECS にデプロイする手順を説明します。まず、Docker イメージを作成し、それを Amazon ECR にプッシュし、ECS タスク定義、ECS クラスター、ECS サービスを作成し、ドメイン名をサービスに接続します。

Docker と ECR の使用

Dockerfileとnginx構(gòu)成を作成する

git リポジトリのルートに、次の內(nèi)容の Dockerfile を作成します。

# Use the official PHP-FPM image as the base
FROM public.ecr.aws/docker/library/php:fpm

# Define a user variable
ARG user=www-data

# Install system dependencies and PHP extensions
RUN apt-get update && apt-get install -y \
    git curl \
    libpng-dev \
    libonig-dev \
    libxml2-dev \
    zip unzip libzip-dev \
    nginx \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && docker-php-ext-install \
        pdo_mysql \
        mbstring \
        exif \
        pcntl \
        bcmath \
        gd \
        zip

# Install Composer
COPY --from=public.ecr.aws/composer/composer:latest-bin /usr/bin/composer /usr/bin/composer

# Create a system user for running Composer and Artisan commands
RUN mkdir -p /home/$user/.composer && \
    chown -R $user:$user /home/$user

# Copy Nginx configuration and entrypoint script
COPY ./docker/default.conf /etc/nginx/sites-enabled/default
COPY ./docker/entrypoint.sh /etc/entrypoint.sh

# Make the entrypoint script executable
RUN chmod +x /etc/entrypoint.sh

# Set the working directory
WORKDIR /var/www

# Copy the application code
COPY --chown=www-data:www-data . /var/www

# Install PHP dependencies
RUN composer install

# Expose port 80
EXPOSE 80

# Define the entrypoint
ENTRYPOINT ["/etc/entrypoint.sh"]

docker という名前の新しいフォルダーを作成し、その中に次の 2 つのファイルを配置します。

  • ドッカー/エントリーポイント.sh
#!/usr/bin/env bash

# Start Nginx service
service nginx start

# Run Laravel migrations
php artisan migrate --force

# Create symbolic link for storage
php artisan storage:link

# Clear and optimize the application cache
php artisan optimize:clear
php artisan optimize

# Start PHP-FPM
php-fpm
  • docker/default.conf
server {
    listen 80 default_server;
    index index.php index.html;
    server_name localhost;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/public;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;

        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_hide_header X-Powered-By;

        # Tells PHP we're using a reverse proxy with TLS termination
        fastcgi_param HTTPS on;
        fastcgi_param HTTP_X_FORWARDED_PROTO $scheme;
        fastcgi_param HTTP_X_FORWARDED_SSL on;
        add_header Content-Security-Policy "upgrade-insecure-requests" always;
    }

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
}

そして、chmod x docker/entrypoint.sh を?qū)g行して、entrypoint.sh を?qū)g行可能にします。

イメージを Amazon ECR にプッシュする

最初のステップは、イメージを ECR にプッシュすることです。アプリケーションを ECS にデプロイする前に、まずこの手順を手動で実行する必要があります。

ECRリポジトリを作成する

ECR リポジトリを作成するには、Amazon ECR コンソール に移動し、リポジトリの作成 をクリックし、リポジトリ名を入力します。この例では、demo-app.

を使用します。

Part  Deploying a PHP (Laravel) application to Amazon ECS

作成したら、リポジトリの URI をコピーします。この URI は後で必要になります。

イメージを ECR にプッシュします

作成したばかりのリポジトリを選択し、プッシュ コマンドの表示 をクリックして、ターミナルでコマンドを?qū)g行します。コマンドは次のようになります (必ず正しいリージョンを選択し、正しいアカウント ID を使用してください):

aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.us-east-1.amazonaws.com
docker build -t demo-app .
docker tag demo-app:latest 123456789012.dkr.ecr.us-east-1.amazonaws.com/demo-app:latest
docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/demo-app:latest

コマンドが正常に実行されたら、Amazon ECR コンソール に戻り、リポジトリに入り、イメージがタグl(fā)atest で正常にプッシュされたことを確認(rèn)します。

Part  Deploying a PHP (Laravel) application to Amazon ECS

Amazon ECS の使用

ECS タスク定義の作成

次のステップは、ECR にプッシュしたばかりの Docker イメージを使用して ECS タスク定義を作成することです。
まず、Amazon ECS コンソール に移動し、タスク定義 で、新しいタスク定義の作成 をクリックします。

タスク定義に一意の名前を選択し (デモアプリを使用します)、起動タイプとして Fargate が選択されていることを確認(rèn)します。現(xiàn)時(shí)點(diǎn)では、このセクションの他の內(nèi)容は何も変更しないでください。

Container - 1 セクションまで下にスクロールし、次の値を入力します。

  • 名前: デモアプリ
  • 畫像: 123456789012.dkr.ecr.us-east-1.amazonaws.com/demo-app:latest (前にコピーした獨(dú)自の ECR URI に置き換えます)

後で、アプリケーションに応じてメモリと CPU の設(shè)定を調(diào)整することになるでしょう。必要に応じて、ここで環(huán)境変數(shù)と EFS ボリュームを追加することもできます。これについては別のチュートリアルで説明します。

Part  Deploying a PHP (Laravel) application to Amazon ECS

今のところ、このセクションの他の部分は何も変更しないでください。一番下までスクロールし、作成 をクリックします。

ECS クラスターを作成する

次に、ECS クラスターを作成する必要があります。クラスターは、作成したばかりのタスク定義で定義されたサービスを?qū)g行する場所です。

Amazon ECS コンソール に移動し、クラスタークラスターの作成 をクリックし、クラスター名を入力して、必ず AWS を選択しますインフラストラクチャとしての Fargate (サーバーレス):

Part  Deploying a PHP (Laravel) application to Amazon ECS

クラスターの作成には數(shù)分かかります。特に新しいアカウントの場合、クラスターの作成が失敗することがあります。數(shù)分待ってから、別のクラスター名を選択して再試行してください。

ECSサービスを作成する

作成したクラスターを開き、サービス テーブルまで下にスクロールし、作成 をクリックして、次の値を入力します。

  • ファミリー: デモアプリ
  • リビジョン: 1 (このままにしておきます)
  • サービス名: デモアプリ

Part  Deploying a PHP (Laravel) application to Amazon ECS

まだ 作成 をクリックしないでください。

ロードバランサを追加する

おそらく HTTPS 経由でアプリケーションを提供しているため、ロード バランサーを追加する必要があります。これを後で行うことはできません。

ネットワーク セクションまで下にスクロールし、サービスをデプロイする VPC を選択します。 VPC に、インターネット ゲートウェイ が接続された パブリック サブネット があることを確認(rèn)してください。 VPC がない場合は、[新しい VPC の作成] をクリックし、ウィザードに従って VPC を作成できます。

VPC を選択したら、読み続けてください。

ロード バランシング セクションまで下にスクロールし、Application Load Balancer を選択し、新しいロード バランサーの作成 オプションを選択します。

このオプションが利用できない場合は、前のステップで VPC を選択しなかった可能性があります。

次の値を調(diào)整します:

  • ロードバランサ名:demo-app-alb
  • ヘルスチェック猶予期間: 300 (アプリが起動して安定するように、これを 300 秒、つまり 5 分に設(shè)定することをお?jiǎng)幛幛筏蓼?

リスナー セクションで、新しいリスナーの作成 オプションを選択したままにしますが、ポート 443 と HTTPS プロトコルを使用するように値を調(diào)整します。この選択を確認(rèn)するには、使用するドメインの ACM 証明書が必要です。入手方法の詳細(xì)については、AWS ドキュメントを參照してください。

Part  Deploying a PHP (Laravel) application to Amazon ECS

ターゲット グループ セクションで、次の値を調(diào)整します:

  • プロトコル: HTTP (デフォルトです。nginx コンテナはポート 80 でリッスンしているため、必ずこれを維持してください)
  • 登録解除遅延: 60 (展開を少し速くするために、デフォルトの 5 分ではなく、これを 60 秒に設(shè)定することをお?jiǎng)幛幛筏蓼?
  • ヘルスチェックパス: / (アプリ內(nèi)で特別に作成した /healthcheck などのルートにこれを設(shè)定することをお?jiǎng)幛幛筏蓼埂=瘠韦趣长恧膝钎榨━毳趣韦蓼蓼菢?gòu)いません)

Part  Deploying a PHP (Laravel) application to Amazon ECS

作成をクリックします。

サービスステータスを確認(rèn)する

サービスが サービス テーブルに表示されるまでに數(shù)分かかる場合があります。新しいサービスがすぐに表示されない場合は、少し待ってページを更新してください。

すべてがうまくいけば、サービス テーブルにサービスがリストされ、アクティブデプロイメントとタスク が 1/1 を示していることがわかります。実行中のタスク。

デプロイメントエラーは次のように表示されます:

Part  Deploying a PHP (Laravel) application to Amazon ECS

デプロイメント エラーをデバッグするには、サービスを開いて、Deployments タブをクリックします。 イベント セクションまで下にスクロールし、最後に開始したタスクの ID をクリックします。タスク実行の ログ セクションには、何が問題だったかの詳細(xì)が表示されます。

Laravel は通常、ストレージフォルダー構(gòu)造が不完全である (例: フレームワーク、キャッシュ、セッションのいずれかが欠落している) と文句を言います。この問題を解決するために EFS ボリュームをタスク定義にアタッチする方法については、別のチュートリアルで説明します。

ドメイン名をサービスに接続する

おそらく、デプロイしたばかりのサービスにドメイン名を接続したいと考えているでしょう。前のステップで、インターネット トラフィックをサービスにルーティングする役割を擔(dān)う AWS コンポーネントである Application Load Balancer をすでに作成しました。

エンドユーザーとロードバランサー間のトラフィックの暗號化に使用される ACM 証明書もすでにプロビジョニングされています。

プロセスを完了し、公共のインターネットから HTTPS 経由でアプリケーションにアクセスできるようにするには、ドメイン名がロード バランサーを指す DNS レコードを作成する必要があります。このプロセスは、使用している DNS プロバイダーによって異なります。詳細(xì)については、ドキュメントを參照してください。

まず、Application Load Balancer の DNS 名を取得します。 AWS コンソールの検索バー (macOS ではオプション S) に移動し、「ロード バランサー」と入力して、ロード バランサー (EC2 機(jī)能) を選択します。ドメイン名を接続するために必要なロード バランサーのテーブルが表示されます:

Part  Deploying a PHP (Laravel) application to Amazon ECS

ロード バランサーの DNS 名をコピーします。

Route 53 を使用している場合は、次の手順に従ってください:

  • Route 53 コンソール に移動し、ホスト ゾーン をクリックして、ドメイン名を選択します。
  • レコードの作成 ボタンをクリックします。
  • レコード タイプを A に設(shè)定します。
  • エイリアス オプションをチェックします。
  • トラフィックのルーティング先フィールドで、アプリケーションおよびクラシック ロード バランサーへのエイリアスを選択し、ロード バランサーのリージョンを選択します。
  • ロード バランサーの選択 ドロップダウンから、ドメイン名を接続する必要があるロード バランサーを選択します。複數(shù)のロード バランサーがある場合は、ドロップダウンから選択したロード バランサーが、前にコピーしたロード バランサーの DNS 名と一致する必要があることを確認(rèn)してください。
  • ターゲットの健康狀態(tài)の評価をオフにします。
  • レコードの作成をクリックします。

Route 53 を使用していない場合:

詳細(xì)については、DNS プロバイダーのドキュメントを參照してください。おそらく、ターゲット/値としてロード バランサーの DNS 名を持つ CNAME レコードを作成する必要があります。

おめでとう

DNS レコードを作成したら、それが伝播されるまで數(shù)分待ってから、ドメイン名を介してアプリケーションにアクセスしてみます。

おめでとうございます! これで、PHP (Laravel) アプリケーションが AWS ECS に正常にデプロイされました。

このチュートリアル シリーズで近日公開予定

  • Laravel のストレージフォルダー構(gòu)造の問題を修正するために EFS ボリュームをタスク定義にアタッチする
  • AWS CodePipeline を使用して新しいコードをサービスに自動的にデプロイする
  • AWS CDK を使用したインフラストラクチャのプロビジョニングの自動化

以上がパート PHP (Laravel) アプリケーションを Amazon ECS にデプロイするの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP変數(shù)スコープは説明されています PHP変數(shù)スコープは説明されています Jul 17, 2025 am 04:16 AM

PHP変數(shù)スコープの一般的な問題とソリューションには次のものが含まれます。1。グローバル変數(shù)は関數(shù)內(nèi)でアクセスできず、グローバルキーワードまたはパラメーターを使用して渡す必要があります。 2。靜的変數(shù)は靜的で宣言され、1回のみ初期化され、値は複數(shù)の呼び出し間で維持されます。 3. $ _GETや$ _POSTなどのハイパーグローバル変數(shù)は、任意の範(fàn)囲で直接使用できますが、安全なフィルタリングに注意を払う必要があります。 4.匿名関數(shù)は、使用キーワードを使用して親スコープ変數(shù)を?qū)毪工氡匾ⅳ?、外部変?shù)を変更する場合は、參照を渡す必要があります。これらのルールを習(xí)得すると、エラーを回避し、コードの安定性が向上するのに役立ちます。

ファイルアップロードをPHPで安全に処理する方法は? ファイルアップロードをPHPで安全に処理する方法は? Jul 08, 2025 am 02:37 AM

PHPファイルのアップロードを安全に処理するには、ソースとタイプを確認(rèn)し、ファイル名とパスを制御し、サーバー制限を設(shè)定し、メディアファイルを2回プロセスする必要があります。 1.トークンを介してCSRFを防ぐためにアップロードソースを確認(rèn)し、ホワイトリストコントロールを使用してFINFO_FILEを介して実際のMIMEタイプを検出します。 2。ファイルをランダムな文字列に変更し、検出タイプに従って非WEBディレクトリに保存する拡張機(jī)能を決定します。 3。PHP構(gòu)成は、アップロードサイズを制限し、一時(shí)的なディレクトリnginx/apacheはアップロードディレクトリへのアクセスを禁止します。 4. GDライブラリは寫真を再利用して、潛在的な悪意のあるデータをクリアします。

PHPでコードをコメントします PHPでコードをコメントします Jul 18, 2025 am 04:57 AM

PHPコメントコードには3つの一般的な方法があります。1。//#を使用して1行のコードをブロックすると、//を使用することをお?jiǎng)幛幛筏蓼埂?2。使用/.../複數(shù)の行でコードブロックをラップするには、ネストすることはできませんが交差することができます。 3. / if(){}を使用するなどの組み合わせスキルコメントロジックブロックを制御するか、エディターショートカットキーで効率を改善するには、シンボルを閉じることに注意を払い、使用時(shí)にネストを避ける必要があります。

発電機(jī)はPHPでどのように機(jī)能しますか? 発電機(jī)はPHPでどのように機(jī)能しますか? Jul 11, 2025 am 03:12 AM

ageneratorinphpisamemory-efficientwaytoateate-overdeatatasetasetasetasetsinging valueseintimeintimeturningthemallatonce.1.generatorsususedeywordproducevaluesedemand、memoryusage.2を還元すること。2

PHPコメントを書くためのヒント PHPコメントを書くためのヒント Jul 18, 2025 am 04:51 AM

PHPコメントを書くための鍵は、目的と仕様を明確にすることです。コメントは、「何が行われたのか」ではなく「なぜ」を説明する必要があり、冗長性や単純さを避けてください。 1.読みやすさとツールの互換性を向上させるために、クラスおよびメソッドの説明にdocblock(/*/)などの統(tǒng)合形式を使用します。 2。JSジャンプを手動で出力する必要がある理由など、ロジックの背後にある理由を強(qiáng)調(diào)します。 3.複雑なコードの前に概要説明を追加し、手順でプロセスを説明し、全體的なアイデアを理解するのに役立ちます。 4. TodoとFixmeを合理的に使用して、To Doアイテムと問題をマークして、その後の追跡とコラボレーションを促進(jìn)します。優(yōu)れた注釈は、通信コストを削減し、コードメンテナンスの効率を向上させることができます。

クイックPHPインストールチュートリアル クイックPHPインストールチュートリアル Jul 18, 2025 am 04:52 AM

to installphpquickly、usexampponwindowsorhomebrewonmacos.1.onwindows、downloadandinstallxampp、selectcomponents、startapache、andplacefilesinhtdocs.2

PHPのインデックスごとに文字列內(nèi)の文字にアクセスする方法 PHPのインデックスごとに文字列內(nèi)の文字にアクセスする方法 Jul 12, 2025 am 03:15 AM

PHPでは、四角い括弧または巻き毛裝具を使用して文字列固有のインデックス文字を取得できますが、正方形のブラケットをお?jiǎng)幛幛筏蓼?。インデックス?から始まり、範(fàn)囲外のアクセスはnull値を返し、値を割り當(dāng)てることができません。 MB_SUBSTRは、マルチバイト文字を処理するために必要です。例:$ str = "hello"; echo $ str [0];出力h; MB_Substr($ str、1,1)などの漢字は、正しい結(jié)果を得る必要があります。実際のアプリケーションでは、ループする前に文字列の長さをチェックする必要があり、ダイナミック文字列を有効性のために検証する必要があり、多言語プロジェクトはマルチバイトセキュリティ関數(shù)を均一に使用することをお?jiǎng)幛幛筏蓼埂?/p>

PHPの學(xué)習(xí):初心者向けガイド PHPの學(xué)習(xí):初心者向けガイド Jul 18, 2025 am 04:54 AM

tolearnphpefctivially、startbysettingupalocalserverenvironmentusingtoolslikexamppandacodeeditorlikevscode.1)instalxamppforapa Che、mysql、andphp.2)useocodeeditorforsyntaxsupport.3)testyoursetup withasimplephpfile.next、Learnpbasicsincludingvariables、ech

See all articles