服务端部署

宝塔面板部署-1-推荐使用

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

服务器环境设置

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

警告

安装软件的时候,使用极速安装,一定要使用PHP8.0和Mysql5.7,否则无法使用。



  • 步骤2: 点击【软件商店】->【已安装】,找到PHP-8.0,然后点击【设置】->【安装扩展】,【安装】fileinfo扩展,【安装】redis扩展。

站点部署

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

警告

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



  • 步骤2: 点击【网站】->【PHP项目】->【添加站点】,【域名】项填好已解析到本服务器的域名,【根目录】选择上一步解压好的项目目录的server目录,数据库选择【MySQL】,【数据库帐号】项设置好帐号密码,【PHP版本】选择【PHP-80】,点击【提交】。

警告

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


  • 步骤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: 保存的数据库信息设置好数据库,然后设置后台管理员帐号密码,点击【继续】。

  • 步骤14: 程序安装中,完成以后,可以点击【进入管理平台】,使用安装设置的帐号密码登录之前,需要添加授权文件。

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

访问地址

管理后台地址:http://域名/adminopen in new window
PC端地址:http://域名/pcopen in new window
手机端地址:http://域名/mobileopen in new window

定时任务

提示

定时任务有多种设置方式,选择其中一种即可。

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

通用部署-2

如果你非常熟悉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全配置

server {
    listen 80;
    server_name  demo.likeadmin.cn;
    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伪静态

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

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>

授权

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

定时任务

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

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

访问地址

管理后台地址:http://域名/adminopen in new window
PC端地址:http://域名/pcopen in new window
手机端地址:http://域名/mobileopen in new window

本地Docker部署-3

下载安装docker

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

设置docker镜像

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

{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"features": {
"buildkit": true
},
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
  
  
]
}


设置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参数,可以显示启动错误信息。

cd chat/docker
docker-compose -p chat up -d


程序安装

警告

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

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

定时任务

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

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

访问地址

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

上次更新:
贡献者: lr