[ecs, laravel, nginx] 로컬에서 nginx를 통해 laravel 화면이 나오도록 설정되어 있지만 왜 ecs에서 작동하지 않았던 이야기
소개
이번 내용은 기술적인 이야기라기 보다는 이런 일이 원인으로 잘 안 됐다는 내용이 되어 있어 기사의 간은 원인 발견에 이르는 사고 부분이 되고 있습니다.
그러므로 지금 대답을 원하는 분에게는 적합하지 않은 내용이므로, 미리 양해 바랍니다 m (_ _) m
어떤 화면이 나왔습니까?
공용 IP에 연결할 때의 화면
Laravel 화면이 나오지 않습니다. . .
cloudwatch
에러 로그 토하지 않았다. . .
원인 발견까지의 사고
nginx는 기동하고 있고, 원래 로컬에서는 움직이고 있었다.
라는 것은, 로컬과 프로덕션 환경에서 다른 아래의 파일을 조사하면 좋을까.
docker-compose.yml
및 ecs-task-definition-for-web.json(タスク定義のjsonファイル)
nginx/default.conf(ローカル)
및 nginx/ecs/conf.d/default.conf(本番)
우선 알기 쉬운 분으로부터 하는 것으로
nginx/ecs/conf.d/default.conf(本番)
의 내용을 nginx/default.conf(ローカル)
에 붙여 로컬로 움직일까 시험해 보자.응? 움직이지 않니? 아, 터미널에서 500 에러가 나온다. . .
그럼
nginx/ecs/conf.d/default.conf(本番)
가 나쁘다!원인
바로
nginx/ecs/conf.d/default.conf(本番)
파일을 보면, 미스 터치로 이상한 개행이 들어 있었다.nginx/ecs/conf.d/default.conf(프로덕션)
upstream php-fpm {
server localhost:9000;
}
server {
listen 80;
server_name localhost;
root /var/www/html/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico {
access_log off; log_not_found off;
}
location = /robots.txt {
access_log off; log_not_found off;
}
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass php-fpm;
fastcgi_index index.php;
#↓の記述で変な改行をしてしまっていた
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_scr
ipt_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
해결책
불필요한 줄 바꿈을 제거 성공! ...라고는 가지 않았다.
왜냐하면 수정 내용을 실전을 반영시켜야 하기 때문이다.
그래서 아래의 7가지 절차를 거쳐 해결까지 이어질 수 있었다.
ファイルの修正
(개행 삭제) docker-compose build
) docker tag nginx:latest xxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/nginx:latest
) aws ecr get-login-password | docker login --username AWS --password-stdin https://xxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com
) docker push xxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/nginx:latest
) aws ecs register-task-definition --cli-input-json file://ecs-task-definition-for-web.json
) aws ecs create-service \
--cluster xxxx-ecs --service-name xxxx-service --task-definition xxxx-for-web:2 --launch-type "FARGATE" \
--load-balancers '[{"containerName":"nginx","containerPort":80,"targetGroupArn":"arn:aws:elasticloadbalancing:ap-northeast-1:xxxxxxxx:targetgroup/xxxx-targetgroup/6918a2b6af9b9004"}]' \
--desired-count 2 \
--network-configuration "awsvpcConfiguration={subnets=[subnet-xxxxxxx,subnet-xxxxxxxx],securityGroups=[sg-xxxxxxxxx],assignPublicIp=ENABLED}"
해결 후 화면
제대로 larabel 문자를 배울 수 있었다. 여기까지 길었다. . .
Reference
이 문제에 관하여([ecs, laravel, nginx] 로컬에서 nginx를 통해 laravel 화면이 나오도록 설정되어 있지만 왜 ecs에서 작동하지 않았던 이야기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/KONTA2019/items/9ed9af5c0882ab3cb841텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)