>백엔드 개발 >PHP 튜토리얼 >Windows platform_php 기술에서 nginx php 환경 구성

Windows platform_php 기술에서 nginx php 환경 구성

WBOY
WBOY원래의
2016-05-16 20:03:491078검색

방금 nginx라는 단어를 봤는데 그 발음(engine x)이 매우 궁금합니다. 직역하면 "engine x"입니다. 일반적으로 "engine"은 성능을 의미하고 "x"는 대부분 "xtras(추가 효과)"를 의미합니다. )", 전체 단어는 "극한 효과" 및 "추가 성능"과 같은 것을 의미합니다. 물론 이것은 여기서의 채팅이 아니며 위의 내용은 여담입니다.

제가 아는 한 익숙한 Apache 및 IIS와 비교했을 때 nginx의 장점은 "역방향 프록시"와 "로드 밸런싱"에 있습니다. 따라서 웹 서버의 자원 절약 능력을 고려하면 아파치를 대체하여 웹 서비스를 제공할 수 있다. 이제 nginx에는 많은 장점이 있는데 Windows에서 nginx PHP 환경을 구성하는 방법은 무엇입니까? 아직도 온라인에서 재인쇄되고 재인쇄되는 기사가 너무 많습니다. 여기서는 구성 프로세스를 소개합니다.

1. 지원서 패키지를 먼저 준비해야 합니다.

nginx:nginx/Windows-1.0.4
php:php-5.2.16-nts-Win32-VC6-x86.zip
RunHiddenConsole: RunHiddenConsole.zip
nginx의 PHP는 FastCGI 모드에서 실행되므로 스레드로부터 안전하지 않은 nts PHP 패키지를 다운로드합니다.

2. 설치 및 구성.

1) PHP 설치 및 구성.
다운로드한 php 패키지를 직접 압축을 풀고 D 드라이브(D:wnmp)의 wnmp 디렉터리로 이동합니다. 여기서 압축이 풀린 폴더의 이름을 php5로 변경합니다. 폴더에 들어가서 php.ini 권장 파일을 php.ini로 수정한 뒤 에디트플러스나 메모장으로 열어보세요. 발견

extension_dir = "./ext"

으로 변경되었습니다.
extension_dir = "D:/wnmp/php5/ext"

아래를 보고 찾아보세요

;extension=php_mysql.dll;extension=php_mysqli.dll

실제로는 켜져 있을 수도 있습니다

extension=php_bz2.dll
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_exif.dll
extension=php_mcrypt.dll
extension=php_mhash.dll
extension=php_msql.dll
extension=php_mssql.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_openssl.dll
extension=php_pdo.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
extension=php_snmp.dll
extension=php_sockets.dll
extension=php_sqlite.dll
extension=php_xsl.dll
extension=php_zip.dll

이전에 PHP의 확장 경로를 지정한 후 필요한 확장 패키지 앞에 있는 해당 ";"를 제거하면 됩니다. php가 mysql을 지원하도록 하려면 여기에서 php_mysql.dll 및 php_mysqli.dll을 엽니다.

물론, php5 디렉터리에 있는 libmysql.dll 파일을 C:Windows 디렉터리에 복사하는 것이 매우 중요한 단계라는 점을 잊지 마세요. 물론 저는 시스템 변수에 경로를 지정할 수도 있습니다. 여기가 더 편리한 방법입니다^_ ^. (복사 없이도 가능한 것으로 테스트 결과 나왔습니다)

이 시점에서 PHP는 이미 mysql을 지원할 수 있습니다.

다음으로 php가 nginx와 결합될 수 있도록 php를 구성합니다. 발견

;cgi.fix_pathinfo=1

여기서 세미콜론을 제거해 보겠습니다.

cgi.fix_pathinfo=1

이 단계는 매우 중요합니다. PHP의 CGI 설정은 다음과 같습니다.

2) nginx 설치 및 구성

다운로드한 nginx-1.0.4 패키지를 D 드라이브의 wnmp 디렉터리에 추출하고 이름을 nginx로 바꿉니다. 다음으로, PHP에서 작동할 수 있도록 nginx를 구성합니다. nginx conf 디렉터리에 들어가서 nginx 구성 파일 nginx.conf를 열고

을 찾습니다.
location / {
  root html;   #这里是站点的根目录 index index.html
  index.htm;
}

루트 html을 루트 D:/wnmp/www와 index.php로 변경합니다.

