事先声明,我用的是http://nginxcn.com/站BBS里面发布的NPMserver5.0,这个套件已经快有一年没更新了,所以不是最新的nginx,php,和mysql,但是也没落后多久。

首先,在上述网址找到下载地址,以前有个安装过程,今天我找到的是直接解压缩,建议能“安装”的就安装,其实就是解压一下,但是这个过程中,它会把你的NPMserver的路径写到各个配置文件里面去,

假如你下的是压缩版,那么需要到以下地方自行把NPMserver的安装目录改成你自己的

/config.ini, /config.xml, /MySQL5.1/my.ini, /nginx/vhost.conf, php/php.ini

比较麻烦是吧,有全文搜索工具的,可以直接在目录里面查找。这是准备工作,保证错误不要出在路径上,这可是低级的无意义错误。

 

路径改好后,php.ini基本上不要做什么改动,除非你要装Xdebug给netbean用,那么就像我之前这篇文章一样进行设置,不谈。

主要配置nginx,nginx的配置不熟的人是会非常头痛的,NPMserver有个好处,他把配置文件给分成了一个服务器配置文档(nginx.conf)和一个虚拟主机配置文档(vhost.conf),这样你分开设置,非常方便

其中虚拟主机配置方面,这个软件还提供了ini,xml以及客户端的方式让你来填写,很不错,但是我没时间测那么多,直接是在配置文件里面写的,下面是一些需要注意的地方

1,nginx.conf基本上你不要去动它,默认配置基本上可以跑很多网站了,你要去动的话,先了解清楚应该怎么改。

2,下面这一段会是默认在vhost.conf里面的

server { listen 80; server_name nginx.a; location / { root I:/NPMserv/www; index index.html index.htm index.php default.php; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ .*\.php?$ { root D:/NPMserv/www; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME I:/NPMserv/www$fastcgi_script_name; include fastcgi_params; } }

上一篇文章我们给apache配置了虚拟路径,现在我们把这个虚拟路径也配到nginx里面去:

server { listen 80; server_name www.dxpie.com event.dxpie.com; location / { root "I:/EasyPHP/www/pie"; index index.html index.htm index.php default.php; if ($host ~ ^www\.dxpie\.com.*$) { rewrite ^/?do-(.*)\.html?$ /index.php?act=public&todo=$1 last; } if ($host ~ ^event\.dxpie\.com.*$) { rewrite ^/?([a-zA-Z_]+)(-(\d*))?-p(\d*)\.html?$ /event.php?mod=event&act=$1&id=$3&page=$4&todo=pager last; rewrite ^/?([a-zA-Z_]+)(-(\d*))?-ap(\d*)\.html?$ /event.php?mod=event&act=$1&id=$3&page=$4&todo=ajaxpager last; rewrite ^/?([a-zA-Z_]+)(-(\d*))?\.html?$ /event.php?mod=event&act=$1&id=$3 last; rewrite ^/?(\w+)-(\d+)-c(\d)(\d+)\.html?$ event.php?mod=event&act=$1&pid=$2&gid=$4&index=$3&level=2 last; rewrite ^/?(\w+)-(\d+)-c(\d)(\d+)-ap(\d+)\.html?$ event.php?mod=event&act=$1&pid=$2&gid=$4&index=$3&level=2&page=$5&todo=ajaxpager last; break; } } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ .*\.php?$ { root "I:/EasyPHP/www/pie"; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME "I:/EasyPHP/www/pie/$fastcgi_script_name"; include fastcgi_params; } }

我用这个做例子,是因为可以解决很多问题

2.1,每一个主机,就是一个server{}

2.2,server_name, 可以同时配置多个域名,而不要像apache一样,一个域名要写个节点

2.3,主机下面设server_name, 配置根目录,配置该路径的fastcig参数,自己看代码

2.4,上面的URL重写演示了nginx的规则,对应的.htaccess列下下面,没时间学习的话,就从这两段看一下差别吧:

RewriteCond %{HTTP_HOST} ^www\.dxpie\.com$ RewriteRule ^do-(.*)\.html?$ index.php?act=public&todo=$1 [L] RewriteRule ^getfocus\.html?$ index.php?todo=focus [L] RewriteCond %{HTTP_HOST} ^event\.dxpie\.com$ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{HTTP_HOST} ^event\.dxpie\.com$ RewriteRule ^([a-zA-Z_]+)(-(\d*))?\.html?$ event.php?mod=event&act=$1&id=$3 [QSA,L] RewriteCond %{HTTP_HOST} ^event\.dxpie\.com$ RewriteRule ^([a-zA-Z_]+)(-(\d+))?-p(\d+)\.html?$ event.php?mod=event&act=$1&id=$3&page=$4&todo=pager [QSA,L] RewriteCond %{HTTP_HOST} ^event\.dxpie\.com$ RewriteRule ^([a-zA-Z_]+)(-(\d*))?-ap(\d*)\.html?$ event.php?mod=event&act=$1&id=$3&page=$4&todo=ajaxpager [QSA,L]

相比较而言,nginx的if语句更容易让大多数人接受吧

 

2.5,最后一节的php配置,经过我的多次测试,光把默认的fastcgi_params给include进来是不够的,所以加了这一行:

fastcgi_param SCRIPT_FILENAME “目录位置/$fastcgi_script_name”;照抄就是了,已经测试很多回了,愿意解释的可以留言:)

 

