windows 下使用Nginx替代apache作为服务器 Or Nginx + Apache + PHP
首先去下载一个Nginx的包.. http://nginx.org/en/download.html 有三个版的(Mainline version / Stable version / Legacy versions ) 下载稳定版的 即Stable version ,
在继续确认原先的的apache 的环境已安装, 这里测试的自己搭配安装的方式 例如我的 LAMP环境结构:
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(建议文本器打开)
配置一下下面几个 直接查找就行了::
- enable_dl = On;
- cgi.force_redirect = 0;
- cgi.fix_pathinfo=1;
- fastcgi.impersonate = 1;
- 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 的配置 直接贴上我的配置
- #user choies webapps;
- worker_processes 1;
- error_log logs/error.log warn;
- #pid /var/run/nginx.pid;
- #worker_rlimit_nofile 12040;
- #worker_rlimit_nofile 65535;
- 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;
- server_tokens off;
- types_hash_max_size 2048;
- keepalive_timeout 180;
- proxy_buffering off;
- fastcgi_keep_conn on;
- gzip on;
- gzip_min_length 1k;
- gzip_buffers 4 256k;
- gzip_http_version 1.0;
- gzip_vary on;
- gzip_disable "MSIE [1-6]\.";
- gzip_comp_level 7;
- 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;
- #limit_conn_zone $binary_remote_addr zone=addr:10m;
- #limit_req_zone $binary_remote_addr zone=req_one:10m rate=15r/s;
- proxy_temp_path temp/proxy_temp/temp;
- proxy_cache_path temp/proxy_temp/cache levels=1:2 keys_zone=cache:10m max_size=100m;
- proxy_cache_key "$scheme://$host$uri";
- include sites/*.conf;
- }
在conf目录下新建一个 sites的文件夹
建立一个 phpmyadmin的配置 mysql.world-alive.xyz.conf
- server {
- listen 80;
- server_name mysql.world-alive.xyz;
- root D:/LAMP/www/phpMyAdmin;
- access_log logs/mysql-access.log;
- error_log logs/mysql-error.log;
- set $root_path D:/LAMP/www/phpMyAdmin;
- location / {
- index index.php index.html index.htm;
- try_files $uri $uri/ index.php$uri?$args;
- }
- location ~ \.php$ {
- root $root_path;
- proxy_intercept_errors on;
- proxy_buffer_size 128k;
- proxy_buffers 4 128k;
- fastcgi_keep_conn on;
- fastcgi_buffers 16 128k;
- fastcgi_buffer_size 128k;
- fastcgi_pass 127.0.0.1:9000;
- #fastcgi_pass unix:/var/run/php5-fpm.sock;
- fastcgi_read_timeout 240;
- fastcgi_index index.php;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- include fastcgi_params;
- #include fastcgi_params.conf;
- }
- }
OK 现在就可以打开nginx.exe了
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
php-cgi -b 127.0.0.1:9000
这时候刷新页面 就可以看到phpinfo 的信息了 , 但是你会发现这时候的CMD已经不能动了 , 并且不能关闭这很不方便所以使用RunHiddenConsole 管理
Windows 下使用 RunHiddenConsole 启动 nginx、php
首先把下载好的RunHiddenConsole.zip包解压到nginx目录内,RunHiddenConsole.exe的作用是在执行完命令行脚本后可以自动关闭脚本,而从脚本中开启的进程不被关闭。然后来创建脚本,命名为“start_nginx.bat”,我们在Notepad++里来编辑它
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 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
没有评论