---
# System prepended metadata

title: 231206 xlead
tags: [works]

---

# 231206 xlead 
全部看過一次再來執行動作，會更容易了解
![image](https://hackmd.io/_uploads/SJLU__pBp.png)
oracle vm virtualbox install手順書
`\\sendai-file1-sv\sendai-project\187\187111\共通\個人\志村\NTTComメモ.xlsx`
這是主要網頁的建置
*(目前我ASTON_231213使用的branch是 http://srvnttc2:3000/nttc/rdb-common-apps/src/v4.0.0_hotfix_sc_quasar)
如果不是遠端伺服器的話就要做到可以用外面的VSCODE連到VM的內部
做完之後再往下看
http://10.0.2.15/rdb/prod/svc/#/menu-manage
http://192.168.33.10/pfid/dev/#/
http://172.16.3.194/pfid/prod/#/login
這三個網頁是有可能用到的網址，再從這邊延伸 (不代表只有這三個
如果上面可以正常到達首頁，就不用做下面找出.env檔變更成DEV動作 
*(我沒有這麼做就可以all_up正常啟動
/root/mongo/rdb-common-apps/dev.env prod -> dev
もし変更しなければ、起動できますならいい不用
以上是網頁的基本構造

menu資料夾裡有
無法登入的話看資料夾裡的password.txt檔案 建立密碼


以下是API的使用與建置
#### ■バックアップ基盤
 ▼共有フォルダ 
```
\\sendai-file1-sv\sendai-project\187\187111\2023_04_07\T-P1-BAK-24-23-1-X\
舊的
\\sendai-file1-sv\sendai-project\233\233035` 
*(目前我ASTON_231213用這邊，有空可以逛逛
```
▼リポジトリ
這是我目前為止API與CRON的建置處
```
http://srvnttc2:3000/nttc/PFBK.git
http://172.16.11.97:3000/nttc/PFBK.git
```
![image](https://hackmd.io/_uploads/SJakOBUPa.png)

▼ソースの取得、ブランチ切替え
```
git clone http://172.16.11.97:3000/nttc/PFBK.git
git checkout origin develop *(目前我ASTON_231225 用feature_tape
``` 

▼環境変数の修正
```
/PFBK/source/pfbk-dr-cron/.env
WEBDAV_URL=http://192.168.33.11:10080/pfbk/webdav/
WEBDAV_USER=pfbk_admin
WEBDAV_PASSWORD=DoraemoN123!
※IPアドレスは開発環境に合わせて修正してください
``` 
▼コンテナの起動（バックエンド処理のみ）
```
pfbk-dr-cron
docker-compose up -d
pfbk-dr-webdav
docker-compose build
docker-compose up -d
```

▼ファイルにパスワード
```
vi /home/xlead_admin/WebDAV/user.passwd
pfbk_admin:WebDAV:cdae7a88b3eea48ba27d88d381ba6366
pfbk_maintenance:WebDAV:df852afd8ffef07f86696c3607e8d94e
pfbk_azure_cron:WebDAV:e31027837d18218b4eb16fbe8207abaf
pfbk_dr_cron:WebDAV:fa5e1e7eb8b14c114d22476932ffa6be
pfbk_dr_api:WebDAV:57508a84513886447ebe3ba376622a9c
pfep_endpoint_cron:WebDAV:afe5a650bf31f4b7788e69b05c5cf159
```

#### ▼起動確認（WEBDAV）
```
スキーマ定義ファイルの存在確認
/home/xlead_admin/WebDAV/user.passwd
バックアップディレクトリの作成
cd /mnt/mpatha/xlead/PFBK/WebDAV
mkdir ./BACKUP ./BACKUP/DB ./BACKUP/LOG
mkdir ./TEMP ./TEMP/DB ./TEMP/LOG
ＡＰＩアクセスの確認
curl --digest -u pfbk_admin:DoraemoN123! --url http://localhost:10080/pfbk/webdav/ -k
```

#### ▼起動確認（CRON）
```
①テスト用ファイルの作成
cd /mnt/mpatha/xlead/PFBK/WebDAV/data/TEMP/DB
vi je2_common_mongo_pfap-com_20230611.gz
※ファイル名が大事、中身は適当でOK
②CRONの実行
docker exec -it pfbk-dr-cron /bin/bash
python /work/python/app/pfbk_dr_cron_db.py
/home/xlead_admin/PFBK/log/dr-cron
③実行結果の確認
・下記に作成したファイルが無くなっていること
/mnt/mpatha/xlead/PFBK/WebDAV/data/TEMP/DB
・各種ディレクトリが作成され、下記にファイルが移動していること
/mnt/mpatha/xlead/PFBK/WebDAV/data/BACKUP/DB/20230611/je2/common
```
如果沒有成功試試重啟cron container，變更資料夾內容有時須重啟才可以繼續使用webdav
到這裡的時候希望能自己找到一個適合自己的快速啟動cron裡python檔案的方法


#### データモデル
■製造step1 MongoDBコンテナ準備
```
MongoDBコンテナの作成
Collection（２つ）のセットアップツール作成
サンプルデータの登録
▼シーケンス
\\sendai-file1-sv\sendai-project\187\187111\2023_04_07\T-P1-BAK-24-23-1-X\
検討_バックアップ基盤_24年度版.md
▼データモデル
\\sendai-file1-sv\sendai-project\187\187111\2023_04_07\T-P1-BAK-24-23-1-X\BAK_05_詳細設計\
T-P1-BAK-24-データモデル.drawio.svg
▼サンプル：MongoDBのセットアップソース
NTTC/rdb-common-apps_v4.0.0_feature_mongodb-replication/tools/setupPFID
▼作業ブランチ
refs/remotes/origin/feature_mongodb
``` 
務必看懂データモデル 檔案存放構造，怎麼存進DB，跟WEBDAVE是什麼關西，STATUS是怎麼運作
搭配CODE使用會更能了解，在下面這些檔案中找出webdav的存放路徑，
如何從WEBDAV下載到STORAGE，或者反方向存放
#### *(註一 cron側
![image](https://hackmd.io/_uploads/Hydbr98IT.png)
status 5 -> 7 or 9
```
\\sendai-file1-sv\sendai-project\187\187111\2023_04_07\T-P1-BAK-24-23-1-X\BAK_05_詳細設計\その他\
バックアップ基盤_v2_データイメージ.xlsx
```
 
#### pfbk-backup-management
*(目前我ASTON_231213使用的branch是 http://srvnttc2:3000/nttc/PFBK/src/feature_archive)
■ソース
PFBK/source/pfbk-backup-management/
▼ビルド
docker-compose build
▼起動
bash all_up.sh
 
 
部品の取込み手順はこちらの資料を参考に実施してみてください。
```
\\sendai-file1-sv\sendai-project\233\233035\2023_08_11\T-P1-ID-V2-23-2-X\
認証認可基盤_提供部品取込手順書.xlsx
```
不明点は鎌田へ！

"----->"部分を増加
```
backup-management-api:
    build: ./src/backup-management-api
    image: backup-management-api:${ENV_BLANCH_COM}
    networks:
      - app_net
    depends_on:
      - backup-management-db
    tty: true
    volumes:
      - ${docker_containers}:/docker/containers
      - ./src/backup-management-api/app:/work/python/app
    environment:
      PLATFORM: ${PLATFORM}
      ADMIN_ROLE_ID: ${admin_role_id}
      ENV_TAG_VAL: ${env_tag_val}
      GR_TAG_VAL: ${gr_tag_val}
      SV_TAG_VAL: ${sv_tag_val}
      SYS_TAG_VAL: ${sys_tag_val}
      ENV_TAG_FLG: ${env_tag_flg}
      GR_TAG_FLG: ${gr_tag_flg}
      SV_TAG_FLG: ${sv_tag_flg}
      SYS_TAG_FLG: ${sys_tag_flg}
      SYSTEM_USER_ID: ${VUE_APP_system_user}
      SYSTEM_USER_PASS: ${system_user_pass}
      ACCOUNT_MANAGEMENT_ADDRESS: ${pfid_api_url}:${port_nginx}
      REDIS_CONTAINER: ${acc_redis_container}
      REDIS_PORT: ${port_account_redis}
      REDIS_PASS: ${acc_redis_pass}
      REDIS_SSL: ${acc_redis_ssl}
      MEMCACHED_CONTAINER: ${memcached_container}
      CACHE_TIME: ${cache_time}
      LOCAL_TIMEZONE: ${timezone}
      LOCK_MESSAGE_ID: ${lock_message_id}
      LOCK_COUNT_THRESHOLD_LIST: ${lock_count_threshold_list}
      LOCK_RELEASE_MESSAGE_ID: ${lock_release_message_id}
      RESET_PASSWORD_MESSAGE_ID: ${reset_password_message_id}
      REQUEST_MESSAGE_STATUS_ID: ${request_message_status_id}
      COM_MONGO_CONTAINER: ${backup_management_mongo_container}
      LOG_LEVEL: ${log_level}
      COSMOS_DB_CONNECTION_STR: ${cosmos_db_connection_str_com}
      SMTP_USER: ${smtp_user}
      SMTP_PASSWORD: ${smtp_password}
      PFBK_ADMIN_ROLE_ID: ${pfbk_admin_role_id}
      PFBK_TAG_VAL: ${pfbk_tag_val}
-----> PFID_API_PATH: ${VUE_APP_PFID_PATH}
    restart: always
    logging:
      driver: json-file
```

#### ■MailHogコンテナ起動
docker run --name vm_cw_mailhog -p 1025:1025 -p 8025:8025 --net app_net mailhog/mailhog
MailHogのUI
```
http://192.168.33.11:8025/
http://172.16.3.194/pfid/prod/#/message-method
```
![image](https://hackmd.io/_uploads/ByJhFuTrp.png)
![image](https://hackmd.io/_uploads/Syc3YOTBT.png)
メッセージ手段の設定変更
```
'smtp_host': 'vm_cw_mailhog'
'smtp_port': 1025
'from_name': 'メッセージ管理'
'from_address': 'pfap@xxx.xxx'
```

##### Swaggerの場所
rdb-common-apps_quasar\docs\api\PFAP-acc-manage-api.yaml

SWAGGER要能作用，需要更換TOKEN動作
![image](https://hackmd.io/_uploads/BJ1vQqIL6.png)
這裡的default要更換成從網頁上得到的token
http://172.16.3.194/pfid/prod/#/account-top
![image](https://hackmd.io/_uploads/Hy-hmcIIa.png)
在首頁按下登入後可以從上面圖片中獲得X-Subject-Token

メッセージ送信のAPI
裡面的token 要做更換 可以參考archive_daily_verify.py裡面的get_token如何拿到
```
curl -X 'POST' \  'http://localhost:80/pfid/dev/id-api/mng/v1/message/send/me-common' \  -H 'accept: application/json' \  -H 'X-Auth-Token: 03a2c13319683f4ed2136bdf8902a39031a36a88bb144f8e5ba2b14285990a1c' \  -H 'Content-Type: application/json' \  -d '{  "user_ids": [  "admin"  ],  "group_ids": [],  "system_role_send": false,  "system_roles": [],  "system_role_service_id": [],  "template_params": {    "title": "【テスト】●●●障害通知（ユーザ指定）",    "subject": "（テスト送信です）\n\n●●●障害が発生しました。\n\n【発生日時】\nyyyy/mm/dd hh:mm:ss\n\n【障害内容】\nxxx"  }}'
```

```
\\sendai-file1-sv\sendai-project\233\233035\共通\個人\志村\20230908_ヘッダメニュー構築\20230821_Vue3_Quesar移行.xlsx
```
UIのソースをGitにプッシュしたので、プルしてください。
UIを使うために必要な各NGINXの定義ファイルは下記に格納しましたので、参考にしてください。
```
\\sendai-file1-sv\sendai-project\233\233035\2023_08_11\T-P1-BAK-V2-23-2-X\90.その他\20231114_ui
```
pfep-frontend-nginx_default.conf
backup-management-nginx_default.conf
pfap-frontend-nginx_default.conf
なお、QuasarのHotDeploy環境はNode.jsの更新など色々とOS環境のアップデートが必要なので、
参考まで、HotDeploy環境が構築できた場合のnode_module込みのソースも格納しておきます。
pfbk-vue.tar.gz
這裡面的檔案去自己的網頁那邊找到除了壓縮檔的三個，觀察不同的地方，貼上並重新all_up一次

#### 資産管理のプロパティ[asset]追加
```
{
    _id: ObjectId('65269a59d0cfab0007e5f1bc'),
    archive_name: 'ログ基盤',
    backup_status: true,
    owners: [
        'B103164',
        'pflog-v2-develop-manager-01'
    ],
    quote_size: {
        'sum/G': 1,
        'limit/%': 80
    },
    archive_define: [
        {
            define_id: 'snapshot_base',
            define_name: '共通網　ログ基盤　Ｂａｓｅログ',
            category_1: 1,
            category_2: 2
        },
        {
            define_id: 'snapshot_pj1',
            define_name: '共通網　ログ基盤　ＰＪ１ログ',
            category_1: 1,
            category_2: 2
        },
        {
            define_id: 'H000195758',
            define_name: 'リソースDB プラットフォーム構築 T-P1-LOG-22-21-1-H',
            category_1: 2,
            category_2: 2,
            asset: {
                asset_cd: '5030004309',
                wbs_cd: '03197099930710002',
                approval_cd: 'ＭＳＳカ00793116',
                approval_title: '【投資】リソースDB プラットフォーム構築 T-P1-LOG-22-21-1の契約締結について [ISMP:SYS0003005]',
                acquisition_date: '202203'
            }
        }
    ]
}
```
資產配置可以沒有擁有者可以是多數


#### *(註二
```
rdb-common-apps 起動
PFBK
-cronの使用（コンテナ中pythonの実行）
-WebDAVの使用（curl）
-quasarのデバッグモード
mailhog メッセージ送信
```
在執行cron時可以看附近的一些檔案比如archive_daily_verify
裡面會有DB的資訊
從SWAGGER中的回覆範例中找到db的輸入資料，
自己製作更新DB的python檔案以達到隨時可以復原DB
大多資料範例都可以在SWAGGER中找到，或是在DATAモデル中找到 (如果從SWAGGER找記得比對DATAモデル選擇正確的資料複製)
![image](https://hackmd.io/_uploads/S1oTB5IL6.png)

以上所有行為要注意自己的IP，畢竟跟我環境不同，
有API問題查看CONTAINER的LOG
比如有API問題 看API相關的container 大部分API相關都會在這裡
docker logs -f dev_backup-management-api_1
有登入問題看ACCOUNT相關container以此類推*(我到現在也只看過這兩種就是
#### *(註3
目前根據資料庫有3類五個
TAPE
-management
ARCHIVE
-management
-result
BACKUP
-management
-result

#### 補充
API側 可以想像成使用者在網站上所需的行為1-5
CRON側 則是定期執行的動作7-9
API 1-9 的行為說明上是:
有人提出檔案需要備份，從要求到準備好需要備份的檔案，1-5
配合上面的#起動確認（CRON）可以達到7-9
實際上備份到storage是(7)，要成為(7)才可以提出下載需求(download status 1)
根據世代管理刪除檔案(9)
找data model中的各個欄位，在API與CRON中的程式碼尋找可以快速了解行為
API相關檔案是，可以透過swagger配合下面檔案去認識
```PFBK/source/pfbk-backup-management/src/backup-management-api/app/views/cman/viewcman.py```


以上是我看對話紀錄加上自己得通靈夢到的，希望能讓看的人快速掌握

----
#### 結語:

到這邊應該要能理解包含以下
1.稍微了解 註一檔案內容，能夠執行註二，了解註3用途
2.熟悉CONTAINER 的基本指令 *(查看LOG，建立，移除CONTAINER
3.能夠以自己建立的DATA放入DB後 透過SEAGGER API與註一的檔案，自行執行API 觀察DB使得result_status能從1-9，觀察其中檔案移動過程，路徑變化
4.能夠使用quasar的dev模式進行hot-reload開發 
![image](https://hackmd.io/_uploads/rkuauc8UT.png)
我ASTON_231213使用的畫面 *(注意有包含左邊側欄，並且能點開顯示，能收縮
5.了解corn側與API側分別的行為

到這邊基本上與上司的對話應該能聽懂7成

這裡有我整包的檔案
\\sendai-file1-sv\sendai-project\187\187111\共通\個人\ソウ\20231213_chen