存储 – 永夜 https://www.shuijingwanwq.com 没有不值得去解决的问题,也没有不值得去学习的技术! Sun, 17 May 2026 05:14:23 +0000 zh-Hans hourly 1 https://wordpress.org/?v=7.0 Linode 实例升级配置失败的排查分析 https://www.shuijingwanwq.com/2026/03/21/9361/ https://www.shuijingwanwq.com/2026/03/21/9361/#comments Sat, 21 Mar 2026 09:00:53 +0000 https://www.shuijingwanwq.com/?p=9361 浏览量: 213

1、发现 Linode 实例可以调整大小了。发现当前 Linode 4 GB,存储是 80GB。可以调整为 Linode 8 GB ,存储是 160 GB。如图1

2、收到通知:Linode linode286353 could not be resized.。升级失败了。决定先向余额充值 48 美元。然后再次升级。升级失败。

3、之前升级时,Resize Type 选择的是 Warm resize(Recommended)(热迁移易因系统配置失败)。再次升级,选择 Cold resize(强制关机迁移,最稳),升级成功。如图2

4、页面上已经显示 160 GB,但是,查看磁盘空间占用情况,仍然只有 80 GB。

5、Linode 升级套餐(4GB→8GB)只会提升内存 / CPU / 总存储配额,但不会自动扩容正在使用的 /dev/sda 系统盘—— 所以后台显示 160GB 总存储,实际 /dev/sda 还是原来的 78G,依然 100% 满。

6、先操作实例 关闭电源,然后找到 /dev/sda 对应的磁盘(类型:ext4/ext3,大小 78G)→ 点击 Resize;把大小改成 150G(留 10G 给 swap / 冗余)→ 点击 Resize Disk;等待 1–2 分钟,磁盘扩容完成(状态从 Pending→Ready)。顺便将 swap 调整为 512 MB。如图3

7、再次查看磁盘占用情况,确认符合预期



[root@li1269-60 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda              148G   78G   68G  54% /
tmpfs                 3.9G  116K  3.9G   1% /dev/shm
[root@li1269-60 ~]#



7、补充一下,最终发现升级失败与余额无关了。因为升级成功后,查看余额,仍然为 48 美元。

]]>
https://www.shuijingwanwq.com/2026/03/21/9361/feed/ 1
在 Laravel 6 中,当设置过期时间后,标签标识符键(‘tag:’.$name.’:key’)与标准引用键(:standard_ref)未自动过期的解决 https://www.shuijingwanwq.com/2022/10/13/7048/ https://www.shuijingwanwq.com/2022/10/13/7048/#respond Thu, 13 Oct 2022 01:27:01 +0000 https://www.shuijingwanwq.com/?p=7048 浏览量: 105 1、现在存储被打上标签的缓存数据,打上了 1 个标签:theme_editor_qVnbtdW6HjsG5clEw6j6ygedgjrP4A9EDIsY


        return Cache::tags([
                ThemePreviewInterface::TAG_THEME_EDITOR . '_' . $sessionId]
            )
            ->put(ThemePreviewInterface::THEME_EDITOR_SESSION_PREFIX . $sessionId, json_encode($data), ThemePreviewInterface::TTL);


2、运行程序以后,总计生成了 3 个 key,如图1
运行程序以后,总计生成了 3 个 key

图1



object_local_database_object_local_cache:tag:theme_editor_qVnbtdW6HjsG5clEw6j6ygedgjrP4A9EDIsY:key

object_local_database_object_local_cache:63316a53e72ae936365540:standard_ref

object_local_database_object_local_cache:8900c8427a4e5d7ac70fed24623811c3b5330ddf:theme_editor_session:qVnbtdW6HjsG5clEw6j6ygedgjrP4A9EDIsY


3、过期时间设置为 120 秒,当 2 分钟之后,再次刷新 Redis,只有 key object_local_database_object_local_cache:8900c8427a4e5d7ac70fed24623811c3b5330ddf:theme_editor_session:qVnbtdW6HjsG5clEw6j6ygedgjrP4A9EDIsY 已经被自动删除掉。如图2
过期时间设置为 120 秒,当 2 分钟之后,再次刷新 Redis,只有 key object_local_database_object_local_cache:8900c8427a4e5d7ac70fed24623811c3b5330ddf:theme_editor_session:qVnbtdW6HjsG5clEw6j6ygedgjrP4A9EDIsY 已经被自动删除掉

图2

4、相当于还剩下 2 个冗余的 key,皆是与 标签 相关的。决定在写入缓存时,将 2 个冗余的 key 皆设置过期时间。由于是使用的 Laravel 的 Redis 缓存。决定基于 Redis 设置过期时间来实现。


        Cache::tags([
                ThemePreviewInterface::TAG_THEME_EDITOR . '_' . $sessionId]
            )
            ->put(ThemePreviewInterface::THEME_EDITOR_SESSION_PREFIX . $sessionId, json_encode($data), ThemePreviewInterface::TTL);
        $names = Cache::tags(ThemePreviewInterface::TAG_THEME_EDITOR . '_' . $sessionId)->getTags()->getNames();
        var_dump($names);
        foreach ($names as $name) {
            var_dump(Cache::getPrefix() . Cache::tags(ThemePreviewInterface::TAG_THEME_EDITOR . '_' . $sessionId)->getTags()->tagKey($name));
            var_dump(Redis::connection('cache')->command('expire', [Cache::getPrefix() . Cache::tags(ThemePreviewInterface::TAG_THEME_EDITOR . '_' . $sessionId)->getTags()->tagKey($name), ThemePreviewInterface::TTL]));
            var_dump(Cache::getPrefix() . Cache::tags(ThemePreviewInterface::TAG_THEME_EDITOR . '_' . $sessionId)->getTags()->tagId($name) . ':' . RedisTaggedCache::REFERENCE_KEY_STANDARD);
            var_dump(Redis::connection('cache')->command('expire', [Cache::getPrefix() . Cache::tags(ThemePreviewInterface::TAG_THEME_EDITOR . '_' . $sessionId)->getTags()->tagId($name) . ':' . RedisTaggedCache::REFERENCE_KEY_STANDARD, ThemePreviewInterface::TTL]));
        }
        // var_dump(Cache::tags(ThemePreviewInterface::TAG_THEME_EDITOR . '_' . $sessionId)->getTags()->getNames());
        // var_dump(Cache::getPrefix());
        exit;


