windows+nginx+php多版本环境配置及一些坑的解决办法

最近换了服务器,想用php7+的环境去部署一些新的开源程序,但迫于有几个PHP5.6环境写的网站程序还要使用,如果升级到PHP7则要从程序上改好多地方让PHP5.6的程序运行正常,于是想试试windows+nginx+php多版本,于是开始学习研究nginx的配置方法,现学习成果如下:

一、安装环境:

我的服务器是windows server 2012,那么下载就要相应的windows版本的

1、下载nginx:到http://nginx.org/en/download.html下载windows版本,注意一定要下载稳定版,即Stable version版本的。

2、下载PHP,

下载PHP5.6及PHP7.4,本文以此两个版本为例,因为我这次所有的网站环境只需要这两个就可以运行,无需其他版本,以后如果需要也可以按此文下载配置虽的版本。这里是php所有版本的下载地址:https://windows.php.net/downloads/releases/archives/,我下载的是以下版本,注意请选择nts的版本,和nginx配合运行会更快。

3、解压nginx+php多版本包准备好环境文件

解压nginx到某个盘的根目录下,在nginx下建一个php目录,将下载完成的php5.6和php7.4的包复制进来并解压,分别两个版本中的php.ini-production复制一份文件名改成php.ini,运行程序需要什么样的扩展、配置可以编辑修正。

二、配置windows+nginx+php多版本环境

1、修改nginx配置文件

打开conf/nginx.conf,重点对如下部分进行修改:


