🐳 服务端部署

宝塔面板部署①/③ 推荐使用

强烈推荐正式环境推荐使用宝塔面板部署项目,让部署更方便,减少部署出现问题。

服务器环境设置

  • 步骤1: 点击【软件商店】->【运行环境】,安装Nginx、MySQL、PHP-8.0、Redis,其中Mysql选择5.7版本。

图片[1]_ChatAI-聊天绘画系统「PHP源码版」_源码铺子
图片[2]_ChatAI-聊天绘画系统「PHP源码版」_源码铺子
  • 步骤2: 点击【软件商店】->【已安装】,找到PHP-8.0,然后点击【设置】->【安装扩展】,【安装】fileinfo扩展,【安装】redis扩展。

站点部署

  • 步骤1: 打开宝塔面板/www/wwwroot目录,上传下载的压缩包,解压压缩包,解压出来的文件夹就是项目目录。

⚠️ 警告

注意项目目录及子目录用户要为www!如果后续步骤出现问题,重新设置一下项目目录及子目录用户为www。

图片[3]_ChatAI-聊天绘画系统「PHP源码版」_源码铺子
图片[4]_ChatAI-聊天绘画系统「PHP源码版」_源码铺子
  • 步骤2: 点击【网站】->【PHP项目】->【添加站点】,【域名】项填好已解析到本服务器的域名,【根目录】选择上一步解压好的项目目录的server目录,数据库选择【MySQL】,【数据库帐号】项设置好帐号密码,【PHP版本】选择【PHP-80】,点击【提交】。

⚠️ 警告

站点目录要选择server,请勿选择public,选择public会导致宝塔生成配置错误,等后面设置修改回来也无济于事,只能删除站点新添加。

图片[5]_ChatAI-聊天绘画系统「PHP源码版」_源码铺子
  • 步骤3: 保存好数据库名、用户、密码,下面步骤13需要用到。
  • 步骤4: 找到网站,点击【设置】->【SSL】->【Let’s Encrypt】->【文件验证】->【选择域名】->【申请】,申请SSL证书。
  • 步骤5: 点击【网站目录】->【网站目录】,选择解压的项目目下的”server”目录,点击保存。【运行目录】选择”/public”项目,点击【保存】。
  • 步骤6: 点击【伪静态】-选择【thinkphp】,点击【保存】。

程序安装

  • 步骤7: 访问设置的网站,进入程序安装界面,点击【我已阅读同意】。
  • 步骤8: 进入此步骤,对环境进行检测,一般情况,除了【swoole_loader扩展】,其他项都会通过,说明内容可能提示【非线程安全扩展】或【线程安全扩展】,记住说明内容,下面步骤9、10、11需要用到。
  • 步骤9: 打开宝塔文件,进入项目所在的/server/license目录,上一步说明内容如果是【非线程安全扩展】复制swoole_loader80.so文件,如果是【线程安全扩展】复制swoole_loader80_zts.so文件。
  • 步骤10: 打开宝塔文件,进入/www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930目录,粘贴文件,统一改名为swoole_loader80.so 。
  • 步骤11: 打开【软件商店】->【运行环境】->【设置】->【配置文件】,在末尾添加extension = swoole_loader80.so 信息,【保存】。

    打开【服务】->【重启】。
  • 步骤12: 回到安装界面,然后点击【重新检测】。【swoole_loader扩展】安装好以后,一般情况环境检测通过,直接点击【继续】。
  • 步骤13: 保存的数据库信息设置好数据库,填写Redis地址密码,没设置密码无需填写,然后设置后台管理员帐号密码,点击【继续】。
  • 步骤14: 程序安装中,完成以后,可以点击【进入管理平台】,使用安装设置的帐号密码登录之前,需要添加授权文件。

    授权

注意1.授权文件与产品一一对应,如果不是同一产品,将无法使用。
2.授权文件与项目域名也是一一对应,不然无法使用。

  • 步骤1: 购买后源码,获取授权文件。
  • 步骤2: 添加授权文件到server/license目录,并命名为:my.license ,如果仍无法使用,请联系客服。

访问地址

管理后台地址:http://域名/admin
PC端地址:http://域名/pc
手机端地址:http://域名/mobile

定时任务

⚠️ 警告

定时任务不设置,会导致一些业务无法正常使用。

点击【计划任务】,设置任务类型为 【访问URL】、填写任务名称、执行周期设置为【N分钟】【1分钟】,URL地址为”https://域名/crontab“,请以项目实际域名为准,然后【添加任务】。

守护进程

安装守护进程管理器

点击【软件商店】,搜索【进程守护】,安装进程守护管理器。

守护进程设置

注意