5、打印结果如下。如图3
打印结果如下

图3



array(1) {
  [0]=>
  string(49) "theme_editor_I37HieXlW2yzmNqWTwGsMoRu3vjivgpaGJ1T"
}
string(93) "object_local_cache:tag:theme_editor_I37HieXlW2yzmNqWTwGsMoRu3vjivgpaGJ1T:key"
bool(true)
string(71) "object_local_cache:63326932d41fb365623106:standard_ref"
bool(true)



6、Redis 中生成了 3 个 key,如图4
Redis 中生成了 3 个 key

图4



object_local_database_object_local_cache:tag:theme_editor_I37HieXlW2yzmNqWTwGsMoRu3vjivgpaGJ1T:key
object_local_database_object_local_cache:63326932d41fb365623106:standard_ref
object_local_database_object_local_cache:59840c6d708feb22c6540bd14dbeb0c34bf4bbc4:theme_editor_session:I37HieXlW2yzmNqWTwGsMoRu3vjivgpaGJ1T


7、由于过期时间设置 120 秒,当 2 分钟过去后,Redis 中的数据从 12 条减少至 9 条。之前生成的 3 个 key 已经自动被删除。如图5
由于过期时间设置 120 秒,当 2 分钟过去后,Redis 中的数据从 12 条减少至 9 条。之前生成的 3 个 key 已经自动被删除

图5

8、最终实现代码如下


        $name = ThemePreviewInterface::TAG_THEME_EDITOR . '_' . $sessionId;
        $tags = Cache::tags($name);
        $result = $tags->put(ThemePreviewInterface::THEME_EDITOR_SESSION_PREFIX . $sessionId, json_encode($data), ThemePreviewInterface::TTL);
        if ($result) {
            Redis::connection('cache')->expire(Cache::getPrefix() . $tags->getTags()->tagKey($name), ThemePreviewInterface::TTL);
            Redis::connection('cache')->expire(Cache::getPrefix() . $tags->getTags()->tagId($name) . ':' . RedisTaggedCache::REFERENCE_KEY_STANDARD, ThemePreviewInterface::TTL);
        }

        return $result;


]]>
https://www.shuijingwanwq.com/2022/10/13/7048/feed/ 0
在 Laravel 6 中,缓存标记的实践与分析 https://www.shuijingwanwq.com/2022/09/27/6985/ https://www.shuijingwanwq.com/2022/09/27/6985/#respond Tue, 27 Sep 2022 01:22:05 +0000 https://www.shuijingwanwq.com/?p=6985 浏览量: 85 1、现在存储被打上标签的缓存数据,打上了 2 个标签:theme_editor、theme_editor_rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW


return Cache::tags([
		ThemePreviewInterface::TAG_THEME_EDITOR,
		ThemePreviewInterface::TAG_THEME_EDITOR . '_' . $sessionId]
	)
	->put(ThemePreviewInterface::THEME_EDITOR_SESSION_PREFIX . $sessionId, json_encode($data), ThemePreviewInterface::TTL);


2、运行程序以后,查看 GUI for Redis 中的数据结构。展开 tag 。cache:tag:theme_editor:key 的值为:s:22:”633146b13433b471207802″;。其表示关联的 key 为:cache:633146b13433b471207802:standard_ref。这是标签:theme_editor 生成的结构。总计为 2 个 key。如图1
运行程序以后,查看 GUI for Redis 中的数据结构。展开 tag 。cache:tag:theme_editor:key 的值为:s:22:"633146b13433b471207802";。其表示关联的 key 为:cache:633146b13433b471207802:standard_ref。这是标签:theme_editor 生成的结构。总计为 2 个 key

图1

3、运行程序以后,查看 GUI for Redis 中的数据结构。展开 tag 。cache:tag:theme_editor_rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW:key 的值为:s:22:”633146b134d67627586383″;。其表示关联的 key 为:cache:633146b134d67627586383:standard_ref。这是标签:theme_editor_rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW 生成的结构。总计为 2 个 key。如图2
运行程序以后,查看 GUI for Redis 中的数据结构。展开 tag 。cache:tag:theme_editor_rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW:key 的值为:s:22:"633146b134d67627586383";。其表示关联的 key 为:cache:633146b134d67627586383:standard_ref。这是标签:theme_editor_rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW 生成的结构。总计为 2 个 key

图2

4、2 个标签所关联的 key 的值列表是相同的,可得到对应的 key :cache:327d4fd2bc91588c8a5e4c7248cf680165a2e12a:theme_editor_session:rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW 。如图3
2 个标签所关联的 key 的值列表是相同的,可得到对应的 key :cache:327d4fd2bc91588c8a5e4c7248cf680165a2e12a:theme_editor_session:rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW

图3

5、决定删除 cache:327d4fd2bc91588c8a5e4c7248cf680165a2e12a:theme_editor_session:rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW 所对应的缓存数据。不使用 tags 方法。操作结果为 false ,表示删除失败。如图4
决定删除 cache:327d4fd2bc91588c8a5e4c7248cf680165a2e12a:theme_editor_session:rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW 所对应的缓存数据。不使用 tags 方法。操作结果为 false ,表示删除失败

图4



        $result = Cache::forget($sessionId);

        dd($result);


