前段时间在学习thinkphp5,并动手制作了一个电影网站,考虑到搜索引擎收录问题,所以就用了自定义路由模式将所有的url都伪静态化,包括搜索页面也全都伪静态化。结果发现,伪静态之后,URL中的中文并不能完全兼容,个别汉字还是有乱码的情况出现,刚开始还是以为是thinkphp这框架没写好导致,调试了半天发现原来是$_SERVER这个PHP的系统变量的问题,看来是PHP或apache的问题。
在网上找了很多资料,有很多人都说,apache在中文处理上还不完美,可以考虑换成nginx,去官网一看,还真有windows版本可以下载(百度很容易找到,就不贴网址了),我下载了最新版本1.13.12的nginx,一看只有3M多,还真是和网上说的一样,绝对的轻量级web server,接下来说下安装步骤:
安装nginx真的是很简单,解压后直接双击运行nginx.exe就可以,当然前提是80端口不能被占用,如果占用,要去配置文件改成其他端口(比如81,82)。因为nginx和PHP是分别运行的,所以基本上运行nginx不会出现什么错误,主要是配置PHP环境需要点耐心,下面来配置PHP。
刚接触nginx,花了很长时间才明白了里面的运行原理,刚说了nginx和apache不一样,nginx和PHP是分别单独运行的,用白话来说就是当nginx收到PHP请求时,就将此请求转发给php_cgi来处理,所以在配置PHP之前,我们先将PHP_CGI运行起来。
以管理员模式打开CMD命令行,用CD命令切换到PHP的根目录,执行命令:php-cgi.exe -b 127.0.0.1:9000-c ,这样php_cgi程序就监听了9000端口,一旦此端口有请求就会处理,命令执行完成后窗口不能关闭,接下来到nginx中来配置PHP。
在conf目录中找到配置文件nginx.conf,在server之间添加下方代码:
location ~ \.php$ { root D:/wwwroot/80www; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
root选项修改成自己的网站目录即可,其他不用改,配置完成之后,执行命令:nginx -s reload ,重新加载配置文件即可,不需要像apache那样重启服务,为了方便启动和停止nginx与php_cgi,将命令写入批处理文件中,这样就可以一键启动,一键停止。
文件名:start.bat(启动服务),记事本打开输入命令:
start php_cgi.bat start nginx.bat
文件名:stop.bat(停止服务),输入命令:
echo Stopping nginx... taskkill /F /IM nginx.exe > nul echo Stopping PHP FastCGI... taskkill /F /IM php-cgi.exe > nul exit
文件名:php_cgi.bat,输入命令:
set PHP_FCGI_MAX_REQUESTS=1000 cd.. echo PHP FastCGI Starting ... %cd%/php5/php-cgi.exe -b 127.0.0.1:9000-c
文件名:nginx.bat,输入命令:
cd.. echo Nginx Starting... %cd%/nginx/nginx.exe -p "%cd%/nginx/"
将这四个批处理文件都放在nginx的根目录下,当然PHP和nginx要在同一目录中(我习惯放在D盘Program目录下),否则批处理命令需要修改,否则不用修改,可以直接使用。
咨询电话
点击QQ咨询