Referência: http://www.cnblogs.com/huayangmeng/archive/2011/06/15/2081337.html
Configure o ambiente nginx + php no Windows
Quando acabei de ver a palavra nginx, fiquei curioso sobre sua pronúncia (motor x). Minha tradução literal é "motor x". Geralmente, "motor x" é usado para indicar desempenho e "x" parece significar "xtras (efeito extra) ", então a palavra inteira significa algo como" efeito extremo "e" desempenho extra ". Claro, isso não é aqui para conversar, o que está acima é uma digressão.
Comparado com o apache familiar e IIS, as vantagens do nginx, pelo que eu sei de uma forma simples, são "proxy reverso" e "balanceamento de carga". Portanto, considerando que pode economizar recursos para o servidor da Web, pode substituir o apache para fornecer serviços da Web. Então, vamos direto ao ponto, o nginx tem tantas vantagens, como configurar o ambiente nginx + php no windows? Ainda existem tantos artigos reimpressos na Internet. Aqui está meu processo de configuração para apresentar:
1. O pacote de aplicativos que precisa ser preparado primeiro.
nginx :nginx / Windows-1.0.4
php: php-5.2.16-nts-Win32-VC6-x86.zip (php em nginx é executado no modo FastCGI, portanto, baixamos o pacote php não seguro para thread que é nts)
(Também usado) RunHiddenConsole: RunHiddenConsole.zip
2. Instalação e configuração.
1) Instalação e configuração do PHP.
Descompacte o pacote php baixado diretamente e vá para o diretório wnmp (D: \ wnmp) da unidade D. Aqui, renomeie a pasta descompactada para php5. Entre na pasta para modificar o arquivo recomendado por php.ini para php.ini e abra-o com Editplus ou Notepad ++. virar para cima
extension_dir = " ./ext "
mudar para
extension_dir = " D: / wnmp / php5 / ext "
; extension = php_mysql.dll ; extension = php_mysqli.dll
Depois de especificar o caminho ext do php, apenas remova o ";" correspondente na frente do pacote de expansão necessário. Abra php_mysql.dll e php_mysqli.dll aqui para permitir que php suporte mysql. Claro, não se esqueça que o passo muito importante é copiar o arquivo libmysql.dll do diretório php5 para o diretório C: \ Windows. Você também pode especificar o caminho na variável do sistema. Claro, eu escolhi o mais conveniente método ^ _ ^.
Neste ponto, o php já pode suportar mysql.
Em seguida, configuraremos o php para que ele possa ser combinado com o nginx. virar para cima
; cgi.fix_pathinfo = 1
Removemos o título aqui.
cgi.fix_pathinfo = 1
2) Instalação e configuração do 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 (); ?>
Depois de salvar, abra o navegador e digite "http: //localhost/phpinfo.php", se você ver
Isso significa que o ambiente do nginx + php foi configurado, hehe ~
Arquivo de configuração 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;
# }
#}
}
Início rápido 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
Feche rapidamente 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