6、使用 tags 方法。操作结果为 true ,表示删除成功。如图5
使用 tags 方法。操作结果为 true ,表示删除成功

图5



        $result = Cache::tags(ThemePreviewInterface::TAG_THEME_EDITOR . '_' . $sessionId)->flush();

        dd($result);


7、查看 Redis 中的数据。cache:633146b13433b471207802:standard_ref 中的关联的 值列表中仍然有 1 条记录,未删除:cache:327d4fd2bc91588c8a5e4c7248cf680165a2e12a:theme_editor_session:rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW 。键 cache:633146b134d67627586383:standard_ref 已经被删除,之前其中的关联的 值列表中的 1 条记录所对应的 key 也已经被删除。符合预期。如图6
查看 Redis 中的数据。cache:633146b13433b471207802:standard_ref 中的关联的 值列表中仍然有 1 条记录,未删除:cache:327d4fd2bc91588c8a5e4c7248cf680165a2e12a:theme_editor_session:rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW 。键 cache:633146b134d67627586383:standard_ref 已经被删除,之前其中的关联的 值列表中的 1 条记录所对应的 key 也已经被删除。符合预期

图6

]]>
https://www.shuijingwanwq.com/2022/09/27/6985/feed/ 0
在存储中,新建目录与创建文件时,同时使用 root 与 nginx 用户时,报错:fopen(/webtv/wangjie/ccp_api/images/2021/03/08/1615170408.5917.1243625051.png): failed to open stream: Permission denied https://www.shuijingwanwq.com/2021/03/12/4786/ https://www.shuijingwanwq.com/2021/03/12/4786/#respond Fri, 12 Mar 2021 06:46:17 +0000 https://www.shuijingwanwq.com/?p=4786 浏览量: 99 1、在运行命令行脚本时,使用 root 用户创建目录:/webtv/wangjie/ccp_api/images/2021/03/08,创建文件:1615170036.5115.2027450777.png。目录的所有者与所属的组皆为 root。如图1
在运行命令行脚本时,使用 root 用户创建目录:/webtv/wangjie/ccp_api/images/2021/03/08,创建文件:1615170036.5115.2027450777.png。目录的所有者与所属的组皆为 root。

图1

2、在运行 HTTP 接口时,使用 nginx 用户在目录:/webtv/wangjie/ccp_api/images/2021/03/08 下创建文件:1615170408.5917.1243625051.png。报错:fopen(/webtv/wangjie/ccp_api/images/2021/03/08/1615170408.5917.1243625051.png): failed to open stream: Permission denied。如图2
在运行 HTTP 接口时,使用 nginx 用户在目录:/webtv/wangjie/ccp_api/images/2021/03/08 下创建文件:1615170408.5917.1243625051.png。报错:fopen(/webtv/wangjie/ccp_api/images/2021/03/08/1615170408.5917.1243625051.png): failed to open stream: Permission denied。

图2

3、最终决定在创建目录后,将目录的所有者与所属的组修改为 nginx。如图3
最终决定在创建目录后,将目录的所有者与所属的组修改为 nginx。

图3



    // return chmod($path, $mode);
    @chmod($path, $mode);
    $user = 'nginx';
    @chown($path, $user);
    @chgrp($path, $user);
    return true;


4、删除目录:/webtv/wangjie/ccp_api/images/2021/03/08。在运行命令行脚本时,使用 root 用户创建目录:/webtv/wangjie/ccp_api/images/2021/03/08,创建文件:1615173793.3843.742805318.png。目录的所有者与所属的组皆为 nginx。符合预期。如图4
删除目录:/webtv/wangjie/ccp_api/images/2021/03/08。在运行命令行脚本时,使用 root 用户创建目录:/webtv/wangjie/ccp_api/images/2021/03/08,创建文件:1615173793.3843.742805318.png。目录的所有者与所属的组皆为 nginx。符合预期。

图4

5、在运行 HTTP 接口时,使用 nginx 用户在目录:/webtv/wangjie/ccp_api/images/2021/03/08 下创建文件:1615173932.3359.493433255.png 成功。符合预期。如图5
在运行 HTTP 接口时,使用 nginx 用户在目录:/webtv/wangjie/ccp_api/images/2021/03/08 下创建文件:1615173932.3359.493433255.png 成功。符合预期。

图5

6、在运行 HTTP 接口时,使用 nginx 用户创建目录:/webtv/wangjie/ccp_api/images/2021/03/10,创建文件:1615340979.3862.490335317.png。目录的所有者与所属的组皆为 nginx。符合预期。如图6
在运行 HTTP 接口时,使用 nginx 用户创建目录:/webtv/wangjie/ccp_api/images/2021/03/10,创建文件:1615340979.3862.490335317.png。目录的所有者与所属的组皆为 nginx。符合预期。

图6

7、在运行命令行脚本时,使用 root 用户在目录:/webtv/wangjie/ccp_api/images/2021/03/10 下创建文件:1615341025.4625.492305521.png 成功。符合预期。如图7
在运行命令行脚本时,使用 root 用户在目录:/webtv/wangjie/ccp_api/images/2021/03/10 下创建文件:1615341025.4625.492305521.png 成功。符合预期。

图7

]]>
https://www.shuijingwanwq.com/2021/03/12/4786/feed/ 0
在容器启动时,复制文件至 NAS 存储中,基于 CakePHP v2.6.4 实现 https://www.shuijingwanwq.com/2020/08/25/4457/ https://www.shuijingwanwq.com/2020/08/25/4457/#respond Tue, 25 Aug 2020 01:55:32 +0000 https://www.shuijingwanwq.com/?p=4457 浏览量: 102 1、现阶段存在一个新需求,需要在部署产品时,针对产品做一些初始化数据的工作。预先准备好相应的 SQL 文件,但是对于 MySQL 表中的文件路径:/upload/20200817/20203554555373.png。其存储于 NAS 存储中。而并非程序的目录下。如图1
现阶段存在一个新需求,需要在部署产品时,针对产品做一些初始化数据的工作。预先准备好相应的 SQL 文件,但是对于 MySQL 表中的文件路径:/upload/20200817/20203554555373.png。其存储于 NAS 存储中。而并非程序的目录下。

