强迫症福利,像我这样的人除非懒到极致才会用 phpStudy 这样的一键式集成环境,但是用的时候也会去更换 MySQL/Nginx/PHP 版本,因为 PHP 和 MySQL 在集成环境里面大多是 x86 版,换成 x64 可以更科学的运行在 64 位系统上。另外手动配置可以让你能更了解这些组件的配置,至少为以后的优化、调整等有了一点基础。
OK,先入手这些玩意儿的压缩包
Nginx:http://nginx.org/en/download.html PHP4Windows:http://windows.php.net/download/【请下载 NTS(Non Thread Safe 非线程安全)版】
下面这货是用来创建 Windows 自启服务的:
WinSW:https://github.com/kohsuke/winsw/releases【下载 .exe 文件即可,根据系统选择,Win 10 选择 .NET4 版本,以下选择 .NET2 版本】
xxfpm 用来开启 PHP-CGI 多进程
xxfpm:https://github.com/78/xxfpm (也可以使用我编译的版本,支持带空格的路径:https://github.com/maxsky/xxfpm)
规规矩矩的办事是基本
- 先在 D 盘或任意位置建立一个文件夹(一定不能有空格),例如
D:\WebDevEnvironment
- 依次创建
nginx
、php56
、xxfpm
(PHP 视版本命名,例如 PHP 7.1 则为php71
。) - 将已下载的 Nginx 和 PHP 都扔到对应文件夹内,
nginx
内包含nginx.exe
和conf
文件夹;php56
内包含php-cgi.exe
和ext
文件夹 - 将
WinSW.NET4.exe
分别扔进nginx
文件夹和php71
。xxfpm
压缩包内bin
文件夹里除了xxfpm
,将xxfpm.exe
和pthreadGC2.dll
扔进xxfpm
文件夹 nginx
内的WinSW.NET4.exe
重命名为nginx-server.exe
,然后新建一个同名的 XML 文件nginx-server.xml
- 编辑
nginx-server.xml
文件,内容如下:
<service>
<!-- 服务 ID,命令行使用这个名字可以启动/停止服务 -->
<id>nginx-server</id>
<!-- 服务名称,可任意,为了方便建议和 ID 一致 -->
<name>nginx-server</name>
<!-- 服务描述,任意 -->
<description>Nginx Server.</description>
<!-- 启动程序名称,不用修改 -->
<executable>nginx.exe</executable>
<!-- 停止服务时执行程序名称 -->
<!-- 解释一下为何用 Win 的 taskkill 命令。因为 Nginx 利用服务启动的情况下无法使用 nginx -s stop 或 nginx -s quiet 命令结束进程,会提示权限不足 -->
<stopexecutable>taskkill</stopexecutable>
<!-- 以下三行是 taskkill 的参数,不用修改 -->
<stopargument>/F</stopargument>
<stopargument>/IM</stopargument>
<stopargument>nginx.exe</stopargument>
<!-- 日志路径,将生成日志至 nginx/logs 目录 -->
<logpath>logs</logpath>
</service>
- 保存 XML 文件,然后 Win+X,A 戳开管理员身份的
cmd
,通过d: && cd D:\WebDevEnvironment\nginx
命令进入D:\WebDevEnvironment\nginx
文件夹,接着输入nginx-server.exe install
并回车,服务就装好啦,Win+R 输入services.msc
回车,进服务瞧一瞧,有的有的! - 进入
xxfpm
文件夹,将之前复制进来的WinSW.NET4.exe
重命名为php-cgi.exe
,然后创建同名的php-cgi.xml
文件,内容如下:
<service>
<id>php-cgi</id>
<name>php-cgi</name>
<description>PHP-CGI.</description>
<executable>xxfpm.exe</executable>
<!-- 启动参数 -->
<startargument>"D:/WebDevEnvironment/php71/php-cgi.exe -c D:/WebDevEnvironment/php71/php.ini"</startargument>
<startargument>-n</startargument>
<!-- 启动进程数量,可修改,建议大于 1 -->
<startargument>3</startargument>
<startargument>-i</startargument>
<!-- 监听IP,默认一般都用 127.0.0.1 -->
<startargument>127.0.0.1</startargument>
<startargument>-p</startargument>
<!-- 监听端口,默认一般都用 9000 -->
<startargument>9000</startargument>
<!-- 停止参数 -->
<stopexecutable>taskkill</stopexecutable>
<stopargument>/F</stopargument>
<stopargument>/IM</stopargument>
<stopargument>xxfpm.exe</stopargument>
<logpath>logs</logpath>
</service>
如 Nginx 创建那样,通过命令行创建服务,注意这里是 php-cgi.exe install
Win + R
打开service.msc
手动启动或直接管理员命令行net start php-cgi && net start nginx-server
启动服务。通过任务管理器我们可以清楚的看到服务成功启动,现在不用担心php-cgi.exe
进程突然就没了。