이 글에서는 주로 Nginx+PHP 프로덕션 환경을 구축하기 위해 php-fpm을 설치하고 구성하는 방법을 소개합니다. php-fpm의 기능은 FastCGI 프로세스 관리를 PHP 패키지에 통합하는 것입니다. 필요한 친구는
nginx를 참조할 수 있습니다. 자체적으로는 처리할 수 없습니다. PHP는 단지 웹 서버일 뿐입니다. 요청이 수신되면 PHP 요청인 경우 처리를 위해 PHP 인터프리터로 전송되고 결과가 클라이언트에 반환됩니다.
nginx는 일반적으로 처리를 위해 fastcgi 관리 프로세스에 요청을 보냅니다. fascgi 관리 프로세스는 결과를 처리할 cgi 하위 프로세스를 선택하고 이를 nginx로 반환합니다.
이 기사에서는 만드는 방법을 소개하기 위해 php-fpm을 예로 사용합니다. nginx 지원 PHP
1. php-fpm
컴파일 및 설치PHP-FPM
PHP-FPM은 PHP FastCGI 관리자로, PHP에만 사용되며 http://php- fpm.org/download.
PHP-FPM은 실제로 FastCGI 프로세스 관리를 PHP 패키지에 통합하도록 설계된 PHP 소스 코드에 대한 패치입니다. PHP 소스 코드에 패치해야 하며, PHP를 컴파일하고 설치한 후에 사용할 수 있습니다.
새 버전의 PHP에는 php-fpm이 통합되어 있습니다. 더 이상 타사 패키지를 사용하는 것이 좋습니다. PHP-FPM은 더 나은 PHP 프로세스 관리 방법을 제공하고, 메모리와 프로세스를 효과적으로 제어할 수 있으며, PHP 구성을 원활하게 다시 로드할 수 있습니다. 이는spawn-fcgi보다 더 많은 장점을 가지고 있어 공식적으로 PHP에 포함됩니다. ./configure의 –enable-fpm 매개변수를 사용하여 PHP-FPM을 켤 수 있습니다. 다른 매개변수는 php에 대해 구성됩니다. 옵션의 구체적인 의미는 여기에서 확인할 수 있습니다.
설치 전 준비
centos에서 실행
yum -y install gcc automake autoconf libtool make yum -y install gcc gcc-c++ glibc yum -y install libmcrypt-devel mhash-devel libxslt-devel
libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel
새 버전의 php-fpm 설치(권장 설치 방법)
wget http://cn2.php.net/distributions/php-5.4.7.tar.gz tar zvxf php-5.4.7.tar.gz cd php-5.4.7 ./configure --prefix=/usr/local/php --enable-fpm --with-mcrypt
--enable-mbstring --disable-pdo --with-curl --disable-debug --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli --with-gd --with-jpeg-dir
make all install
위의 두 가지 php-fpm은 어떤 방법으로든 설치할 수 있습니다. 설치 후 내용은 /usr/local/php 디렉토리에 위치합니다
위로 php-fpm 설치가 완료됩니다.
다음은 php-fpm 실행 사용자를 설정하는 것입니다
cd /usr/local/php cp etc/php-fpm.conf.default etc/php-fpm.conf vi etc/php-fpm.conf
Modification
user = www-data group = www-data
www-data 사용자가 존재하지 않으면 www-data 사용자를 먼저 추가하세요
groupadd www-data useradd -g www-data www-data
2. nginx를 컴파일하고 설치합니다
3. php-fpm을 지원하도록 nginx 구성 파일을 수정합니다
nginx 설치가 완료된 후 nginx 구성 파일을 nginx.conf
로 수정합니다. 서버 섹션에 다음 구성을 추가하고 빨간색 콘텐츠 구성 표시에 주의하세요. 그렇지 않으면 입력 파일이 지정되지 않습니다.
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ .php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
IV. 테스트 PHP 파일 만들기
PHP 파일 만들기
/usr/local/nginx/html 아래에 index.php 파일을 생성하고, 다음 내용을 입력하세요.
<?php echo phpinfo(); ?>
5. 서비스 시작
php-fpm 및 nginx 시작
/usr/local/php/sbin/php-fpm #手动打补丁的启动方式/usr/local/php/sbin/php-fpm start sudo /usr/local/nginx/nginx
php-fpm 닫았다가 다시 시작하면 글 끝부분 참조
6. 브라우저 접속
http://your server ip/index.php에 접속하시면 php 정보를 보실 수 있습니다.
7. 오류 해결
Nginx를 사용하다 보면 502 Bad Gateway 및 504 Gateway Time-out 오류가 자주 발생합니다. Nginx+PHP-FPM을 사용하여 이러한 두 가지 일반적인 오류를 분석해 보겠습니다. 오류의 해결책.
1.502 잘못된 게이트웨이 오류
php.ini와 php-fpm.conf에는 각각 max_execution_time과 request_terminate_timeout이라는 두 가지 구성 항목이 있습니다.
이 두 항목은 PHP 스크립트의 최대 실행 시간을 구성하는 데 사용됩니다. 이 시간을 초과하면 PHP-FPM은 스크립트 실행을 종료할 뿐만 아니라 스크립트를 실행하는 작업자 프로세스도 종료합니다. 따라서 Nginx는 자신과 통신하기 위한 연결이 끊어진 것을 발견하고 클라이언트에 502 오류를 반환합니다.
1) Nginx 오류 액세스 로그:
2013/09/19 01:09:00 [error] 27600#0: *78887 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 192.168.1.101, server: test.com, request: "POST /index.php HTTP/1.1", upstream: "fastcgi://unix:/dev/shm/php-fcgi.sock:", host: "test.com", referrer: "http://test.com/index.php"2) PHP-FPM 오류 로그 :
WARNING: child 25708 exited on signal 15 (SIGTERM) after 21008.883410 seconds from start그러므로 긴 실행 시간으로 인해 PHP 스크립트가 종료되는 것을 방지하려면 이 두 항목의 값을 늘리면 됩니다. request_terminate_timeout은 max_execution_time을 재정의할 수 있습니다.
따라서 전역 php.ini를 변경하지 않으려면 PHP-FPM의 구성을 변경하면 됩니다.
그래서 max_fail을 늘리고 failure_timeout을 줄일 수 있습니다.
PHP-FPM设置的脚本最大执行时间已经够长了,但执行耗时PHP脚本时,发现Nginx报错从502变为504了。这是为什么呢? 以Nginx超时时间为90秒,PHP-FPM超时时间为300秒为例,报504 Gateway Timeout错误时的Nginx错误访问日志如下: 调高这三项的值(主要是read和send两项,默认不配置的话Nginx会将超时时间设为60秒)之后,504错误也解决了。 配置举例:
因为我们修改的只是PHP的配置,Nginx中也有关于与上游服务器通信超时时间的配置factcgi_connect/read/send_timeout。
2013/09/19 00:55:51 [error] 27600#0: *78877 upstream timed out (110: Connection timed out) while reading response header from upstream,
client: 192.168.1.101, server: test.com, request: "POST /index.php HTTP/1.1", upstream: "fastcgi://unix:/dev/shm/php-fcgi.sock:",
host: "test.com", referrer: "http://test.com/index.php"
而且这三项配置可以配置在http、server级别,也可以配置在location级别。担心影响其他应用的话,就配置在自己应用的location中吧。
要注意的是factcgi_connect/read/send_timeout是对FastCGI生效的,而proxy_connect/read/send_timeout是对proxy_pass生效的。location ~ \.php$ {
root /home/cdai/test.com;
include fastcgi_params;
fastcgi_connect_timeout 180;
fastcgi_read_timeout 600;
fastcgi_send_timeout 600;
fastcgi_pass unix:/dev/shm/php-fcgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/cdai/test.com$fastcgi_script_name;
}
위 내용은 Nginx+PHP 프로덕션 환경을 구축하려면 php-fpm을 설치하고 구성하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

