/tmp – 永夜 https://www.shuijingwanwq.com 没有不值得去解决的问题,也没有不值得去学习的技术! Mon, 30 Sep 2019 02:00:08 +0000 zh-Hans hourly 1 https://wordpress.org/?v=7.0 基于 supervisord 运行 PHP 命令行脚本,可基于 Rancher 环境变量控制是否运行,以支持集群部署时, PHP 命令行脚本 仅在单机中运行的实现 https://www.shuijingwanwq.com/2019/09/30/3534/ https://www.shuijingwanwq.com/2019/09/30/3534/#respond Mon, 30 Sep 2019 02:00:08 +0000 http://www.shuijingwanwq.com/?p=3534 浏览量: 129 1、将 /build/c_files/etc/supervisord.d/yii-cmc-console-user-sync.ini、/build/c_files/etc/supervisord.d/yii-config-column-user-sync.ini 剪切至 /build/c_files/tmp/yii-cmc-console-user-sync.ini、/build/c_files/tmp/yii-config-column-user-sync.ini,如图1
将 /build/c_files/etc/supervisord.d/yii-cmc-console-user-sync.ini、/build/c_files/etc/supervisord.d/yii-config-column-user-sync.ini 剪切至 /build/c_files/tmp/yii-cmc-console-user-sync.ini、/build/c_files/tmp/yii-config-column-user-sync.ini

图1

2、编辑 \build\c_files\config\init\console_init.sh,代码如下,如图2
编辑 \build\c_files\config\init\console_init.sh,代码如下

图2



env | grep PCS_API_CFG_CONSOLE || export PCS_API_CFG_CONSOLE="false"
if [[ $PCS_API_CFG_CONSOLE == "true" ]]
then
    \cp /tmp/yii-cmc-console-user-sync.ini /etc/supervisord.d/
    echo "复制 yii-cmc-console-user-sync.ini 至 /etc/supervisord.d/"
    \cp /tmp/yii-config-column-user-sync.ini /etc/supervisord.d/
    echo "复制 yii-config-column-user-sync.ini 至 /etc/supervisord.d/"
elif [[ $PCS_API_CFG_CONSOLE == "false" ]]
then
    echo "copy without console"
else
    echo "please set environment variable PCS_API_CFG_CONSOLE true or false"
fi


3、编辑 \build\README.md,控制台命令是否执行(单机部署时,需设置为 true;集群部署时,仅需一台机器设置为 true,其他机器皆设置为 false),true:是;false:否,默认:false


	Rancher 环境变量(已设置默认值,可无需设置)
    PCS_API_CFG_CONSOLE=false # 控制台命令是否执行(单机部署时,需设置为 true;集群部署时,仅需一台机器设置为 true,其他机器皆设置为 false),true:是;false:否,默认:false


4、容器升级时,设置环境变量 PCS_API_CFG_CONSOLE=true1,查看升级日志


2019/9/29 下午2:51:31PCS_API_CFG_CONSOLE=true1
2019/9/29 下午2:51:31please set environment variable PCS_API_CFG_CONSOLE true or false


5、容器升级后,设置环境变量 PCS_API_CFG_CONSOLE=true1,查看 supervisord 运行状态,PHP 命令行脚本 cmc-console-user/sync、config-column-user/sync 皆未运行,符合预期


[root@ccb936b43173 /]# ps aux|grep superviosrd
root       533  0.0  0.0  10696   992 pts/2    S+   14:50   0:00 grep --color=auto superviosrd
[root@3bcad2636ae5 /]# supervisorctl status
cronolog                         RUNNING   pid 436, uptime 0:01:47
nginx                            RUNNING   pid 433, uptime 0:01:47
php-fpm                          RUNNING   pid 434, uptime 0:01:47
report_client                    RUNNING   pid 435, uptime 0:01:47


6、容器升级时,未设置环境变量 PCS_API_CFG_CONSOLE,或者设置环境变量 PCS_API_CFG_CONSOLE=false,查看升级日志,如图3
容器升级时,未设置环境变量 PCS_API_CFG_CONSOLE,或者设置环境变量 PCS_API_CFG_CONSOLE=false,查看升级日志

图3



2019/9/29 下午2:49:26copy without console


7、容器升级后,未设置环境变量 PCS_API_CFG_CONSOLE,或者设置环境变量 PCS_API_CFG_CONSOLE=false,查看 supervisord 运行状态,PHP 命令行脚本 cmc-console-user/sync、config-column-user/sync 皆未运行,符合预期


[root@ccb936b43173 /]# ps aux|grep superviosrd
root       533  0.0  0.0  10696   992 pts/2    S+   14:50   0:00 grep --color=auto superviosrd
[root@ccb936b43173 /]# supervisorctl status
cronolog                         RUNNING   pid 436, uptime 0:01:02
nginx                            RUNNING   pid 433, uptime 0:01:02
php-fpm                          RUNNING   pid 434, uptime 0:01:02
report_client                    RUNNING   pid 435, uptime 0:01:02


8、容器升级时,设置环境变量 PCS_API_CFG_CONSOLE=true,查看升级日志,如图4
容器升级时,设置环境变量 PCS_API_CFG_CONSOLE=true,查看升级日志

图4



2019/9/29 下午2:54:53PCS_API_CFG_CONSOLE=true
2019/9/29 下午2:54:53复制 yii-cmc-console-user-sync.ini 至 /etc/supervisord.d/
2019/9/29 下午2:54:53复制 yii-config-column-user-sync.ini 至 /etc/supervisord.d/