location / {
  root D:/wnmp/www;  #这里是站点的根目录 
  index index.php index.html index.htm;
}

여기서 경로 구분 기호는 모호함을 피하기 위해 Windows 대신 /여야 한다는 점에 유의해야 합니다.
더 아래로 가서

를 찾아보세요.
# 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 /scripts$fastcgi_script_name;
# include fastcgi_params;
#}

먼저 앞에 있는 #을 제거하고 루트 html;을 루트 D:/wnmp/www;로 변경합니다. 그런 다음 빨간색으로 표시된 /scripts를 $document_root로 변경합니다. 여기서 $document_root는 루트가 가리키는 사이트 경로를 나타냅니다.

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
  root D:/wnmp/www;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
  include fastcgi_params;
}

error.log의 저장 디렉터리를 설정하고 #error_log 로그/error.log;의 #위치를 설정합니다. 기본적으로 error.log는 Nginx 설치 디렉터리의 로그 디렉터리에 저장됩니다.

구성 파일을 저장하면 준비가 끝납니다.

nginx php 환경이 처음 구성되었으니 살펴보겠습니다. 다음 명령을 입력할 수 있습니다:

php-cgi.exe -b 127.0.0.1:9000 -c D:/wnmp/www/php/php.ini

PHP를 시작하고 nginx를 수동으로 시작합니다(실행 불가능할 수 있음). 물론 이를 달성하기 위해 스크립트를 사용할 수도 있습니다.

먼저 다운로드한 RunHiddenConsole.zip 패키지를 nginx 디렉터리에 압축을 풉니다. RunHiddenConsole.exe의 기능은 명령줄 스크립트를 실행한 후 자동으로 스크립트를 닫는 것이며, 스크립트에서 시작된 프로세스는 닫히지 않습니다. 그런 다음 start_nginx.bat라는 스크립트를 생성하고 메모장에서 편집합니다.

@echo off
REM Windows 下无效
REM set PHP_FCGI_CHILDREN=5

REM 每个进程处理的最大请求数,或设置为 Windows 环境变量
set PHP_FCGI_MAX_REQUESTS=1000
 
echo Starting PHP FastCGI...
RunHiddenConsole D:/phpsetup/php-5.4.45-nts-Win32-VC9-x86/php-cgi.exe -b 127.0.0.1:9000 -c D:/phpsetup/php-5.4.45-nts-Win32-VC9-x86/php.ini
 
echo Starting nginx...
RunHiddenConsole D:/phpsetup/nginx-1.6.0/nginx.exe -p D:/phpsetup/nginx-1.6.0

nginx를 종료하기 위해 stop_nginx.bat라는 다른 스크립트를 만듭니다.

@echo off
echo Stopping nginx... 
taskkill /F /IM nginx.exe > nul
echo Stopping PHP FastCGI...
taskkill /F /IM php-cgi.exe > nul
exit

이렇게 해서 서비스 스크립트가 만들어졌습니다. start_nginx.bat를 두 번 클릭하고 프로세스 관리자를 확인하여 두 개의 nginx.exe 프로세스와 하나의 php-cgi.exe 프로세스가 있는지 확인하십시오.

이렇게 하면 nginx 서비스가 시작되고, php도 fastCGI 모드로 실행됩니다.
사이트 디렉토리로 이동하여 새 phpinfo.php 파일을 생성하고 편집하세요

<&#63;php
phpinfo();
&#63;>

저장 후 브라우저를 열고 http://localhost/phpinfo.php를 입력하세요.

이 보이면

nginx php 환경이 구성되었다는 뜻이군요 ㅎㅎ~

Nginx 403 금지 솔루션

nginx 403이 금지되는 두 가지 일반적인 이유는 인덱스 파일이 부족하고 다른 하나는 권한 문제입니다.

1. index.html 또는 index.php 파일이 없습니다

코드는 다음과 같습니다.

server { 
 listen 80; 
 server_name localhost; 
 index index.php index.html; 
 root /var/www;
}

如果在/var/www下面没有index.php,index.html的时候,直接访问域名,找不到文件,会报403 forbidden。
例如:你访问www.test.com而这个域名,对应的root指定的索引文件不存在。

权限问题

对于PHP而言,如果nginx用户没有web目录的权限,则会导致该错误。
解决办法:修改web目录的读写权限,或者是把nginx的启动用户改成目录的所属用户,重起一下就能解决。 如:
代码如下(Linux下):

chown -R nginx_user:nginx_user /htdocs

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