3,经过上面的这个例子,配别的路径也就很称手了,没有url重写的话,会简洁很多,基本上只要加一下fastcgi_param这个就可以了,比如我把之前同easyphp一起装下来的phpmyadmin给虚拟进来,(我的apache,php,mysql用的是EASYPHP,相当强悍+方便,推荐在win上使用,请google之),那么我这么配置

 

server { listen 80; server_name my.sql; location / { root "I:/EasyPHP/phpmyadmin"; index index.html index.htm index.php default.php; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ~ .*\.php?$ { root "I:/EasyPHP/phpmyadmin"; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME "I:/EasyPHP/phpmyadmin/$fastcgi_script_name"; include fastcgi_params; } }

 

注意,my.sql是我在hosts文件里面指向127.0.0.1的,这样方便我以后直接用这个域名管理数据库

 

4,当前这么访问到的数据库好像还是nginx的,既然我之前已经有了环境,那么肯定要把之前的用上,于是轮到/MySQL5.1/my.ini出场了,把里面的datadir改成你数据库的路径,basedir不要动:

 

[mysqld] basedir=I:/NPMserv/MySQL5.1 ;datadir=I:/NPMserv/MySQL5.1/data 这是原来的 datadir="I:/EasyPHP/mysql/data" port=3306 interactive_timeout=240 wait_timeout=240

 

现在启动npmserver试试, 访问localhost,是不是看到了经典的nginx界面?然后试试几个虚拟主机目录,phpmyadmin,是不是都成功了?不行的话仔细对着上面看一下。

 

5,顺便分享一下python在nginx上我的配置

#python server { listen 80; server_name py.thon; location / { # host and port to fastcgi server fastcgi_pass 127.0.0.1:9000; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param QUERY_STRING $query_string; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_pass_header Authorization; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; fastcgi_intercept_errors off; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location ^~ /media/ { alias "I:/python26/Lib/site-packages/django/contrib/admin/media/"; } location ^~ /site_media/{ alias "E:/codes/python/newtest/media/"; } location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov)$ { root "E:/codes/python/newtest"; access_log off; } }

 

你会发现还是有很大不同,当然pytoon加nginx和python加apache我会另外写文了。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2023-03-09
  • 2021-11-27
  • 2021-11-27
猜你喜欢
  • 2021-10-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-11
  • 2022-12-23
  • 2021-05-29
相关资源
相似解决方案