이 문서는 Docker에서 LNMP 작업 환경을 배포하는 방법에 대한 튜토리얼(자세한 단계)을 제공합니다. 이는 특정 참조 가치가 있으므로 도움이 필요한 친구에게 도움이 되기를 바랍니다.
다음 구성은 일반 PC 환경에서도 사용할 수 있으며, MYSQL을 공식 버전의 mysql로 교체하면 됩니다.
Docker 설치
$ curl -sSL get.docker.com | sudo sh
작업 디렉터리
/lnmp/conf 가상 호스트 구성 저장
/lnmp/data/mysql mysql 데이터베이스 데이터 저장
/lnmp/log nginx, mysql 로그 저장
/lnmp/workspace 저장소 다양한 프로젝트 파일
/lnmp/.env docker 시작 시 환경 변수 구성
/lnmp/docker-compose.yml 빌드 시 구성 파일
/lnmp/php/Dockerfile PHP 구성 파일 컴파일
Nginx 빌드
Create a project
먼저 정적 파일을 생성합니다. /lnmp/conf/nginx.conf 파일 만들기
nbsp;html> <meta> <meta> <meta> <title>Document</title> Hello, Docker!
가상 호스트 구성
/lnmp/conf/conf.d/default.conf 파일 만들기참고: 루트 아래 경로는 /var/www여야 합니다. /html, 기본값은 로컬 작업공간 아래의 폴더입니다
SOURCE_DIR=./workspace HTTP_HOST=80 NGINX_VERSION=alpine NGINX_CONFD_DIR=./conf/conf.d NGINX_CONF_FILE=./conf/nginx.conf NGINX_LOG_DIR=./log SOURCE_DIR=./workspace workspace文件夹挂载到nginx下的 /var/www/html HTTP_HOST=80 宿主机的80端口映射到nginx下的80端口 NGINX_VERSION=alpine nginx镜像使用alpine版本 NGINX_CONFD_DIR=./conf/conf.d conf.d文件夹挂载到nginx下的/etc/nginx/conf.d NGINX_CONF_FILE=./conf/nginx.conf nginx.conf挂载nginx的 /etc/nginx/nginx.conf NGINX_LOG_DIR=./log
Nginx 구성 빌드
docker-composer.yml을 편집하세요다음 ${}는 위의 .env 파일에 구성된 모든 변수입니다
user nginx; worker_processes 1; pid /var/run/nginx.pid; error_log /var/log/nginx/nginx.error.log warn; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/nginx.access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
Nginx 시작
명령을 실행한 후 Raspberry Pi의 IP에 액세스합니다. 일반적으로 Hello, Docker!
server { listen 80; server_name localhost default-server; root /var/www/html/default; index index.php index.html index.htm; access_log /var/log/nginx/nginx.localhost.access.log main; error_log /var/log/nginx/nginx.localhost.error.log warn; #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
Build PHP
/lnmp/.env를 편집하여 PHP 빌드 변수를 추가합니다version: "3" services: nginx: image: nginx:${NGINX_VERSION} ports: - ${HTTP_HOST}:80 volumes: - ${SOURCE_DIR}:/var/www/html/:rw - ${NGINX_CONFD_DIR}:/etc/nginx/conf.d/:rw - ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf:ro - ${NGINX_LOG_DIR}:/var/log/nginx/:rw restart: always
php 때문입니다. ini 구성이 좀 길어요. 다음 주소에 복사하시면 됩니다. php.ini
php-fpm.conf
Add Dockerfile/lnmp/php/Dockerfile$ docker-compose up
/lnmp/docker-compose .yml 파일 편집
PHP_CONFIG_FILE=./conf/php.ini PHP_FPM_CONFIG_FILE=./conf/php-fpm.conf
가상 호스트는 PHP 구문 분석을 지원합니다
/lnmp/conf/conf.d/default.conf
아래 fastcgi_pass php:9000의 php는 다음과 같은 서비스 이름을 나타냅니다. 위의 docker-compose.yml을 사용하면 특정 프로젝트의 PHP 버전을 지정하는 데 사용할 수 있습니다ARG PHP_VERSION FROM php:${PHP_VERSION}-fpm RUN apt update RUN apt-get install -y \ libfreetype6-dev \ libjpeg62-turbo-dev \ libmcrypt-dev \ libpng-dev \ unixodbc-dev \ gcc g++ make autoconf libc-dev pkg-config
파일을 추가하세요
/lnmp/workspace/default/index.phpversion: "3" services: nginx: image: nginx:${NGINX_VERSION} ports: - ${HTTP_HOST}:80 volumes: - ${SOURCE_DIR}:/var/www/html/:rw - ${NGINX_CONFD_DIR}:/etc/nginx/conf.d/:rw - ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf:ro - ${NGINX_LOG_DIR}:/var/log/nginx/:rw restart: always php: build: context: ./php args: PHP_VERSION: 7.2 volumes: - ${SOURCE_DIR}:/var/www/html/:rw - ${PHP_PHP_CONFIG_FILE}:/usr/local/etc/php/php.ini:ro - ${PHP_FPM_CONFIG_FILE}:/usr/local/etc/php-fpm.d/www.conf:rw cap_add: - SYS_PTRACE restart: always networks: - default
미리보기 시작
If 이전에 프로세스를 종료한 적이 없다면 ctrl + c를 사용하여 종료할 수 있습니다. 그런 다음 다음 명령을 실행합니다.예기치 않은 일이 발생하지 않으면 Raspberry Pi에 액세스할 때 IP에 Hello, PHP!가 표시됩니다.
#...其它代码 location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
Add PHP Extension
/lnmp/.env 다음은 다른 확장에 대한 데모입니다. , 다음 작업을 참고하세요.<?php echo ‘Hello, PHP!’;/lnmp/docker-compose.yml
$ docker-compose up/lnmp/php/Dockerfile에 변수를 추가할 수 있습니다. swoole
PHP_SWOOLE_VERSION=4.2.10Recompile
참고: Dockerfile이 변경된 경우 , --build를 추가하고 다시 컴파일해야 합니다. 그렇지 않으면 docker-compose가 적용되지 않습니다
php: build: context: ./php args: PHP_VERSION: 7.2 PHP_SWOOLE: ${PHP_SWOOLE_VERSION}
Preview/lnmp/workspace/default/index.php를 편집하고 저장한 다음 Raspberry Pi의 IP에 액세스합니다. 예상대로 swoole 확장을 찾을 수 있습니다
# ...其它代码 ARG PHP_SWOOLE=false RUN if [ ${PHP_SWOOLE} != false ]; then \ curl -O http://pecl.php.net/get/swoole-${PHP_SWOOLE}.tgz -L \ && pecl install swoole-${PHP_SWOOLE}.tgz \ && docker-php-ext-enable swoole \ ;fiBuild MYSQL
MYSQL 지속성
Docker 컨테이너 서비스는 데이터가 손실되지 않도록 삭제되었습니다.
Create /lnmp/data/mysql 폴더빌드 시간 변수 /lnmp/.env 파일을 편집하고 mysql 서비스 포트, 로그인 비밀번호 및 데이터 지속성 폴더를 추가하세요.$ docker-compose up --build빌드 구성
<?php phpinfo();Start시작 후 데이터 연결 도구를 사용하여 테스트합니다. 링크 주소: Raspberry Pi IP 포트: 3306 사용자 이름: root 비밀번호: 1234
MYSQL_HOST_PORT=3306 MYSQL_PASSWORD=1234 MYSQL_DATA_DIR=./data/mysql지금까지 자체 LNMP 작업 환경은 다음과 같습니다. 준비가 된.
위 내용은 Docker에서 LNMP 작업 환경 배포에 대한 튜토리얼(자세한 단계)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

phpsessionstrackuserdataacrossmultiplepagerequestsususingauniqueIdStoredInAcookie.here'showtomanagetheMeftically : 1) STARTASESSIONSTART_START () andSTAREDATAIN $ _SESSION.2) RegenerATERATESSESSIDIDAFTERLOGINWITHSESSION_RATERATERATES (True) TopreventSES

PHP에서 세션 데이터를 통한 반복은 다음 단계를 통해 달성 할 수 있습니다. 1. Session_start ()를 사용하여 세션을 시작하십시오. 2. $ _session 배열의 모든 키 값 쌍을 통해 Foreach 루프를 통과합니다. 3. 복잡한 데이터 구조를 처리 할 때 is_array () 또는 is_object () 함수를 사용하고 print_r ()를 사용하여 자세한 정보를 출력하십시오. 4. Traversal을 최적화 할 때 페이징을 사용하여 한 번에 많은 양의 데이터를 처리하지 않도록 할 수 있습니다. 이를 통해 실제 프로젝트에서 PHP 세션 데이터를보다 효율적으로 관리하고 사용하는 데 도움이됩니다.

이 세션은 서버 측 상태 관리 메커니즘을 통해 사용자 인증을 인식합니다. 1) 세션 생성 및 고유 ID의 세션 생성, 2) ID는 쿠키를 통해 전달됩니다. 3) ID를 통해 서버 저장 및 세션 데이터에 액세스합니다. 4) 사용자 인증 및 상태 관리가 실현되어 응용 프로그램 보안 및 사용자 경험이 향상됩니다.

