参照:http://www.cnblogs.com/huayangmeng/archive/2011/06/15/2081337.html
Windowsでnginx + php環境を構成する
nginxという単語を見たとき、その発音(engine x)に興味がありました。私の直訳は「enginex」です。通常、「engine x」はパフォーマンスを示すために使用され、「x」は主に「xtras」を意味するように見えます(エクストラエフェクト)」という意味で、「エクストリームエフェクト」や「エクストラパフォーマンス」などを意味します。もちろん、これはチャットするためにここにあるのではありません、上記は余談です。
おなじみのApacheやIISと比較すると、nginxには、私が簡単に理解できる限り、「リバースプロキシ」と「負荷分散」の利点があります。したがって、Webサーバーのリソースを節約できることを考えると、Apacheを置き換えてWebサービスを提供できます。それでは、要点を説明しましょう。nginxには非常に多くの利点があります。Windowsでnginx + php環境を構成する方法は?インターネット上にはまだたくさんの転載記事があります。紹介する構成プロセスは次のとおりです。
1.最初に準備する必要があるアプリケーションパッケージ。
nginx:nginx / Windows-1.0.4
php:php-5.2.16-nts-Win32-VC6-x86.zip (nginxでのphpはFastCGIモードで実行されるため、ntsであるスレッドセーフではないphpパッケージをダウンロードします)
(これも使用)RunHiddenConsole:RunHiddenConsole.zip
2.インストールと構成。
1)PHPのインストールと構成。
ダウンロードしたphpパッケージを直接解凍し、ドライブDのwnmpディレクトリ(D:\ wnmp)に移動します。ここで、解凍したフォルダーの名前をphp5に変更します。php.ini推奨ファイルをphp.iniに変更するフォルダーを入力し、EditplusまたはNotepad ++で開きます。現れる
extension_dir = " ./ext "
への変更
extension_dir = " D:/ wnmp / php5 / ext "
;拡張子 = php_mysql.dll ;拡張子 = php_mysqli.dll
phpのextパスを指定した後、必要な拡張パッケージの前にある対応する「;」を削除するだけです。ここでphp_mysql.dllとphp_mysqli.dllを開いて、phpがmysqlをサポートできるようにします。もちろん、非常に重要な手順は、php5ディレクトリのlibmysql.dllファイルをC:\ Windowsディレクトリにコピーすることです。システム変数でパスを指定することもできます。もちろん、より便利なものを選択しました。メソッド^ _ ^。
この時点で、phpはすでにmysqlをサポートできます。
次に、phpをnginxと組み合わせることができるようにphpを構成します。現れる
; cgi.fix_pathinfo = 1
ここでタイトルを削除します。
cgi.fix_pathinfo = 1
2)nginxのインストールと構成。
把下载好的nginx-1.0.4的包同样解压到D盘的wnmp目录下,并重命名为nginx。接下来,我们来配置nginx,让它能够和php协同工作。进入nginx的conf目录,打开nginx的配置文件nginx.conf,找到
location / { root html; #这里是站点的根目录 index index.html index.htm; }
将root html;改为root D:/wnmp/www;
再往下,找到
# 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; #}
先将前面的“#”去掉,同样将root html;改为root D:/wnmp/www;。再把标记为红色的/scripts改为“$document_root”,这里的“$document_root”就是指前面“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 ; }
保存配置文件,就可以了。
nginx+php的环境就初步配置好了,来跑跑看。我们可以输入命令
来启动php,并手动启动nginx,当然也可以利用脚本来实现。
首先把下载好的RunHiddenConsole.zip包解压到nginx目录内,RunHiddenConsole.exe的作用是在执行完命令行脚本后可以自动关闭脚本,而从脚本中开启的进程不被关闭。然后来创建脚本,命名为“start_nginx.bat”,我们在Notepad++里来编辑它
@echo off REM Windows 下无效 REM set PHP_FCGI_CHILDREN=5 REM 每个进程处理的最大请求数,或设置为 Windows 环境变量 set PHP_FCGI_MAX_REQUESTS = 1000 echo Starting PHP FastCGI ... RunHiddenConsole D: / wnmp / php5 / php-cgi . exe -b 127.0 . 0.1 : 9000 -c D: / wnmp / php5 / php . ini echo Starting nginx ... RunHiddenConsole D: / wnmp / nginx / nginx . exe -p D: / wnmp / nginx
再另外创建一个名为stop_nginx.bat的脚本用来关闭nginx
@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構成ファイル
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include 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 logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 81;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
root D:\php\pingqiujia;
#root "D:/www/project/pingqiujia/";
location / {
index index.html index.htm index.php;
#autoindex on;
}
if ($request_filename !~ (static|tmp|docment|robots\.txt|ceshi.php|index\.php.*) ) {
rewrite ^/(.*)$ /index.php?$1 last;
}
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
#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 html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# 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;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
クイックスタートstart_nginx.bat
@echo off
echo Starting PHP FastCGI...
D:\program\nginx-1.6.3\RunHiddenConsole.exe D:\program\php-5.6.15-nts-Win32-VC11-x64\php-cgi.exe -b 127.0.0.1:9000 -c D:\program\php-5.6.15-nts-Win32-VC11-x64\php.ini
echo Starting nginx...
D:\program\nginx-1.6.3\RunHiddenConsole.exe D:/program/nginx-1.6.3/nginx.exe -p D:/program/nginx-1.6.3
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