質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

2637閲覧

AWS Copilotを用いてbackendへデプロイしたLaravelへnginx経由でアクセスしたいが504になる

clack02

総合スコア24

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2021/11/09 08:34

前提・実現したいこと

既存のLaravelアプリケーションをFargateで動かしたく、Copilotを用いてデプロイし、ELBを用いて
インターネットからアクセスしたい。

発生している問題・エラーメッセージ

CopilotのFrontendのテンプレートを用いるとうまくいかない為、Backendを用いてデプロイしました。
execでコンテナに入り、 artisan serveでビルトインサーバー立ち上げALBを用いることでアクセスできました。
CopilotのSidecarにNginxを設定し、同様に試してみたところうまくアクセスできませんでした。
ALBではなくNLBを用い、ポート番号をいじったりしてみたところ、nginxにはアクセスできましたが
504 Gateway Time-outになってしまいます。
Laravelアプリはテストのためインストールしたばかりの初期の状態で試しています。

原因について考えたこと・試したこと

Sidecarを用いず、手動で同クラスタ内にnginxのサービスを立ち上げてみましたが、同様の結果でした。
ターゲットグループを色々弄り試してみましたが、どれもうまくいきませんでした。

コード等情報

nginx

Dockerfile

1FROM nginx:latest 2 3# 設定ファイルを指定の場所に置く 4ENV PHP_HOST=127.0.0.1 5 6ENV SERVER_HOST localhost 7RUN apt-get update && apt-get install -y curl 8 9COPY ./liver /works 10COPY ./docker/nginx/default.conf /etc/nginx/conf.d/default.conf.template 11EXPOSE 80 12 13CMD /bin/sh -c 'sed "s/${PHP_HOST}/$PHP_HOST/" /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf && nginx -g "daemon off;"'

default.conf

default

1server { 2 listen 80; 3 root /work/public; 4 5 proxy_connect_timeout 600; 6 proxy_send_timeout 600; 7 proxy_read_timeout 600; 8 send_timeout 600; 9 fastcgi_read_timeout 600; 10 11 add_header X-Frame-Options "SAMEORIGIN"; 12 add_header X-XSS-Protection "1; mode=block"; 13 add_header X-Content-Type-Options "nosniff"; 14 15 index index.php; 16 17 charset utf-8; 18 19 error_page 404 /404.html; 20 error_page 505 502 503 504 /500.html; 21 22 location / { 23 try_files $uri $uri/ /index.php?$query_string; 24 } 25 26 location ~ .php$ { 27 # fastcgi_pass app:9000; # local 28 fastcgi_pass 172.0.0.1:9000; # AWS 29 fastcgi_index index.php; 30 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 31 include fastcgi_params; 32 } 33 34 location ~ /.(?!well-known).* { 35 deny all; 36 } 37}

Laravel
php.ini

zend.exception_ignore_args = off expose_php = on max_execution_time = 180 max_input_vars = 1000 upload_max_filesize = 64M post_max_size = 128M memory_limit = 256M error_reporting = E_ALL display_errors = on display_startup_errors = on log_errors = on error_log = /dev/stderr default_charset = UTF-8 [Date] date.timezone = Asia/Tokyo [mysqlnd] mysqlnd.collect_memory_statistics = on [Assertion] zend.assertions = 1 [mbstring] mbstring.language = Japanese

manifest.yml

name: backend type: Backend Service image: build: context: . dockerfile: docker/Dockerfile # port: 8000 http: path: "backend" targetContainer: "nginx" cpu: 256 # Number of CPU units for the task. memory: 512 # Amount of memory in MiB used by the task. count: 1 # Number of tasks that should be running in your service. exec: true # Enable running commands in your container. network: vpc: placement: "private" sidecars: nginx: port: 80 image: 403403302361.dkr.ecr.ap-northeast-1.amazonaws.com/nginx-sidecar:latest

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mather

2021/11/09 09:57

> CopilotのFrontendのテンプレートを用いるとうまくいかない為 具体的にどのような設定を行い(Typeとかmanifestとか)どううまく行かなかったのか(デプロイできない、期待通りにアクセスできない、など)詳細に記載しましょう。 そもそもTypeをBackendにすることが正しくないと思います。 https://aws.github.io/copilot-cli/en/docs/concepts/services/#backend-service Fargateで動作させ、LBを使いたいなら Load Balanced Web Service を使うと良いでしょう。 https://aws.github.io/copilot-cli/en/docs/concepts/services/#load-balanced-web-service
clack02

2021/11/10 01:26

申し訳ありません、Typeとmanifestと結果は記載しているのですが、具体的にどの情報が足りていないでしょうか? 確かにBackendで動かすのはCopilotで想定されていないですよね、private subnetにLaravelを置いて、ALBで接続する例があったのでCopilotでもELBを自分で設定すれば接続できるのではと思ってやってみましたが、知識不足もあり上手くできていませんでした。 Load balanced web service でやってみます。
guest

回答1

0

自己解決

Load Balanced Web Serviceを用いてsidecarにnginxを指定すると、ヘルスチェックでエラーになりました。
laravelのindex.phpをhello world等適当なものに置き換えたら通りましたので、ヘルスチェックの設定に問題があるようでした。
本質問から問題が変わったのでクローズさせて頂きます。

投稿2021/11/12 01:53

clack02

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問