此次作了一个项目部署在环境为win2012+nginx1.13.5+mysql5.6+php7的环境下,服务器是阿里云的php
因为以前没有这种经验,遇到了点坑(据参考文章里说的这坑还有些年份了),最开始本身是用Php-cgi解决的,可是不知道是服务器问题仍是别的什么状况,运行cmd输入php-cgi.exe -b 127.0.0.1:9000不能关闭cmd,不然cgi就一块儿关掉了。这也忍了,可是本身访问后台上传多几张图片,cgi本身就能挂掉,这种状况固然不能忍,因此查阅各类资料,最后解决方案以下(所用工具包及参考连接附在文章末尾):mysql
本文要解决的问题是:
一、php-cgi.exe自动退出
二、如何将xxfpm设置成系统服务,随系统重启
nginx
第一步:windows下安装Nginx,Mysql,PHPsql
本步骤过于简单,就跳过了,若是连这个也不会,建议到全中国最牛X的技术资料平台【百度】搜索“nginx+php”windows
mysql的安装就是next、next、next的问题,也不说了。服务器
后面的步骤才是本文的重点!php7
第二步:让php-cgi.exe受xxfpm守护,而xxfpm随系统启用,达到后台运行的效果工具
网上不少文章介绍用什么应用隐藏工具,还有写什么bat手工运行的,我就不吐槽了。网站
(1)你须要下载xxfpm.exe,把它放在PHP目录下;阿里云
(2)再下载【命令调用工具】winserv.exe,也放在PHP目录下,咱们将它注册成系统服务,经过它去执行xxfpm.exe;
(3)编写以下的批处理文件install.bat,目的是将winserv.exe注册成系统服务:
@echo off if not ""%1"" == ""INSTALL"" goto remove "C:/nginx/php\winserv.exe" install "nginxPHP-CGI" -start auto "C:/nginx/php\php-cgi.exe" -b 127.0.0.1:9000 -c "C:/nginx/php\php.ini" net start nginxPHP-CGI > NUL goto end :remove net stop nginxPHP-CGI > NUL "C:/nginx/php\winserv.exe" uninstall "nginxPHP-CGI" :end exit
能够直接copy上面代码,更名install.bat,执行便可。固然上面的目录路径要修改为你的。这步操做完,php-cgi.exe会随winserv.exe的启动而启动,但还没完,由于这时候的php-cgi.exe很脆弱,500个请求就会down掉。
注:我本身复制上述代码后更名install.bat并执行,没有成功,缘由我猜是在判断条件,我最后的解决方案是将如下两句代码逐一复制入cmd中执行,后再执行下一步(仍是要注意修改为你本身的路径)。
后知后觉的我在解决后才注意到文末的工具包中附带的install.bat跟上述代码还有点差异,未解决的童鞋能够尝试下直接执行该文件看是否能解决(仍是要注意修改为你本身的路径,第三次提醒)。
"C:/nginx/php\winserv.exe" install "nginxPHP-CGI" -start auto "C:/nginx/php\php-cgi.exe" -b 127.0.0.1:9000 -c "C:/nginx/php\php.ini"
net start nginxPHP-CGI
(4)在【运行】里输入regedit.exe,找到[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\nginxPHP-CGI],即刚才注册的服务键值,把其中CommandLine的值修改成:
C:\nginx\php\xxfpm.exe "C:/nginx/php/php-cgi.exe -c C:/nginx/php/php.ini" -n 5 -i 127.0.0.1 -p 9000
(5)大功告成!无弹出窗,无界面。这时候我关掉我已开启的cmd,网站依然能够访问,php仍然能够使用
另外想要实现Nginx反向代理给IIS,实现80端口共享的童鞋,能够参考文末连接,本文只截取了其三分之二的内容,由于我本身不打算配反向代理,也就没继续执行下去了。
参考:https://blog.csdn.net/aasx/article/details/53576095