国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 后端開發(fā) php教程 將 PHP (Laravel) 應用程序部署到 Amazon ECS 部分

將 PHP (Laravel) 應用程序部署到 Amazon ECS 部分

Oct 20, 2024 am 06:07 AM

在教程系列的第一部分中,我們將逐步完成將 PHP (Laravel) 應用程序部署到 Amazon ECS 的步驟。我們將首先創(chuàng)建一個 Docker 映像,將其推送到 Amazon ECR,創(chuàng)建一個 ECS 任務定義、一個 ECS 集群、一個 ECS 服務并將域名連接到該服務。

使用 Docker 和 ECR

創(chuàng)建 Dockerfile 和 nginx 配置

在 git 存儲庫的根目錄中,創(chuàng)建一個包含以下內容的 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 的文件夾,并將以下兩個文件放入其中。

  • docker/entrypoint.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 使entrypoint.sh可執(zhí)行。

將圖像推送到 Amazon ECR

第一步是將鏡像推送到 ECR。您需要先手動執(zhí)行此步驟,然后才能繼續(xù)將應用程序部署到 ECS。

創(chuàng)建 ECR 存儲庫

通過前往 Amazon ECR 控制臺,單擊 創(chuàng)建存儲庫,然后輸入存儲庫名稱來創(chuàng)建 ECR 存儲庫。對于此示例,我們將使用 demo-app。

Part  Deploying a PHP (Laravel) application to Amazon ECS

創(chuàng)建后,復制存儲庫的 URI。稍后您將需要此 URI。

將鏡像推送至ECR

