windows 下使用Nginx替代apache作为服务器

2017年3月29日

windows 下使用Nginx替代apache作为服务器 Or Nginx + Apache + PHP

首先去下载一个Nginx的包.. http://nginx.org/en/download.html 有三个版的(Mainline version / Stable version / Legacy versions ) 下载稳定版的 即Stable version ,

在继续确认原先的的apache 的环境已安装, 这里测试的自己搭配安装的方式 例如我的 LAMP环境结构:

CMD
C:\Users\Administrator>d:
D:\>cd LAMP
D:\LAMP>dir
驱动器 D 中的卷是 软件
卷的序列号是 000E-8524
D:\LAMP 的目录
2017/03/29 周三 17:11
2017/03/29 周三 17:11..
2015/03/22 周日 18:58Apache2
2015/07/02 周四 16:07MySQL
2017/03/29 周三 17:17nginx-1.10.3
2015/07/03 周五 10:38php-5.2.17
2015/07/01 周三 16:18php-5.4.5
2016/09/26 周一 17:47www   web目录
下载后就可以解压 解压后如图所示:

这里得去php文件夹那里, 把那个php.ini Copy一份, 命名为php-cli.ini 这个就是为了给Nginx玩的. 而不会影响Apache 的使用....
测试时我没有复制直接使用的 php.ini

好了. 到这里, 就打开php-cli.ini(建议文本器打开)

配置一下下面几个 直接查找就行了::

  1. enable_dl = On;
  2. cgi.force_redirect = 0;
  3. cgi.fix_pathinfo=1;
  4. fastcgi.impersonate = 1;
  5. cgi.rfc2616_headers = 1;

如果Apache 已启动先停止或者更改apache的端口 Apache和Nginx 默认使用的都是80
修改端口: D:\LAMP\Apache2\conf\httpd.conf
找到 Listen 80 更改为 Listen 8099 或者其他端口
修改虚拟目录配置: D:\LAMP\Apache2\conf\extra\httpd-vhosts.conf
将 更改为
重启 apache

修改 nginx 的配置 直接贴上我的配置

  1. #user choies webapps;
  2. worker_processes 1;
  3. error_log logs/error.log warn;
  4. #pid /var/run/nginx.pid;
  5. #worker_rlimit_nofile 12040;
  6. #worker_rlimit_nofile 65535;
  7. events {
  8.      worker_connections 1024;
  9. }
  10. http {
  11.     include mime.types;
  12.     default_type application/octet-stream;
  13.     log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
  14.     access_log logs/access.log main;
  15.     sendfile on;
  16.     tcp_nopush on;
  17.     server_tokens off;
  18.     types_hash_max_size 2048;
  19.     keepalive_timeout 180;
  20.     proxy_buffering off;
  21.     fastcgi_keep_conn on;
  22.     gzip on;
  23.     gzip_min_length 1k;
  24.     gzip_buffers 4 256k;
  25.     gzip_http_version 1.0;
  26.     gzip_vary on;
  27.    gzip_disable "MSIE [1-6]\.";
  28.    gzip_comp_level 7;
  29.    gzip_types text/plain image/gif image/jpeg image/png application/javascript application/x-javascript application/xml application/json application/xml+rss text/css text/javascript;
  30.     #limit_conn_zone $binary_remote_addr zone=addr:10m;
  31.     #limit_req_zone $binary_remote_addr zone=req_one:10m rate=15r/s;
  32.     proxy_temp_path temp/proxy_temp/temp;
  33.     proxy_cache_path temp/proxy_temp/cache levels=1:2 keys_zone=cache:10m max_size=100m;
  34.     proxy_cache_key "$scheme://$host$uri";
  35.     include sites/*.conf;
  36. }

在conf目录下新建一个 sites的文件夹

建立一个 phpmyadmin的配置 mysql.world-alive.xyz.conf

  1. server {
  2.     listen 80;
  3.     server_name mysql.world-alive.xyz;
  4.     root D:/LAMP/www/phpMyAdmin;
  5.     access_log logs/mysql-access.log;
  6.     error_log logs/mysql-error.log;
  7.     set $root_path D:/LAMP/www/phpMyAdmin;
  8.     location / {
  9.          index index.php index.html index.htm;
  10.          try_files $uri $uri/ index.php$uri?$args;
  11.     }
  12.     location ~ \.php$ {
  13.          root $root_path;
  14.          proxy_intercept_errors on;
  15.          proxy_buffer_size 128k;
  16.          proxy_buffers 4 128k;
  17.          fastcgi_keep_conn on;
  18.          fastcgi_buffers 16 128k;
  19.          fastcgi_buffer_size 128k;
  20.          fastcgi_pass 127.0.0.1:9000;
  21.         #fastcgi_pass unix:/var/run/php5-fpm.sock;
  22.          fastcgi_read_timeout 240;
  23.          fastcgi_index index.php;
  24.          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  25.          include fastcgi_params;
  26.         #include fastcgi_params.conf;
  27.     }
  28. }

OK 现在就可以打开nginx.exe了

CMD -> d: -> cd LAMP/nginx-1.10.3
nginx.exe -t
D:\LAMP\nginx-1.10.3>nginx.exe -t
nginx: the configuration file D:\LAMP\nginx-1.10.3/conf/nginx.conf syntax is ok
nginx: configuration file D:\LAMP\nginx-1.10.3/conf/nginx.conf test is successful

启动Nginx
nginx.exe
添加 host
127.0.0.1 mysql.world-alive.xyz

建立 D:/LAMP/www/phpMyAdmin
到站点目录下,新建一个phpinfo.php的文件,在里面编辑

新建一个index.html 随便写点啥
例如:Hello

浏览器中打开 mysql.world-alive.xyz 就可以看到了 但是访问mysql.world-alive.xyz/phpinfo.php 就无法访问了,原因是php并没有和nginx关联 即 fastcgi_pass 无效
启动 php-cgi

CMD -> d: -> cd LAMP\php-5.4.5
php-cgi -b 127.0.0.1:9000

这时候刷新页面 就可以看到phpinfo 的信息了 , 但是你会发现这时候的CMD已经不能动了 , 并且不能关闭这很不方便所以使用RunHiddenConsole 管理

Windows 下使用 RunHiddenConsole 启动 nginx、php

下载 RunHiddenConsole.zip

首先把下载好的RunHiddenConsole.zip包解压到nginx目录内,RunHiddenConsole.exe的作用是在执行完命令行脚本后可以自动关闭脚本,而从脚本中开启的进程不被关闭。然后来创建脚本,命名为“start_nginx.bat”,我们在Notepad++里来编辑它

@echo off
REM Windows 下无效
REM set PHP_FCGI_CHILDREN=5REM 每个进程处理的最大请求数,或设置为 Windows 环境变量
set PHP_FCGI_MAX_REQUESTS=1000echo Starting PHP FastCGI...
RunHiddenConsole D:/LAMP/php-5.4.5/php-cgi.exe -b 127.0.0.1:9000 -c D:/LAMP/php-5.4.5/php.iniecho Starting nginx...
RunHiddenConsole D:/LAMP/nginx-1.10.3/nginx.exe -p D:/LAMP/nginx-1.10.3/

再另外创建一个名为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的进程呢?

浏览器输入“http://localhost/phpinfo.php”,如果看到

参考文档 : http://www.cnblogs.com/wherein/p/6225705.html
http://www.cnblogs.com/huayangmeng/archive/2011/06/15/2081337.html

没有评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注