图1

2、计划在容器启动时,自动执行一个 PHP 命令行,判断 NAS 存储中,默认的文件是否存在,如果存在,则退出。不存在,则复制。 3、实现将 app/webroot/images/20200817 下的所有文件放入 app/webroot/upload/20200817 中的命令行。新建文件:app/Console/Command/AssetShell.php
<pre class="wp-block-syntaxhighlighter-code">

<?php
/**
 * Created by PhpStorm.
 * User: Qiang Wang
 * Date: 2020/08/18
 * Time: 15:04
 */

App::uses('Folder', 'Utility');

class AssetShell extends AppShell {
    public function sync() {
        $folder = new Folder(WWW_ROOT . 'images' . DS . '20200817');
        $folder->copy(UP_DIR . DS . 'upload' . DS . '20200817');
        $this->out('Asset sync successfully.');
    }
}

</pre>
4、进入目录:E:\wwwroot\creditshop\app,执行:Console/cake asset sync,将 app/webroot/images/20200817 下的所有文件复制至 app/webroot/upload/20200817 中。如图2
进入目录:E:\wwwroot\creditshop\app,执行:Console/cake asset sync,将 app/webroot/images/20200817 下的所有文件复制至 app/webroot/upload/20200817 中。

图2



PS E:\wwwroot\creditshop\app> Console/cake asset sync


Welcome to CakePHP v2.6.4 Console
---------------------------------------------------------------
App : app
Path: E:\wwwroot\creditshop\app\
---------------------------------------------------------------
Asset sync successfully.



5、在容器中运行相应的命令,将 /mcloud/creditshop/app/webroot/images/20200817 下的所有文件复制至 /webtv/wangjie/creditbak/upload/20200817 中。/webtv 为所挂载的 NAS 存储。如图3
在容器中运行相应的命令,将 /mcloud/creditshop/app/webroot/images/20200817 下的所有文件复制至 /webtv/wangjie/creditbak/upload/20200817 中。/webtv 为所挂载的 NAS 存储。

图3



[root@465e0aa491eb /]# cd /webtv/wangjie/creditbak/upload
[root@465e0aa491eb upload]# ls -l
total 44
drwxrwxrwx 2 nginx nginx  106 Dec 17  2018 20181217
drwxrwxrwx 2 nginx nginx 4096 Jan 24  2019 20190124
drwxrwxrwx 2 nginx nginx  156 Feb 21  2019 20190221
drwxrwxrwx 2 nginx nginx 4096 Feb 22  2019 20190222
drwxrwxrwx 2 nginx nginx 4096 Feb 25  2019 20190225
drwxrwxrwx 2 nginx nginx 4096 Feb 28  2019 20190228
drwxrwxrwx 2 nginx nginx  106 Apr  9  2019 20190409
drwxrwxrwx 2 nginx nginx  155 Sep 11  2019 20190911
drwxrwxrwx 2 nginx nginx 4096 Nov 11  2019 20191111
drwxrwxrwx 2 nginx nginx  130 Nov 12  2019 20191112
drwxrwxrwx 2 nginx nginx 4096 Nov 13  2019 20191113
drwxrwxrwx 2 nginx nginx  130 Nov 14  2019 20191114
drwxrwxrwx 2 nginx nginx 4096 Nov 19  2019 20191119
drwxrwxrwx 2 nginx nginx  106 Nov 27  2019 20191127
drwxrwxrwx 2 nginx nginx 4096 Nov 29  2019 20191129
drwxrwxrwx 2 nginx nginx  129 Dec 21  2019 20191221
drwxrwxrwx 2 nginx nginx 4096 Jul 16 22:33 20200716
drwxrwxrwx 2 nginx nginx 4096 Aug  3 22:34 20200803
drwxrwxrwx 2 nginx nginx 4096 Aug 18 16:04 20200818
[root@465e0aa491eb upload]# cd /mcloud/creditshop/app
[root@465e0aa491eb app]# Console/cake asset sync
bash: Console/cake: Permission denied
[root@465e0aa491eb app]# chmod +x Console/cake
[root@465e0aa491eb app]# Console/cake asset sync

Welcome to CakePHP v2.6.4 Console
---------------------------------------------------------------
App : app
Path: /mcloud/creditshop/app/
---------------------------------------------------------------
Asset sync successfully.
[root@465e0aa491eb app]# cd /webtv/wangjie/creditbak/upload
[root@465e0aa491eb upload]# ls -l
total 44
drwxrwxrwx 2 nginx nginx  106 Dec 17  2018 20181217
drwxrwxrwx 2 nginx nginx 4096 Jan 24  2019 20190124
drwxrwxrwx 2 nginx nginx  156 Feb 21  2019 20190221
drwxrwxrwx 2 nginx nginx 4096 Feb 22  2019 20190222
drwxrwxrwx 2 nginx nginx 4096 Feb 25  2019 20190225
drwxrwxrwx 2 nginx nginx 4096 Feb 28  2019 20190228
drwxrwxrwx 2 nginx nginx  106 Apr  9  2019 20190409
drwxrwxrwx 2 nginx nginx  155 Sep 11  2019 20190911
drwxrwxrwx 2 nginx nginx 4096 Nov 11  2019 20191111
drwxrwxrwx 2 nginx nginx  130 Nov 12  2019 20191112
drwxrwxrwx 2 nginx nginx 4096 Nov 13  2019 20191113
drwxrwxrwx 2 nginx nginx  130 Nov 14  2019 20191114
drwxrwxrwx 2 nginx nginx 4096 Nov 19  2019 20191119
drwxrwxrwx 2 nginx nginx  106 Nov 27  2019 20191127
drwxrwxrwx 2 nginx nginx 4096 Nov 29  2019 20191129
drwxrwxrwx 2 nginx nginx  129 Dec 21  2019 20191221
drwxrwxrwx 2 nginx nginx 4096 Jul 16 22:33 20200716
drwxrwxrwx 2 nginx nginx 4096 Aug  3 22:34 20200803
drwxr-xr-x 2 root  root   126 Aug 18 19:57 20200817
drwxrwxrwx 2 nginx nginx 4096 Aug 18 16:04 20200818
[root@465e0aa491eb upload]# cd 20200817
[root@465e0aa491eb 20200817]# ls -l
total 488
-rwxr-xr-x 1 root root 183116 Aug 18 17:16 20201164114857.png
-rwxr-xr-x 1 root root  32149 Aug 18 17:16 20202146638315.png
-rwxr-xr-x 1 root root 183116 Aug 18 17:16 20202503127232.png
-rwxr-xr-x 1 root root  96546 Aug 18 17:16 20203554555373.png
[root@465e0aa491eb 20200817]#