選擇您剛剛創(chuàng)建的存儲庫,單擊查看推送命令,然后在終端中運行命令。命令將如下所示(確保選擇正確的區(qū)域并使用正確的帳戶 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 控制臺,進入存儲庫,并確認鏡像已成功推送,標簽為latest。

Part  Deploying a PHP (Laravel) application to Amazon ECS

使用 Amazon ECS

創(chuàng)建 ECS 任務定義

下一步是使用我們剛剛推送到 ECR 的 Docker 映像創(chuàng)建 ECS 任務定義。
首先前往 Amazon ECS 控制臺,在 任務定義 下,單擊 創(chuàng)建新任務定義。

為任務定義選擇一個唯一的名稱(我們將使用 demo-app),并確保選擇 Fargate 作為啟動類型。暫時不要更改此部分中的任何其他內容。

向下滾動到 Container - 1 部分,然后輸入以下值:

  • 名稱:演示應用程序
  • 圖片:123456789012.dkr.ecr.us-east-1.amazonaws.com/demo-app:latest(替換為我們之前復制的您自己的 ECR URI)

稍后,您可能需要根據(jù)您的應用程序調整內存和 CPU 設置。如果需要,您還可以在此處添加環(huán)境變量和 EFS 卷。我們將在單獨的教程中介紹它。

Part  Deploying a PHP (Laravel) application to Amazon ECS

暫時不要更改此部分中的任何其他內容。向下滾動到底部并單擊創(chuàng)建

創(chuàng)建ECS集群

我們現(xiàn)在需要創(chuàng)建一個 ECS 集群。集群是我們運行剛剛創(chuàng)建的任務定義中定義的服務的地方。

前往 Amazon ECS 控制臺,在 集群 下,單擊 創(chuàng)建集群,輸入集群名稱,并確保選擇 AWS Fargate(無服務器) 作為基礎設施:

Part  Deploying a PHP (Laravel) application to Amazon ECS

創(chuàng)建集群需要幾分鐘時間。集群創(chuàng)建偶爾會失敗,特別是對于新帳戶;只需等待幾分鐘,然后重試,選擇不同的集群名稱。

創(chuàng)建ECS服務

打開剛剛創(chuàng)建的集群,向下滾動到 Services 表,單擊 創(chuàng)建,然后輸入以下值:

  • 家庭:演示應用程序
  • 修訂:1(保持原樣)
  • 服務名稱:demo-app

Part  Deploying a PHP (Laravel) application to Amazon ECS

暫時不要點擊創(chuàng)建。

添加負載均衡器

由于我們可能通過 HTTPS 為應用程序提供服務,因此我們需要添加一個負載均衡器。您以后不能再這樣做。

向下滾動到網(wǎng)絡部分,然后選擇要將服務部署到的 VPC。確保 VPC 具有 公共子網(wǎng),并附加有 Internet 網(wǎng)關。如果您沒有 VPC,您可以通過單擊創(chuàng)建新 VPC 并按照向導操作來創(chuàng)建一個 VPC。

選擇 VPC 后,請繼續(xù)閱讀。

向下滾動到負載均衡部分,選擇應用程序負載均衡器,然后選擇選項創(chuàng)建新的負載均衡器。

如果此選項不可用,則您可能在上一步中沒有選擇 VPC。

調整以下值:

  • 負載均衡器名稱:demo-app-alb
  • 健康檢查寬限期:300(我建議將其設置為 300 秒,即 5 分鐘,以便您的應用程序啟動并穩(wěn)定)

Listener 部分下,保持選中 創(chuàng)建新監(jiān)聽器 選項,但調整值以使用端口 443 和 HTTPS 協(xié)議。要確認此選擇,您需要您要使用的域的 ACM 證書;有關如何獲取的更多信息,請參閱 AWS 文檔。

Part  Deploying a PHP (Laravel) application to Amazon ECS

目標組部分下,調整以下值:

  • 協(xié)議:HTTP(這是默認值,請確保保留它,因為我們的 nginx 容器正在偵聽端口 80)
  • 注銷延遲:60(我建議將其設置為 60 秒,而不是默認的 5 分鐘,以使部署更快一點)
  • 健康檢查路徑:/(我建議將其設置為您在應用程序中專門創(chuàng)建的路由,例如/healthcheck;您現(xiàn)在可以將其保留為默認值)

Part  Deploying a PHP (Laravel) application to Amazon ECS

點擊創(chuàng)建。

檢查服務狀態(tài)

服務可能需要幾分鐘時間才會顯示在服務 表中。如果您沒有立即看到新服務,請稍等一下,然后刷新頁面。

如果一切順利,您應該會看到 服務 表中列出的服務,其狀態(tài)為 活動部署和任務 顯示 1/1正在運行任務。

部署錯誤顯示如下:

Part  Deploying a PHP (Laravel) application to Amazon ECS

要調試部署錯誤,請打開服務,然后單擊部署選項卡;向下滾動到 Events 部分,然后單擊最近啟動的任務的 ID。任務執(zhí)行的日志部分將向您顯示有關出錯原因的更多詳細信息。

Laravel 通常會抱怨存儲文件夾結構不完整(例如,缺少框架、緩存、會話之一)。我們將在單獨的教程中了解如何將 EFS 卷附加到任務定義來解決此問題。

將域名連接到服務

您可能想要將域名連接到我們剛剛部署的服務。在前面的步驟中,我們已經(jīng)創(chuàng)建了一個應用程序負載均衡器,它是負責將互聯(lián)網(wǎng)流量路由到服務的 AWS 組件。

我們還已經(jīng)配置了 ACM 證書,用于加密最終用戶和負載均衡器之間的流量。

要完成該過程并使您的應用程序能夠通過 HTTPS 從公共互聯(lián)網(wǎng)訪問,您需要創(chuàng)建一條 DNS 記錄,將您的域名指向負載均衡器。此過程會有所不同,具體取決于您使用的 DNS 提供商;請參閱他們的文檔以獲取更多信息。

首先獲取應用程序負載均衡器的 DNS 名稱。導航到 AWS 控制臺中的搜索欄(macOS 上的選項 S),輸入負載均衡器,然后選擇 負載均衡器(EC2 功能)。您將看到一個表格,其中包含我們需要將域名連接到的負載均衡器:

Part  Deploying a PHP (Laravel) application to Amazon ECS

復制負載均衡器的 DNS 名稱。

如果您使用 53 號公路,請按照以下說明操作:

  • 導航到 Route 53 控制臺,單擊 托管區(qū)域,然后選擇您的域名。
  • 點擊創(chuàng)建記錄按鈕。
  • 將記錄類型設置為A.
  • 選中別名選項。
  • 將流量路由到字段中,選擇應用程序和經(jīng)典負載均衡器的別名,然后選擇負載均衡器的區(qū)域。
  • 選擇負載均衡器下拉列表中,選擇我們需要將域名連接到的負載均衡器。如果您有多個負載均衡器,請檢查從下拉列表中選擇的負載均衡器必須與我們之前復制的負載均衡器的 DNS 名稱相匹配。
  • 關閉評估目標健康狀況。
  • 點擊創(chuàng)建記錄

如果您不使用 53 號公路:

請參閱您的 DNS 提供商的文檔以了解更多信息。您可能需要創(chuàng)建一條 CNAME 記錄,將負載均衡器的 DNS 名稱作為其目標/值。

恭喜你

創(chuàng)建 DNS 記錄后,等待幾分鐘讓它傳播,然后嘗試通過域名訪問您的應用程序。

恭喜!您現(xiàn)已成功將 PHP (Laravel) 應用程序部署到 AWS ECS。

本教程系列即將推出

  • 將 EFS 卷附加到任務定義以修復 Laravel 的存儲文件夾結構問題
  • 使用 AWS CodePipeline 自動將新代碼部署到服務
  • 使用 AWS CDK 自動化基礎設施配置

以上是將 PHP (Laravel) 應用程序部署到 Amazon ECS 部分的詳細內容。更多信息請關注PHP中文網(wǎng)其他相關文章!

本站聲明
本文內容由網(wǎng)友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權的內容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

我如何了解最新的PHP開發(fā)和最佳實踐? 我如何了解最新的PHP開發(fā)和最佳實踐? Jun 23, 2025 am 12:56 AM

TostaycurrentwithPHPdevelopmentsandbestpractices,followkeynewssourceslikePHP.netandPHPWeekly,engagewithcommunitiesonforumsandconferences,keeptoolingupdatedandgraduallyadoptnewfeatures,andreadorcontributetoopensourceprojects.First,followreliablesource

什么是PHP,為什么它用于Web開發(fā)? 什么是PHP,為什么它用于Web開發(fā)? Jun 23, 2025 am 12:55 AM

PHPbecamepopularforwebdevelopmentduetoitseaseoflearning,seamlessintegrationwithHTML,widespreadhostingsupport,andalargeecosystemincludingframeworkslikeLaravelandCMSplatformslikeWordPress.Itexcelsinhandlingformsubmissions,managingusersessions,interacti

如何設置PHP時區(qū)? 如何設置PHP時區(qū)? Jun 25, 2025 am 01:00 AM

tosetTherightTimeZoneInphp,restate_default_timezone_set()functionAtthestArtofyourscriptWithavalIdidentIdentifiersuchas'america/new_york'.1.usedate_default_default_timezone_set_set()

編寫清潔和可維護的PHP代碼的最佳實踐是什么? 編寫清潔和可維護的PHP代碼的最佳實踐是什么? Jun 24, 2025 am 12:53 AM

寫干凈、易維護的PHP代碼關鍵在于清晰命名、遵循標準、合理結構、善用注釋和可測試性。1.使用明確的變量、函數(shù)和類名,如$userData和calculateTotalPrice();2.遵循PSR-12標準統(tǒng)一代碼風格;3.按職責拆分代碼結構,使用MVC或Laravel式目錄組織;4.避免面條式代碼,將邏輯拆分為單一職責的小函數(shù);5.在關鍵處添加注釋并撰寫接口文檔,明確參數(shù)、返回值和異常;6.提高可測試性,采用依賴注入、減少全局狀態(tài)和靜態(tài)方法。這些做法提升代碼質量、協(xié)作效率和后期維護便利性。

如何使用PHP執(zhí)行SQL查詢? 如何使用PHP執(zhí)行SQL查詢? Jun 24, 2025 am 12:54 AM

Yes,youcanrunSQLqueriesusingPHP,andtheprocessinvolveschoosingadatabaseextension,connectingtothedatabase,executingqueriessafely,andclosingconnectionswhendone.Todothis,firstchoosebetweenMySQLiorPDO,withPDObeingmoreflexibleduetosupportingmultipledatabas

如何快速測試PHP代碼片段? 如何快速測試PHP代碼片段? Jun 25, 2025 am 12:58 AM

toquicklytestaphpcodesnippet,useanonlinephpsandboxlike3v4l.orgorphpize.onlineforinstantantantExecutionWithOutSetup; runco??delocalocallocallocallocallocallocallywithpplibycreatinga.phpfileandexecutingitviateringitviatheterminal;

如何在PHP中使用頁面緩存? 如何在PHP中使用頁面緩存? Jun 24, 2025 am 12:50 AM

PHP頁面緩存可通過減少服務器負載和加快頁面加載速度提升網(wǎng)站性能。1.基本文件緩存通過生成靜態(tài)HTML文件并在有效期內提供服務,避免重復生成動態(tài)內容;2.啟用OPcache可將PHP腳本編譯為字節(jié)碼存儲在內存中,提升執(zhí)行效率;3.對帶參數(shù)的動態(tài)頁面,應根據(jù)URL參數(shù)分別緩存,并避免緩存用戶特定內容;4.可使用輕量級緩存庫如PHPFastCache簡化開發(fā)并支持多種存儲驅動。結合這些方法能有效優(yōu)化PHP項目的緩存策略。

如何升級PHP版本? 如何升級PHP版本? Jun 27, 2025 am 02:14 AM

升級PHP版本其實不難,但關鍵在于操作步驟和注意事項。以下是具體方法:1.確認當前PHP版本及運行環(huán)境,使用命令行或phpinfo.php文件查看;2.選擇適合的新版本并安裝,推薦8.2或8.1,Linux用戶用包管理器安裝,macOS用戶用Homebrew;3.遷移配置文件和擴展,更新php.ini并安裝必要擴展;4.測試網(wǎng)站是否正常運行,檢查錯誤日志確保無兼容性問題。按照這些步驟操作,大多數(shù)情況都能順利完成升級。

See all articles