运行守护进程失败原因:
1.请在终端运行一下php80命令是否有效,无效请在宝塔面板首页右上角点击修复。
2.默认情况下要求用www用户运行守护进程,如果运行失败,可能是www用户无执行php命令,请调整www用户权限或者改用root运行。
3.检查Redis的账号密码是否配置正确。
4.没有选择站点目录下的server目录,站点下的server目录有”think”这个文件。

添加意间绘画

⚠️ 警告

如果不使用 MJ直连绘图功能,此守护进程可不添加。
管理后台设置意间相关参数。

点击进程守护管理器的【设置】->【添加守护进程】,启动用户选择www,运行目录选择站点目录下的server目录,添加以下命令,点击【确定】,添加成功,可看到守护进程正在运行。

shell

php80 think queue:listen --queue AiYjJob
图片[6]_ChatAI-聊天绘画系统「PHP源码版」_源码铺子
图片[7]_ChatAI-聊天绘画系统「PHP源码版」_源码铺子

MJ直连监听

⚠️ 警告

如果不使用 MJ直连绘图功能,此守护进程可不添加。
管理后台先配置MJ相关参数 相关参考再添加守护进程。

点击进程守护管理器的【设置】->【添加守护进程】,启动用户选择www,运行目录选择站点目录下的server目录,添加以下命令,点击【确定】,添加成功,可看到守护进程正在运行。

shell

php80 think discord
图片[8]_ChatAI-聊天绘画系统「PHP源码版」_源码铺子
图片[7]_ChatAI-聊天绘画系统「PHP源码版」_源码铺子

MJ直连提交任务

⚠️ 警告

如果不使用 MJ直连绘图功能,此守护进程可不添加。
管理后台先配置MJ相关参数 相关参考再添加守护进程。

点击进程守护管理器的【设置】->【添加守护进程】,启动用户选择www,运行目录选择站点目录下的server目录,添加以下命令,点击【确定】,添加成功,可看到守护进程正在运行。

shell

php80 think queue:listen --queue AiMjJob
图片[10]_ChatAI-聊天绘画系统「PHP源码版」_源码铺子
图片[7]_ChatAI-聊天绘画系统「PHP源码版」_源码铺子

dalle3绘画

⚠️ 警告

如果不使用dalle3绘图功能,此守护进程可不添加。
管理后台先dalle3绘图功能参数。

点击进程守护管理器的【设置】->【添加守护进程】,启动用户选择www,运行目录选择站点目录下的server目录,添加以下命令,点击【确定】,添加成功,可看到守护进程正在运行。

shell

php80 think queue:listen --queue AiDalleJob
图片[12]_ChatAI-聊天绘画系统「PHP源码版」_源码铺子
图片[7]_ChatAI-聊天绘画系统「PHP源码版」_源码铺子

SD绘画

⚠️ 警告

如果不使用SD绘图功能,此守护进程可不添加。
管理后台先SD绘图功能参数。

点击进程守护管理器的【设置】->【添加守护进程】,启动用户选择www,运行目录选择站点目录下的server目录,添加以下命令,点击【确定】,添加成功,可看到守护进程正在运行。

shell

php80 think queue:listen --queue AiSdJob --timeout 300
图片[14]_ChatAI-聊天绘画系统「PHP源码版」_源码铺子
图片[7]_ChatAI-聊天绘画系统「PHP源码版」_源码铺子

其它设置

超时设置

提示

超时时间超级不够长,对话时间过长可能失败。

点击【软件商店】,找到项目使用的PHP-8.0,点击【设置】->【配置修改】,找到default_socket_timeout,超时间时间设置为300,点击【保存】。

点击【软件商店】,Nginx,点击【设置】->【性能调整】,找到keepaliv_timeout项,超时间时间设置为300,点击【保存】。

本地Docker部署③/③

下载安装docker

打开docker官网网站https://www.docker.com/,下载适合自己系统版本的docker桌面端。
MacOS系统M1、M2芯片下载Apple Chip版,Intel芯片下载Intel Chip版。
Windows系统下载Windows版本,安装后,根据软件要求提示安装linux子系统和开启虚拟化。

设置docker镜像

国内下载镜像速度比较忙,可以将镜像设置为国内镜像。
打开docker设置选项【Settings】->【Docker Engine】,其中的配置内容的registry-mirrors的链接设置为国内镜像,点击【Apply && restart】保存并重启。

json

{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"features": {
"buildkit": true
},
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
  
  
]
}
图片[16]_ChatAI-聊天绘画系统「PHP源码版」_源码铺子

设置docker-compose