6、在容器启动时,编辑 Shell 脚本,自动运行 PHP 命令行。


env | grep "CREDITSHOP_CFG_PIC_DATASTATUS" || export CREDITSHOP_CFG_PIC_DATASTATUS="off"
	if [[ $CREDITSHOP_CFG_PIC_DATASTATUS == "off" ]]
	then
		echo "不运行命令"
	elif [[ $CREDITSHOP_CFG_PIC_DATASTATUS == "on" ]]
	then
		cd /mcloud/creditshop/app
		chmod +x Console/cake
		Console/cake asset sync
		echo "运行命令"
	fi


7、查看容器的日志,成功运行,符合预期。如图4
查看容器的日志,成功运行,符合预期。

图4



2020/8/19 下午 3:56:30 CREDITSHOP_CFG_TENANT_URL=http://tenant1.xcttest.chinamcloud.cn/
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_APPNAME=creditshop
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_SECRET=02bcebf67be82fc6c596f7aaab159833090189d8
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_PIC_PORT=80
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_SERVER_PORT=80
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_MEMBERAPI_URL=http://memberapi.wjtest.chinamcloud.cn/memberapi
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_IDA_URL=http://ida.xcttest.chinamcloud.cn
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_QYWX_KEY=okqb7vqm8y2I6Q7zeyyY9K1JfTzs
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_QYWX_URL=qywx.wjtest.chinamcloud.cn
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_PIC_DIR=/webtv/wangjie/creditbak
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_FILE_DIR=/webtv/wangjie/creditbak
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_MSERVER_URL=http://mserver.wjtest.chinamcloud.cn/creditbak
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_QYHD_URL=http://morefunapi.wjtest.chinamcloud.cn
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_BMSHD_URL=http://default.bms.wjtest.chinamcloud.cn
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_ACCESS_KEY_ID=DdEBQtT801LjMuYw
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_ACCESS_KEY_SECRET=FyVST8x73D1AKlhG9brEHvgWkwdeNipz
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_CHECK_USER_LOGIN_URL=http://cmcconsole.wjtest.chinamcloud.cn/interface/get-user-auth
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_USER_LOGIN_URL=http://cmcgroup.wjtest.chinamcloud.cn/?call_back=http://creditshop.wjtest.chinamcloud.cn
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_REDIS_HOST=192.168.2.6
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_REDIS_PASSWORD=q5dHP@xCBUUJY^L
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_REDIS_DB=5
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_FILE_DIR=/webtv/wangjie/creditbak
2020/8/19 下午 3:56:30 CREDITSHOP_CFG_PIC_DATASTATUS=on
2020/8/19 下午 3:56:30
2020/8/19 下午 3:56:30 Welcome to CakePHP v2.6.4 Console
2020/8/19 下午 3:56:30 ---------------------------------------------------------------
2020/8/19 下午 3:56:30 App : app
2020/8/19 下午 3:56:30 Path: /mcloud/creditshop/app/
2020/8/19 下午 3:56:30 ---------------------------------------------------------------
2020/8/19 下午 3:56:30 Asset sync successfully.
2020/8/19 下午 3:56:30 运行命令


]]>
https://www.shuijingwanwq.com/2020/08/25/4457/feed/ 0
NAS 存储挂载失败的分析解决 https://www.shuijingwanwq.com/2020/08/05/4358/ https://www.shuijingwanwq.com/2020/08/05/4358/#respond Wed, 05 Aug 2020 01:47:27 +0000 https://www.shuijingwanwq.com/?p=4358 浏览量: 128 1、在 Rancher 的卷中,添加:/webtv:/data。如图1
在 Rancher 的卷中,添加:/webtv:/data。

图1

2、查看容器的日志,报错:LOG_NAME: unbound variable。如图2
查看容器的日志,报错:LOG_NAME: unbound variable。

图2



2020/8/3 下午4:40:16/config/init/cronlog.sh: line 5: LOG_NAME: unbound variable
2020/8/3 下午4:40:19sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
2020/8/3 下午4:40:19bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
2020/8/3 下午4:40:19/bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)


3、进入容器,查看 /data 下的目录列表,不符合预期。未挂载成功。如图3
进入容器,查看 /data 下的目录列表,不符合预期。未挂载成功。

图3



[root@955ea658d009 data]# ls -l
total 24
drwxr-xr-x 2 root root 4096 Apr 29 15:27 cmclogs
drwx--x--x 2 root root 4096 Jun 28 11:31 conf
drwxr-xr-x 2 root root 4096 Apr 21 16:13 log-static
drwx--x--x 2 root root 4096 Jun 28 11:31 logs
drwx--x--x 2 root root 4096 Jun 28 11:31 run
drwxr-xr-x 6 root root 4096 Jun 28 12:42 wangjie