#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


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;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  www.web1.com web1.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   g:\webs\web1.com;
            index  index.html index.htm index.php;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   g:\webs\web1.com;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           g:\webs\web1.com;
            fastcgi_pass   127.0.0.1:9740;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


      server {
        listen       80;
        server_name  www.web2.com web2.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   g:\webs\web2.com;
            index  index.html index.htm index.php;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   g:\webs\web2.com;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           g:\webs\web2.com;
            fastcgi_pass   127.0.0.1:9564;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

      

以上配置文件就是两个不同域名的网站用FCGI的方式分别用php5.6和php7.4运行,特别注意fastcgi_pass 127.0.0.1:9564后面的端口,这是后续我们在运行PHP fcgi模式时需要指定的端口,nginx需要连接的。

三、运行windows+nginx+php多版本环境

1、运行nginx

打开windows命令窗口,进入nginx的目录并启动nginx: start nginx,一闪而过没有错误提示就代表配置文件没有问题即启动成功。

2、运行多个版本的php fcgi模式:

运行php5.6:打开一个新的windows命令窗口:运行:g:/nginx/php/php5.6.40/php-cgi.exe -b 127.0.0.1:9564 -c g:/nginxphp/php5.6.40/php.ini,注意本人的php是安装在这个目录的,你的php装在什么目录请自行修改成你的相应目录。运行后无错误代表配置无误,不要关闭窗口。

运行php7.4:打开一个新的windows命令窗口:运行:g:/nginx/php/php7.4.0/php-cgi.exe -b 127.0.0.1:9740 -c g:/nginx/php/php7.4.0/php.ini,同样你的PHP安装在什么目录请自行修改成你的相应目录。运行后无错误代表配置无误,不要关闭窗口

如果以上运行无错误代表windows+nginx+php多版本环境配置成功了。再也不用考虑和担心PHP5.6版本需要改程序兼容高版本的问题了。更多细节优化欢迎交流。

以下有几个坑在我配置环境中遇到的,同时给出解决办法
1、css和jss文件加载不了,网页格式是混乱的,网上搜索到的一些解决办法均无效,解决办法就是下载最新的nginx稳定版,用其提供的nginx.conf改配置。

2、访问不到php页面:在默认的设置是fastcgi_param SCRIPT_FILENAME /$fastcgi_script_name;修正为fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

3、某些访问量大的网站过几分钟php-cgi就崩溃闪退了:把上面php-cgi命令注册成服务,方便大家快解决提供一个nssm程序给大家使用,下载地址:https://www.nssm.cc/download,下载后运行nssm install 服务名,以上面php7.4为例:nssm install php740,这样就会弹出界面,选中PHP7.4.0的目录文件下的php-cgi.exe,最下面输入运行参数。如图所示:

安装完成后可以到windows系统服务中找到php740启动,并设置为自动启动,这样就完美解决php-cgi一会就崩溃闪退的问题。同时又可以做到php740以服务的方式启动,下次重启服务器也不用自己手动运行。

好用的GPT4ALL免费开源多模型大型语言聊天机器人,可本地私有部署、离线使用。

GPT4ALL免费开源多模型大型语言聊天机器人,可私有本地部署、可离线使用、不需要GPU,只要电脑内存够大,本地跑起来也可以。目前支持Windows、Mac、Ubuntu系统安装部署,因为安装极其简单,根据提示一步步安装就好了,本文不做安装演示,根据系统下载安装相应的版本就好了。本文如出现例子以windows版本为例。下载地址:https://gpt4all.io/

安装完后运行程序,会有两个协议选择,本地私有部署最好都选择NO,则不会分享内容到外网给他人使用。你实在担心隐私问题,可以在部署完后将此电脑或服务器的外网断掉,只允许局域网使用也行。当然就算你选了YES,也是匿名的,只是在对话和训练时别放一些隐私、敏感信息即可。

后续就会让咱们下载大模型,从官网给出的评测和我实际使用的情况下,初识者建议使用nous-hermes2这个模型,这个模型用什么语言问就会用什么语言回答,例如我们用中文问,则会用中文回答。有好些模型可以用中文问,但答复的是英文,那些英文回答的模型可在问题中要求用中文回答也是可以的。其他模型可根据自己电脑和使用自行了解选择下载使用。如果你有chat-gpt4和chat-gpt3.5的APIKey,也可以用gpt4all安装接口轻松和chat-gpt搭上,当然这时就不能离线使用了。

下载完模型后我们就可以选择模型,程序会把模型加载到内存,我们就可以开始对话了,下面以2024年广东高考作文题为例:

更多的GPT4ALL设置和使用技巧在此不做累赘,以后在使用和实践中发现更好的东西会第一时间分享给大家。开源代码,训练、文档可访问开源地址:https://github.com/nomic-ai/gpt4all

我碰到的两个使用问题,可能你们也会同样碰到,问题及解决办法如下:

1、第一次运行程序后,协议那里没注意都点了YES,想重新选NO怎么办?
我自己在界面上是没找到能重设置的地方(如有找到的可私告诉我),我的办法是找到gpt4all.ini,更改isActive=false,usageStatusActive=false即可。windows系统在你的用户文件夹的AppData/Roaming/nomic.ai/下,其他系统请自行搜索。

2、用GPT4ALL下载模型前期很快,后期就慢了怎么办?
可以打开https://gpt4all.io/models/models3.json这个文件,找到相应的模型下载地址用迅雷之类的能续传下载软件下载(有的可能需要魔法),下载完后放到模型目录即可。如无魔法可到之前介绍过的国内魔塔社区搜索下载。

免费好用开源的AI绘画工具Stable Diffusion

Stable Diffusion确实是免费开源、无限制的AI绘画工具,由于其开源强大,Stable Diffusion爱好者极多,以Stable Diffusion为基础的模型、插件、扩展发展得非常蓬勃,就这样的地位,非常适合初学者学习深入并应用到生产,由于在国内已出现多种整合包,在这里我就不多介绍其强大之处,初学者且有英文基础的同学建议去下载这个WEBUI版,下载地址:https://github.com/AUTOMATIC1111/stable-diffusion-webui,并按照教程自己安装并运行起来。在你学习的过程中就会发现有整合包,大数据会把整合包推给你,我这里就不多说了哈。

模型可以到下面这些地址下载(无需魔法):

哩布哩布AI (https://www.liblib.art/)

是国内的 Stable Diffusion AI 模型分享社区,收集了很多不同类型的Stable Diffusion模型,包括知名的和小众的,资源非常丰富。

非常适合Stable Diffusion新手找模型资源和学习。

HF Mirror (https://hf-mirror.com/)

Huggingface 国内镜像站,不多话,学习、生产过程中要的东西都在上面还能保持最新。

目前博主已学会换脸、换衣、文生图、图生图、文生视频、图生视频、炼丹,最重要的是全免费无限制

国内大模型及数据集下载网站推荐

魔塔社区:新手在安装学习一些开源AI软件时往往发现model或数据集在国外的网站或一些网盘上,又没有魔法或会员,不是下载不到就是下载奇慢,那推荐去魔法社区搜索下载,博主在初学阶段都是去上面找的,下载速度特别快,平安的度过了新手期。

魔塔社区

摘抄一下其官网的介绍:

ModelScope 社区成立于 2022 年 6 月,是一个模型开源社区及创新平台,由阿里巴巴通义实验室(Institute for Intelligent Computing),联合 CCF开源发展委员会,共同作为项目发起方。社区联合国内 AI 领域合作伙伴与高校机构, 致力于通过开放的社区合作,构建深度学习相关的模型开源社区,并开放相关模型创新技术,推动基于“模型即服务”(Model-as-a-Service)理念的模型应用生态的繁荣发展。

怕有人没看到文章中的锚链接再放一个地址上来:https://www.modelscope.cn/

很好用的声音克隆开源软件GPT-SoVITS

强大的少样本语音转换与语音合成Web用户界面。

功能:

  1. 零样本文本到语音(TTS): 输入 5 秒的声音样本,即刻体验文本到语音转换。
  2. 少样本 TTS: 仅需 1 分钟的训练数据即可微调模型,提升声音相似度和真实感。
  3. 跨语言支持: 支持与训练数据集不同语言的推理,目前支持英语、日语和中文。
  4. WebUI 工具: 集成工具包括声音伴奏分离、自动训练集分割、中文自动语音识别(ASR)和文本标注,协助初学者创建训练数据集和 GPT/SoVITS 模型。

开源地址:https://github.com/RVC-Boss/GPT-SoVITS

中文说明:https://github.com/RVC-Boss/GPT-SoVITS/blob/main/docs/cn/README.md

目前博主已将《原神》所有的角色声音克隆,用于原神相关角色的视频创作。只要有一点声音样本就可以通过AI训练出声音模型,可以让任何人以他的声音对你说任何话,抖音旗下剪映有这个功能,在我发布这篇文章的时候还在按字收费!欢迎交流。