tostoreauser'snameinaphpsession, startSessionstart_start (), wathsignthenameto $ _session [ 'username']. 1) useSentess_start () toinitializethesession.2) assimeuser'snameto $ _session [ 'username']

phpsession 실패 이유에는 구성 오류, 쿠키 문제 및 세션 만료가 포함됩니다. 1. 구성 오류 : 올바른 세션을 확인하고 설정합니다. 2. 쿠키 문제 : 쿠키가 올바르게 설정되어 있는지 확인하십시오. 3. 세션 만료 : 세션 시간을 연장하기 위해 세션을 조정합니다 .GC_MAXLIFETIME 값을 조정하십시오.

PHP에서 세션 문제를 디버그하는 방법 : 1. 세션이 올바르게 시작되었는지 확인하십시오. 2. 세션 ID의 전달을 확인하십시오. 3. 세션 데이터의 저장 및 읽기를 확인하십시오. 4. 서버 구성을 확인하십시오. 세션 ID 및 데이터를 출력, 세션 파일 컨텐츠보기 등을 통해 세션 관련 문제를 효과적으로 진단하고 해결할 수 있습니다.

Session_Start ()로 여러 통화를하면 경고 메시지와 가능한 데이터 덮어 쓰기가 발생합니다. 1) PHP는 세션이 시작되었다는 경고를 발행합니다. 2) 세션 데이터의 예상치 못한 덮어 쓰기를 유발할 수 있습니다. 3) Session_status ()를 사용하여 반복 통화를 피하기 위해 세션 상태를 확인하십시오.

SESSION.GC_MAXLIFETIME 및 SESSION.COOKIE_LIFETIME을 설정하여 PHP에서 세션 수명을 구성 할 수 있습니다. 1) SESSION.GC_MAXLIFETIME 서버 측 세션 데이터의 생존 시간을 제어합니다. 2) 세션 .Cookie_Lifetime 클라이언트 쿠키의 수명주기를 제어합니다. 0으로 설정하면 브라우저가 닫히면 쿠키가 만료됩니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

드림위버 CS6
시각적 웹 개발 도구
