>백엔드 개발 >PHP 튜토리얼 >PHP 애플리케이션의 컨테이너화 및 배포에 대한 자세한 설명

PHP 애플리케이션의 컨테이너화 및 배포에 대한 자세한 설명

php中世界最好的语言
php中世界最好的语言원래의
2018-05-18 14:46:182923검색

이번에는 PHP 애플리케이션 컨테이너화 및 배포에 대한 자세한 설명을 가져왔습니다. PHP 애플리케이션 컨테이너화 및 배포 시 주의사항은 무엇인가요?

PHP는 세계 최고의 언어입니다.

클래식 LNMP(linux + nginx + php + mysql) 환경에는 기성 배포 스크립트가 많이 있습니다. 하지만 Docker가 인기가 있는 오늘날에도 배포 방법에 대해 많은 학생들이 여전히 문제를 겪고 있으므로 이 기사에서는 배포 방법을 간략하게 소개합니다. Docker와 docker-compose를 사용하여 서버에 PHP 애플리케이션을 배포하세요.

먼저 nginx의 이전 PHP 구성을 검토해 보겠습니다.

location ~ \.php$ {
 try_files  $uri =404;
 include   fastcgi_params;
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_index index.php;
 fastcgi_split_path_info ^(.+\.php)(/.+)$;
 fastcgi_param PATH_INFO $fastcgi_path_info;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

모든 PHP 파일은 PHP 엔진을 사용하여 구문 분석됩니다. PHP는 로컬 9000 포트(ip/unix 도메인 소켓을 통해 액세스 가능)에서 실행됩니다. 물론 원격 서비스를 통해서도 파싱이 가능합니다.

그래서 우리 nginx 서비스는 다음과 같이 구성됩니다:

server {
 listen  80;
 charset utf-8;
 # access_log /var/log/nginx/nginx.access.log main;
 # error_log /var/log/nginx/error.log;
 root /var/www/html;
 index index.php index.html;
 add_header X-Cache $upstream_cache_status;
 location ~ \.php$ {
  try_files  $uri =404;
  include   fastcgi_params;
  fastcgi_pass php-fpm:9000;
  fastcgi_index index.php;
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_param PATH_INFO $fastcgi_path_info;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 }
}

동시에 더 어려운 문제는 php 코드가 nginx와 php 엔진 모두에 존재해야 한다는 것입니다. 그렇지 않으면 파싱할 수 없지만 이는 문제가 되지 않습니다. , docker 볼륨 자연 지원!

아래 docker-compose.yml 구성을 직접 살펴보세요.

version: '2'
services:
 nginx:
  image: nginx:stable-alpine
  ports:
   - 80:80
  volumes:
   - ./conf/nginx/conf.d:/etc/nginx/conf.d
  volumes_from:
   - php-fpm
  restart: always
 php-fpm:
  image: php:7.1-fpm-alpine
  volumes:
   - ./code:/var/www/html
  restart: always

참고:

php-fpm은 로컬 디렉토리 코드를 /var/www/html에 마운트했습니다.
service_name은 nginx conf에서 php-fpm에 액세스하는 데 사용됩니다
nginx Volume_from 명령을 통해 php-fpm의 /var/www/html을 공유합니다
코드 디렉토리의 index.php에 작성하세요:

<?php
echo phpinfo();

그런 다음 실행하세요:

# bash
docker-compose up

브라우저를 열면 익숙한 phpinfo를 볼 수 있습니다:

그러면 몇몇 친구들은 '내가 의존적인 사람이라면 어떻게 해야 합니까?'라고 묻고 싶어합니다. 알았어, 그게 내가 가서 말할거야.

프로젝트에 Dockerfile을 넣으세요:

FROM php:7.1-fpm-alpine
RUN docker-php-install pdo pdo-mysql
COPY src /var/www/html

빌드하려면 Alibaba Cloud Image Service 빌드 기능이나 Docker가 제공하는 자동 빌드를 선택한 다음 이전 docker-compose.yml을 업데이트하세요:

version: '2'
services:
 nginx:
  image: nginx:stable-alpine
  ports:
   - 8000:80
  volumes:
   - ./conf/nginx/conf.d:/etc/nginx/conf.d
  volumes_from:
   - php-fpm
  restart: always
 php-fpm:
  image: {YOUR_PHP_IMAGE_NAME}:{TAG}
  restart: always

믿거나 not 이 기사의 사례를 읽은 후에는 방법을 익혔습니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 도서:

PHP 네임스페이스 사용에 대한 자세한 설명

PHP 중국어 도구 클래스 ChineseUtil을 사용하여 한자와 병음을 변환하는 방법 ChineseUtil

위 내용은 PHP 애플리케이션의 컨테이너화 및 배포에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.