여전히 인기있는 것은 사용 편의성, 유연성 및 강력한 생태계입니다. 1) 사용 편의성과 간단한 구문은 초보자에게 첫 번째 선택입니다. 2) 웹 개발, HTTP 요청 및 데이터베이스와의 우수한 상호 작용과 밀접하게 통합되었습니다. 3) 거대한 생태계는 풍부한 도구와 라이브러리를 제공합니다. 4) 활성 커뮤니티와 오픈 소스 자연은 새로운 요구와 기술 동향에 맞게 조정됩니다.

PHP와 Python은 웹 개발, 데이터 처리 및 자동화 작업에 널리 사용되는 고급 프로그래밍 언어입니다. 1.PHP는 종종 동적 웹 사이트 및 컨텐츠 관리 시스템을 구축하는 데 사용되며 Python은 종종 웹 프레임 워크 및 데이터 과학을 구축하는 데 사용됩니다. 2.PHP는 Echo를 사용하여 콘텐츠를 출력하고 Python은 인쇄를 사용합니다. 3. 객체 지향 프로그래밍을 지원하지만 구문과 키워드는 다릅니다. 4. PHP는 약한 유형 변환을 지원하는 반면, 파이썬은 더 엄격합니다. 5. PHP 성능 최적화에는 Opcache 및 비동기 프로그래밍 사용이 포함되며 Python은 Cprofile 및 비동기 프로그래밍을 사용합니다.

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP는 1994 년에 시작되었으며 Rasmuslerdorf에 의해 개발되었습니다. 원래 웹 사이트 방문자를 추적하는 데 사용되었으며 점차 서버 측 스크립팅 언어로 진화했으며 웹 개발에 널리 사용되었습니다. Python은 1980 년대 후반 Guidovan Rossum에 의해 개발되었으며 1991 년에 처음 출시되었습니다. 코드 가독성과 단순성을 강조하며 과학 컴퓨팅, 데이터 분석 및 기타 분야에 적합합니다.