4、在 Rancher 的调度中,添加调度规则。如图4
在 Rancher 的调度中,添加调度规则。

图4

5、再次升级后,进入容器,查看 /data 下的目录列表,符合预期。NAS 存储挂载成功。如图5
再次升级后,进入容器,查看 /data 下的目录列表,符合预期。NAS 存储挂载成功。

图5



[root@08dfcc44c6e2 /]# cd /data/
[root@08dfcc44c6e2 data]# ls -l
total 3485844
drwxr-xr-x  2 root              root                6 Sep  6  2019 96
drwxr-xr-x  3        4294967294 4294967294         24 Apr 10  2019 BSAudit
drwxr-xr-x  3 root              root               26 Jul  9  2019 ForPublic
drwxr-xr-x  4 root              root               30 Dec 26  2018 SRS
-rw-r--r--  1 root              root         14107659 May 14 10:08 catalina.out.2020-05-14.log
drwxrwxrwx  3 nginx             nginx              93 Jun 15 13:50 cmclogs
drwx--x--x  2 root              root                6 Jun 28 11:30 conf
drwxr-xr-x  3 root              root               20 Apr 10  2019 console
drwxrwxrwx 12 root              root              139 Apr 10  2019 content
drwxr-xr-x  4 root              root               47 Aug 13  2019 editor
drwxr-xr-x  3 root              root              123 May 13  2019 elastic
drwxrwxrwx  3 root              root               26 Feb 28 15:53 esdata
drwxrwxrwx  3 root              root               26 Feb 28 16:02 esdatadev
drwxrwxrwx  3 root              root               26 Jul 22 16:02 esdatadev2
drwxr-xr-x  2 root              root               19 Jul  8  2019 ffmpeg
-rw-------  1 root              root       3167531079 May  7  2019 gc.hprof
-rw-r--r--  1 root              root        387737048 May  7  2019 gc.tar.gz
-rw-r--r--  1 root              root              664 Apr 10  2019 header.txt
-rw-r--r--  1 root              root             1195 Jun 19  2019 hua-qiyun-6803fac4-b7c0-4fea-a44b-332e171e95d5-v5.json
drwxr-xr-x  2 root              root             4096 Aug  3 00:00 log-cms
drwxr-xr-x  2 nginx             nginx            4096 Aug  3 14:23 log-static
drwx--x--x  6 root              root            16384 Aug  3 16:57 logs
drwxrwxrwx  2 root              root                6 Jun  8 13:34 media
drwxr-xr-x  4 root              root               48 Jul 29  2019 models
drwxrwxrwx  3 root              root               17 Dec 11  2018 ms3
drwxr-xr-x 47 systemd-bus-proxy input            4096 Mar 25 23:40 mysql
drwxrwxrwx  4 root              root               35 Dec 11  2018 nas-tmp
-rw-r--r--  1 root              root            40956 Oct 29  2019 output.mp3
drwxr-xr-x  6 root              root               67 Mar  6 10:50 pgc
drwxr-xr-x  3 root              root               25 Dec 13  2019 pic
-rw-r--r--  1 root              root                9 Apr 10  2019 requestBodyParams.txt
-rw-r--r--  1 root              root              573 Apr 10  2019 requestRowBody.txt
drwx--x--x  2 root              root                6 Jun 28 11:30 run
drwxr-xr-x  8 root              root             4096 Mar 16 16:42 shift
drwxr-xr-x 14 root              root             4096 Mar 17 04:00 shiftdev
drwxr-xr-x  8 root              root              106 May 15 21:09 site
-rw-r--r--  1 root              root             3178 Jun 14  2019 spiderLogo.png
drwxrwxrwx  6 systemd-bus-proxy input             155 Jun 19 15:34 sqldev
drwxrwxrwx  4 root              root               41 Jun  8 13:37 trans
drwxr-xr-x  8 nginx             nginx            4096 Jun 28 13:28 version_sql
drwxr-xr-x  3 root              root               25 Dec 13  2019 video
drwxr-xr-x  2 root              root                6 Nov 27  2019 vidoe
drwxrwxrwx 36 root              root             4096 Jul 31 11:33 wangjie
drwxrwxrwx 18 root              root             4096 Jul 31 18:32 wangjiebase
drwxrwxrwx 17 root              root             4096 Jul  3 17:14 wangjiedev
drwxrwxr-x 10 root              root              102 Apr 11  2019 wangjieweb
drwxrwxrwx  4 root              root               33 Mar 29  2019 wangjiewjweb
drwxr-xr-x  3 root              root               20 May 20  2019 webtv
drwxr-xr-x  3 root              root               20 Jan 31  2019 wjdev
drwxr-xr-x  4 root              root               34 Mar 18  2019 wpdt
drwxrwxrwx  6 root              root               54 Apr  9  2019 xContent
drwxrwxrwx  5 root              root               58 Jul  3 16:49 xcontent
drwxrwxrwx  3 root              root               17 Apr 10  2019 xtrimmer
drwxrwxrwx  7 root              root              140 Jul 21 15:19 zqtest


6、分析添加调度规则前后的区别。添加前,其主机为:lb。添加后,其主机为:wjdev02。如图6、图7
添加前,其主机为:lb。

图6

添加后,其主机为:wjdev02。

图7

7、分别查看主机:lb、wjdev02 的存储,lb 上不存在 /webtv,wjdev02 上存在 /webtv。如图8、图9
分别查看主机:lb、wjdev02 的存储,lb 上不存在 /webtv

图8

分别查看主机:lb、wjdev02 的存储,wjdev02 上存在 /webtv。

