방금 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 파일을 생성하고 편집하세요
<?php phpinfo(); ?>
저장 후 브라우저를 열고 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