PHP는 웹 개발 및 빠른 프로토 타이핑에 적합하며 Python은 데이터 과학 및 기계 학습에 적합합니다. 1.PHP는 간단한 구문과 함께 동적 웹 개발에 사용되며 빠른 개발에 적합합니다. 2. Python은 간결한 구문을 가지고 있으며 여러 분야에 적합하며 강력한 라이브러리 생태계가 있습니다.

PHP는 현대화 프로세스에서 많은 웹 사이트 및 응용 프로그램을 지원하고 프레임 워크를 통해 개발 요구에 적응하기 때문에 여전히 중요합니다. 1.PHP7은 성능을 향상시키고 새로운 기능을 소개합니다. 2. Laravel, Symfony 및 Codeigniter와 같은 현대 프레임 워크는 개발을 단순화하고 코드 품질을 향상시킵니다. 3. 성능 최적화 및 모범 사례는 응용 프로그램 효율성을 더욱 향상시킵니다.

phphassignificallyimpactedwebdevelopmentandextendsbeyondit

PHP 유형은 코드 품질과 가독성을 향상시키기위한 프롬프트입니다. 1) 스칼라 유형 팁 : PHP7.0이므로 int, float 등과 같은 기능 매개 변수에 기본 데이터 유형을 지정할 수 있습니다. 2) 반환 유형 프롬프트 : 기능 반환 값 유형의 일관성을 확인하십시오. 3) Union 유형 프롬프트 : PHP8.0이므로 기능 매개 변수 또는 반환 값에 여러 유형을 지정할 수 있습니다. 4) Nullable 유형 프롬프트 : NULL 값을 포함하고 널 값을 반환 할 수있는 기능을 포함 할 수 있습니다.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

Dreamweaver Mac版
시각적 웹 개발 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.