图9

]]>
https://www.shuijingwanwq.com/2020/08/05/4358/feed/ 0
在 Postman 中设置与使用变量,需要更新值时,则只需在一个位置进行更改,无需在多个位置进行更改 https://www.shuijingwanwq.com/2020/03/27/4057/ https://www.shuijingwanwq.com/2020/03/27/4057/#respond Fri, 27 Mar 2020 06:31:33 +0000 https://www.shuijingwanwq.com/?p=4057 浏览量: 202

1、打开变量和环境变量的网址:https://learning.postman.com/docs/postman/variables-and-environments/variables/ ,变量和环境变量。使用变量,变量使您可以在请求和脚本中存储和重用值。如图1

打开变量和环境变量的网址:https://learning.postman.com/docs/postman/variables-and-environments/variables/ ,变量和环境变量。使用变量,变量使您可以在请求和脚本中存储和重用值。

图1

2、单击 Postman 右上角的 Environment quick look (眼睛按钮),然后单击 Environment 旁边的 Add 按钮。如图2

单击 Postman 右上角的 Environment quick look (眼睛按钮),然后单击 Environment 旁边的 Add 按钮。

图2

3、添加一个名为 channel_pub_api_host_info 的变量,并将其初始值设置为 http://api.channel-pub-api.localhost ,添加一个名为 channel_pub_api_base_url 的变量,并将其初始值设置为 /v1 ,单击 Add 按钮。如图3

添加一个名为 channel_pub_api_host_info 的变量,并将其初始值设置为 http://api.channel-pub-api.localhost ,添加一个名为 channel_pub_api_base_url 的变量,并将其初始值设置为 /v1 ,单击 Add 按钮。

图3

4、在 Postman 中 GET 请求:http://api.channel-pub-api.localhost/qq/v1/qq-cw-apps?group_id=015ce30b116ce86058fa6ab4fea4ac63 ,如图4

在 Postman 中 GET 请求:http://api.channel-pub-api.localhost/qq/v1/qq-cw-apps?group_id=015ce30b116ce86058fa6ab4fea4ac63

图4

5、将 http://api.channel-pub-api.localhost 替换为:{{channel_pub_api_host_info}},将 /v1 替换为:{{channel_pub_api_base_url}},单击 Postman 右上角的 No Environment 下拉列表,选择 渠道发布接口 ( 本地环境 )。将鼠标悬停在变量名称:{{channel_pub_api_host_info}} 上,可以看到该值为:http://api.channel-pub-api.localhost 。如图5

将 http://api.channel-pub-api.localhost 替换为:{{channel_pub_api_host_info}},将 /v1 替换为:{{channel_pub_api_base_url}},单击 Postman 右上角的 No Environment 下拉列表,选择 渠道发布接口 ( 本地环境 )。将鼠标悬停在变量名称:{{channel_pub_api_host_info}} 上,可以看到该值为:http://api.channel-pub-api.localhost 。

图5

6、在 Postman 中 GET 请求:{{channel_pub_api_host_info}}/qq{{channel_pub_api_base_url}}/qq-cw-apps?group_id=015ce30b116ce86058fa6ab4fea4ac63 ,实际请求网址:http:///qq/qq-cw-apps?group_id=015ce30b116ce86058fa6ab4fea4ac63 ,环境变量未被替换,不符合预期。如图6

在 Postman 中 GET 请求:{{channel_pub_api_host_info}}/qq{{channel_pub_api_base_url}}/qq-cw-apps?group_id=015ce30b116ce86058fa6ab4fea4ac63 ,实际请求网址:http:///qq/qq-cw-apps?group_id=015ce30b116ce86058fa6ab4fea4ac63 ,环境变量未被替换,不符合预期。

图6

7、重新设置环境变量,设置 CURRENT VALUE,如图7

重新设置环境变量,设置 CURRENT VALUE

图7

8、在 Postman 中 GET 请求:{{channel_pub_api_host_info}}/qq{{channel_pub_api_base_url}}/qq-cw-apps?group_id=015ce30b116ce86058fa6ab4fea4ac63 ,实际请求网址:http://api.channel-pub-api.localhost/qq/v1/qq-cw-apps?group_id=015ce30b116ce86058fa6ab4fea4ac63 ,环境变量已被替换,符合预期。如图8

在 Postman 中 GET 请求:{{channel_pub_api_host_info}}/qq{{channel_pub_api_base_url}}/qq-cw-apps?group_id=015ce30b116ce86058fa6ab4fea4ac63 ,实际请求网址:http://api.channel-pub-api.localhost/qq/v1/qq-cw-apps?group_id=015ce30b116ce86058fa6ab4fea4ac63 ,环境变量已被替换,符合预期。

图8

9、此时请求网址为本地环境,准备请求开发环境的网址,添加新的一组环境变量:渠道发布接口 ( 开发环境 ),如图9

此时请求网址为本地环境,准备请求开发环境的网址,添加新的一组环境变量:渠道发布接口 ( 开发环境 )

图9

10、单击 Postman 右上角的 No Environment 下拉列表,选择 渠道发布接口 ( 开发环境 )。在 Postman 中 GET 请求:{{channel_pub_api_host_info}}/qq{{channel_pub_api_base_url}}/qq-cw-apps?group_id=015ce30b116ce86058fa6ab4fea4ac63 ,实际请求网址:https://api.channel-pub.wjdev.chinamcloud.cn/qq/v1/qq-cw-apps?group_id=015ce30b116ce86058fa6ab4fea4ac63 ,环境变量已被替换,符合预期。注:响应中为 http ,不是 https,是因为开发环境自身的原因,与 Postman 无关。如图10

单击 Postman 右上角的 No Environment 下拉列表,选择 渠道发布接口 ( 开发环境 )。在 Postman 中 GET 请求:{{channel_pub_api_host_info}}/qq{{channel_pub_api_base_url}}/qq-cw-apps?group_id=015ce30b116ce86058fa6ab4fea4ac63 ,实际请求网址:https://api.channel-pub.wjdev.chinamcloud.cn/qq/v1/qq-cw-apps?group_id=015ce30b116ce86058fa6ab4fea4ac63 ,环境变量已被替换,符合预期。注:响应中为 http ,不是 https,是因为开发环境自身的原因,与 Postman 无关。

