이번에는 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 중국어 도구 클래스 ChineseUtil을 사용하여 한자와 병음을 변환하는 방법 ChineseUtil
위 내용은 PHP 애플리케이션의 컨테이너화 및 배포에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!