代码部分

代码部分

1. 所有代码更新到最新

2. 网站根目录下swoole.sh必须有执行权限, 没有执行`chmod +x swoole.sh`

3. 停站点

4. 删除网站根目录下`bootstrap/cache/`所有文件和目录`rm -rf bootstrap/cache/*`

5. 修改网站根目录`.env`

“`

IS_SWOOLE=true
LARAVELS_LISTEN_IP=’0.0.0.0′
LARAVELS_LISTEN_PORT=’5200′
LARAVELS_WORKER_NUM=’1′

“`

监听地址, 监听端口, 开启进程数

注意: 进程并不是开启越多越好. 

 

环境部份

swoole框架采用docker运行服务.

默认端口5200, 可在.env中进行修改. 重启后生效

 

启动php swoole

docker cli

“`shell

docker run -d –name php –restart always -v 宿主机站点目录路径:容器内路径 -v 启动队列和swoole的配置:/etc/supervisor.d -v /etc/localtime:/etc/localtime:ro -p 暴露api端口:5200 -p 暴露websocket端口:8181 -v 暴露websocket端口:8182  registry.yunzmall.com/yunzhong/shop:php-swoole4.5.11 supervisord -c /etc/supervisord.conf

“`

 

docker-compose

https://downloads.yunzmall.com/shop_docker-compose.yaml

下载后根据实际情况修改使用

 

说明

根据场景, 对应修改下面的nginx反向配置.

 

场景1. nginx, php都是运行容器, 不需要暴露api端口到外部.

   – pc端前端部分proxy_pass http://127.0.0.1:3000; 改为 proxy_pass http://docker网关:3000;

   – ws config部分proxy_pass http://127.0.0.1:8181; 改为 proxy_pass http://php容器名称:8181;

                         proxy_pass http://127.0.0.1:8182; 改为 proxy_pass http://php容器名称:8182;

   – swoole config部分 proxy_pass http://127.0.0.1:5200;` 改为 proxy_pass http://php容器名称:5200;

 

场景2. nginx在宿主机, php运行在容器的,需要暴露api端口, websocket端口(如有使用长连接). 

    – ws config部分proxy_pass http://127.0.0.1:8181; 改为 proxy_pass http://127.0.0.1:暴露websocket端口;

                          proxy_pass http://127.0.0.1:8182; 改为 proxy_pass http://127.0.0.1:暴露websocket端口;

    – swoole config部分 proxy_pass http://127.0.0.1:5200; 改为 proxy_passhttp://127.0.0.1:暴露api端口;

     

 

nginx配置, 加入到站点配置server中. 

“`nginx

# static file config
location /addons/yun_shop/static/ {
root 网站根目录;
}

location /static/ {
root 网站根目录;
}
location /business/ {
root 网站根目录;
}
# pc端前端
location /plugins/shop_server/ {
proxy_http_version 1.1;
proxy_connect_timeout 300s;
proxy_send_timeout 900s;
proxy_read_timeout 900s;
proxy_buffer_size 512k;
proxy_buffers 4 512k;
proxy_busy_buffers_size 512k;
proxy_temp_file_write_size 512k;
proxy_max_temp_file_size 0;
proxy_redirect off;
proxy_hide_header Vary;
proxy_set_header Connection “”;
proxy_set_header Accept-Encoding ;
proxy_set_header Referer $http_referer;
proxy_set_header Cookie $http_cookie;
proxy_set_header Host $http_host;
proxy_set_header Scheme $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Server-Protocol $server_protocol;
proxy_set_header Server-Name $server_name;
proxy_set_header Server-Addr $server_addr;
proxy_set_header Server-Port $server_port;
proxy_pass http://127.0.0.1:3000;
}

# ws config
location /ws
{
proxy_pass http://127.0.0.1:8181;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “Upgrade”;
proxy_set_header X-Real-IP $remote_addr;
}

location /ws_msg
{
proxy_pass http://127.0.0.1:8182;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “Upgrade”;
proxy_set_header X-Real-IP $remote_addr;
}

# swoole config
location @laravels {
proxy_http_version 1.1;
proxy_connect_timeout 300s;
proxy_send_timeout 900s;
proxy_read_timeout 900s;
proxy_buffer_size 512k;
proxy_buffers 4 512k;
proxy_busy_buffers_size 512k;
proxy_temp_file_write_size 512k;
proxy_max_temp_file_size 0;
proxy_redirect off;
proxy_hide_header Vary;
proxy_set_header Connection “”;
proxy_set_header Accept-Encoding ;
proxy_set_header Referer $http_referer;
proxy_set_header Cookie $http_cookie;
proxy_set_header Host $http_host;
proxy_set_header Scheme $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Server-Protocol $server_protocol;
proxy_set_header Server-Name $server_name;
proxy_set_header Server-Addr $server_addr;
proxy_set_header Server-Port $server_port;
proxy_pass http://127.0.0.1:5200;
}
#支付回调
location /payment {
try_files “” @laravels;
}
#前台接口
location = /addons/yun_shop/api.php {
try_files “” @laravels;
}
#前台入口
location = /addons/yun_shop/ {
try_files $uri $uri/ /addons/yun_shop/index.html$is_args$args;
}
#首页接口
location = /officialwebsite.php {
try_files “” @laravels;
}
# 企业后台接口
location ~ /business/[0-9]+ {
try_files “” @laravels;
}
# default
location / {
try_files $uri @laravels;
}

“`

 

 

 

 

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部