图10

11、单击 Postman 右上角的 Environment quick look (眼睛按钮),然后单击 Globals 旁边的 Edit 按钮。添加一个名为 group_id 的变量,并将其初始值、当前值设置为 015ce30b116ce86058fa6ab4fea4ac63 ,如图11

单击 Postman 右上角的 Environment quick look (眼睛按钮),然后单击 Globals 旁边的 Edit 按钮。添加一个名为 group_id 的变量,并将其初始值、当前值设置为 015ce30b116ce86058fa6ab4fea4ac63

图11

12、在 Postman 中 GET 请求:{{channel_pub_api_host_info}}/qq{{channel_pub_api_base_url}}/qq-cw-apps?group_id={{group_id}} ,实际请求网址:http://api.channel-pub-api.localhost/qq/v1/qq-cw-apps?group_id=015ce30b116ce86058fa6ab4fea4ac63 ,环境变量已被替换,符合预期。分别切换至 2 个环境,皆会自动替换 {{group_id}} 的值为:015ce30b116ce86058fa6ab4fea4ac63。即全局变量可用于所有环境。如图12

在 Postman 中 GET 请求:{{channel_pub_api_host_info}}/qq{{channel_pub_api_base_url}}/qq-cw-apps?group_id={{group_id}} ,实际请求网址:http://api.channel-pub-api.localhost/qq/v1/qq-cw-apps?group_id=015ce30b116ce86058fa6ab4fea4ac63 ,环境变量已被替换,符合预期。分别切换至 2 个环境,皆会自动替换 {{group_id}} 的值为:015ce30b116ce86058fa6ab4fea4ac63。即全局变量可用于所有环境。

图12

13、如果在两个不同的作用域中声明了具有相同名称的变量,则将使用存储在作用域最窄的变量中的值。现阶段仅使用了作用域:Global、Environment。全局变量使您可以访问集合,请求,测试脚本和环境之间的数据。环境变量使您可以针对不同的环境定制处理,例如本地开发与测试或生产。一次只能激活一个环境。如图13

如果在两个不同的作用域中声明了具有相同名称的变量,则将使用存储在作用域最窄的变量中的值。现阶段仅使用了作用域:Global、Environment。全局变量使您可以访问集合,请求,测试脚本和环境之间的数据。环境变量使您可以针对不同的环境定制处理,例如本地开发与测试或生产。一次只能激活一个环境。

图13

14、在本地环境中,添加一个名为 group_id 的变量,并将其初始值、当前值设置为 5ea4502c6f2f11eaa9874577d836ad48 ,单击 Postman 右上角的 No Environment 下拉列表,选择 渠道发布接口 ( 本地环境 )。在 Postman 中 GET 请求:{{channel_pub_api_host_info}}/qq{{channel_pub_api_base_url}}/qq-cw-apps?group_id={{group_id}} ,实际请求网址:http://api.channel-pub-api.localhost/qq/v1/qq-cw-apps?group_id=5ea4502c6f2f11eaa9874577d836ad48 ,环境变量已被替换,符合预期。即环境变量覆盖了全局变量 {{group_id}}。如图14

在本地环境中,添加一个名为 group_id 的变量,并将其初始值、当前值设置为 5ea4502c6f2f11eaa9874577d836ad48 ,单击 Postman 右上角的 No Environment 下拉列表,选择 渠道发布接口 ( 本地环境 )。在 Postman 中 GET 请求:{{channel_pub_api_host_info}}/qq{{channel_pub_api_base_url}}/qq-cw-apps?group_id={{group_id}} ,实际请求网址:http://api.channel-pub-api.localhost/qq/v1/qq-cw-apps?group_id=5ea4502c6f2f11eaa9874577d836ad48 ,环境变量已被替换,符合预期。即环境变量覆盖了全局变量 {{group_id}}。

图14

]]>
https://www.shuijingwanwq.com/2020/03/27/4057/feed/ 0
基于 Rancher 升级容器时,Yii2 高级模板初始化时,报错:Error. Directory frontend/web/assets does not exist 的分析与解决 https://www.shuijingwanwq.com/2019/12/13/3729/ https://www.shuijingwanwq.com/2019/12/13/3729/#respond Fri, 13 Dec 2019 02:04:04 +0000 https://www.shuijingwanwq.com/?p=3729 浏览量: 74 1、Yii2 高级模板初始化时,报错:Error. Directory frontend/web/assets does not exist,如图1
Yii2 高级模板初始化时,报错:Error. Directory frontend/web/assets does not exist

图1

2、进入容器中的目录:/mcloud/www/channel-pub-api/frontend/web,确定目录:/assets 是不存在,如图2
进入容器中的目录:/mcloud/www/channel-pub-api/frontend/web,确定目录:/assets 是不存在

图2

3、分析源代码,又可以确定目录:/frontend/web/assets 是存在的,如图3
分析源代码,又可以确定目录:/frontend/web/assets 是存在的

图3

4、最终分析出原因,目录:/mcloud/www/channel-pub-api/frontend/web 已经被映射至容器所挂载的存储上,而并非源代码所在的目录:/frontend/web,因此报错,删除存储上的挂载,如图4
最终分析出原因,目录:/mcloud/www/channel-pub-api/frontend/web 已经被映射至容器所挂载的存储上,而并非源代码所在的目录:/frontend/web,因此报错,删除存储上的挂载

图4



/webtv/wangjiedev/channel-pub-api/frontend/web:/mcloud/www/channel-pub-api/frontend/web


5、再次升级,初始化时成功,如图5
再次升级,初始化时成功

图5

]]>
https://www.shuijingwanwq.com/2019/12/13/3729/feed/ 0