9、容器升级后,设置环境变量 PCS_API_CFG_CONSOLE=true,查看 supervisord 运行状态,PHP 命令行脚本 cmc-console-user/sync、config-column-user/sync 皆已运行,符合预期,如图5
容器升级后,设置环境变量 PCS_API_CFG_CONSOLE=true,查看 supervisord 运行状态,PHP 命令行脚本 cmc-console-user/sync、config-column-user/sync 皆已运行,符合预期

图5



[root@9fdfba4524e6 /]# ps aux|grep superviosrd
root       550  0.0  0.0  10696   992 pts/2    R+   14:46   0:00 grep --color=auto superviosrd
[root@9fdfba4524e6 /]# supervisorctl status
cronolog                         RUNNING   pid 441, uptime 0:02:01
nginx                            RUNNING   pid 436, uptime 0:02:01
php-fpm                          RUNNING   pid 435, uptime 0:02:01
report_client                    RUNNING   pid 438, uptime 0:02:01
yii-cmc-console-user-sync        RUNNING   pid 515, uptime 0:00:57
yii-config-column-user-sync      RUNNING   pid 514, uptime 0:00:58


10、建议查看网址:https://www.shuijingwanwq.com/2019/09/29/3525/ ,替换 /tmp 为 /mcloud,修复 Bug :Missing the temporary folder to store the uploaded file]]>
https://www.shuijingwanwq.com/2019/09/30/3534/feed/ 0
在基于 Rancher 部署时,报错:Missing the temporary folder to store the uploaded file 的分析与解决 https://www.shuijingwanwq.com/2019/09/29/3525/ https://www.shuijingwanwq.com/2019/09/29/3525/#comments Sun, 29 Sep 2019 12:38:01 +0000 http://www.shuijingwanwq.com/?p=3525 浏览量: 126 1、在 Postman 中打开网址:http://api.pcs.wjdev.chinamcloud.cn/v1/assets/upload, 上传文件,响应失败,如图1
在 Postman 中打开网址:http://api.pcs.wjdev.chinamcloud.cn/v1/assets/upload, 上传文件,响应失败

图1



2019-09-29 17:19:34 [10.42.165.54][8][-][warning][yii\validators\FileValidator::validateValue] Missing the temporary folder to store the uploaded file: 360wallpaper(0).jpg
    in /mcloud/www/pcs-api/api/rests/asset/UploadAction.php:84


2、查看 /runtime/logs/app.log,报错:[warning][yii\validators\FileValidator::validateValue] Missing the temporary folder to store the uploaded file: 360wallpaper(0).jpg 3、回退至上一版本,未报错,查看 Git 日志,分析差异,如图2
回退至上一版本,未报错,查看 Git 日志,分析差异

图2

4、查看 File Uploads 的 upload_tmp_dir 值,;upload_tmp_dir =,上传文件时用于存储文件的临时目录。任何运行PHP的用户都必须可写。如果未指定,PHP将使用系统的默认值。系统的默认临时目录为 /tmp,查看当前版本 /tmp 目录的权限,如图3
查看 File Uploads 的 upload_tmp_dir 值,;upload_tmp_dir =,上传文件时用于存储文件的临时目录。任何运行PHP的用户都必须可写。如果未指定,PHP将使用系统的默认值。系统的默认临时目录为 /tmp,查看当前版本 /tmp 目录的权限

图3



drwxrwxr-x   1 root root


5、查看上一版本 /tmp 目录的权限,权限方面存在差异,分析得出结论,原因在于:/tmp 目录被覆盖进而导致权限被修改,如图4
查看上一版本 /tmp 目录的权限,权限方面存在差异,分析得出结论,原因在于:/tmp 目录被覆盖进而导致权限被修改

图4



drwxrwxrwt   1 root root


6、将 /build/c_files/tmp/yii-cmc-console-user-sync.ini、/build/c_files/tmp/yii-config-column-user-sync.ini 剪切至 /build/c_files/mcloud/yii-cmc-console-user-sync.ini、/build/c_files/mcloud/yii-config-column-user-sync.ini,如图5
将 /build/c_files/tmp/yii-cmc-console-user-sync.ini、/build/c_files/tmp/yii-config-column-user-sync.ini 剪切至 /build/c_files/mcloud/yii-cmc-console-user-sync.ini、/build/c_files/mcloud/yii-config-column-user-sync.ini

图5

7、编辑 \build\c_files\config\init\console_init.sh,替换 /tmp 为 /mcloud,代码如下,如图6
编辑 \build\c_files\config\init\console_init.sh,替换 /tmp 为 /mcloud

图6



env | grep PCS_API_CFG_CONSOLE || export PCS_API_CFG_CONSOLE="false"
if [[ $PCS_API_CFG_CONSOLE == "true" ]]
then
    \cp /mcloud/yii-cmc-console-user-sync.ini /etc/supervisord.d/
    echo "复制 yii-cmc-console-user-sync.ini 至 /etc/supervisord.d/"
    \cp /mcloud/yii-config-column-user-sync.ini /etc/supervisord.d/
    echo "复制 yii-config-column-user-sync.ini 至 /etc/supervisord.d/"
elif [[ $PCS_API_CFG_CONSOLE == "false" ]]
then
    echo "copy without console"
else
    echo "please set environment variable PCS_API_CFG_CONSOLE true or false"
fi


8、在 Postman 中打开网址:http://api.pcs.wjdev.chinamcloud.cn/v1/assets/upload, 上传文件,响应成功,如图7
在 Postman 中打开网址:http://api.pcs.wjdev.chinamcloud.cn/v1/assets/upload, 上传文件,响应成功

图7

]]>
https://www.shuijingwanwq.com/2019/09/29/3525/feed/ 1