①打开项目目录docker/docker-compose文件,此文件为容器的编排。
②ports为端口设置,红色框80为Nginx主机挂载的端口,如果与主机其中程序的端口不冲突,可以不更改。
③ports为端口设置,红色框9000为PHP主机挂载的端口,如果与主机其中程序的端口不冲突,可以不更改。
④ports为端口设置,红色框3306为Mysql主机挂载的端口,如果与主机其中程序的端口不冲突,可以不更改。
⑤image为容器使用镜像,请根据芯片架构选择镜像,使用#注释或者开启其中一个。
⑥ports为端口设置,红色框6379为Redis主机挂载的端口,如果与主机其中程序的端口不冲突,可以不更改。

配置nginx

打开项目目录docker/conf.d/www.chat.host.conf文件,里面Nginx的配置,其中www.chat.localhost为配置的域名,本地部署可以不更改。如果本地部署使用非chrome浏览器访问,请在host文件中解析该域名到127.0.0.1。

启动docker

打开终端,使用cd命令进入,运行docker-compose命令启动容器,如果启动失败,去掉-d参数,可以显示启动错误信息。

shell

cd chat/docker
docker-compose -p chat up -d
图片[17]_ChatAI-聊天绘画系统「PHP源码版」_源码铺子

程序安装

⚠️ 警告

设置容器端口的时候p1:p2,p1是主机挂载端口,p2是容器端口。
访问域名时候,如果Nginx容器挂载主机的端口不是80端口,需要加上端口号访问。
安装的时候,Mysql容器设置的容器端口,非主机端口。

docker启动成功后,访问域名,对程序进行安装。
docker环境已配置好PHP扩展等,一般情况下都可以顺利安装。
其中在填写数据库信息的时候,因为是PHP容器和Mysql容器之间的通讯,Mysql的地址填写Mysql容器名,端口填写Mysql容器端口。

定时任务

运行一下命令可以测试定时任务,如果生产环境设置自动运行,去掉-it参数。

shell

docker exec -it /www/wwwroot/项目/server/think crontab

访问地址

管理后台地址:http://域名/admin:端口
PC端地址:http://域名/pc:端口
手机端地址:http://域名/mobile:端口

通用部署②/③

提示

推荐服务器最低配置:CPU双核、内存4GB、硬盘20GB、带宽5兆

如果你非常熟悉PHP项目的部署安装,可以参考一下信息部署项目。不熟悉可参考其他部署方式。

项目入口

项目入口目录:server/public  
项目入口文件:server/public/index.php

PHP扩展设置

项目server/license目录有PHP扩展,都是统一个配置扩展,针对不同系统使用。

swoole_loader80.so //linux系统、PHP非线程安全,一般nginx环境使用
swoole_loader80_zts.so //linux系统、PHP线程安全
swoole_loader80_nzts_x64.dll //windows系统、PHP非线程安全,一般nginx环境使用
swoole_loader80_zts_x64.dll //windows系统、PHP线程安全

nginx配置

nginx全配置

nginx

server {
    listen 80;
    listen 443 ssl;
    server_name  www.chat.localhost;
    ssl_certificate /ssl/www.chat.localhost.crt;
    ssl_certificate_key /ssl/www.localhost.key;
    access_log /logs/demo.likeadmin.cnt_access_nginx.log;
    error_log /logs/demo.likeadmin.cn_error_nginx.log;
    client_max_body_size 5M;
    location / {
        root  chat/server/public;#入口文件目录
        index  index.html index.htm index.php;
        if (!-e $request_filename)
        {
            rewrite ^/(.*)$ /index.php?s=$1 last;
            break;
        }
    }
    location ~ /.*\.php/ {
        rewrite ^(.*?/?)(.*\.php)(.*)$ /$2?s=$3 last;
        break;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /var/www/html;
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  chat/server/public$fastcgi_script_name; #入口文件目录
        include        fastcgi_params;
    }
    location = /favicon.ico {
            log_not_found off;
            access_log off;
        }
}

nginx伪静态

nginx

if (!-e $request_filename)
        {
            rewrite ^/(.*)$ /index.php?s=$1 last;
            break;
        }

apache配置

apache伪静态

apache

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

授权

注意

1.授权文件与产品一一对应,如果不是同一产品,将无法使用。
2.授权文件与项目域名也是一一对应,不然无法使用。

  • 步骤1:
    购买后源码,获取授权文件。
  • 步骤2:
    添加授权文件到server/license目录,并命名为:my.license ,如果仍无法使用,请联系客服。

定时任务

使用crontab命令设置以下命令为定时任务,1分钟运行1次,注意,运行用户要和PHP运行用户一致。

shell

php /www/wwwroot/项目/server/think crontab

访问地址

管理后台地址:http://域名/admin
PC端地址:http://域名/pc
手机端地址:http://域名/mobile

© 版权声明
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容