# 231206 xlead
全部看過一次再來執行動作,會更容易了解

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
```

▼ソースの取得、ブランチ切替え
```
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
APIアクセスの確認
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(2つ)のセットアップツール作成
サンプルデータの登録
▼シーケンス
\\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側

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
```


メッセージ手段の設定変更
```
'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動作

這裡的default要更換成從網頁上得到的token
http://172.16.3.194/pfid/prod/#/account-top

在首頁按下登入後可以從上面圖片中獲得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: '共通網 ログ基盤 Baseログ',
category_1: 1,
category_2: 2
},
{
define_id: 'snapshot_pj1',
define_name: '共通網 ログ基盤 PJ1ログ',
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: 'MSSカ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モデル選擇正確的資料複製)

以上所有行為要注意自己的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開發

我ASTON_231213使用的畫面 *(注意有包含左邊側欄,並且能點開顯示,能收縮
5.了解corn側與API側分別的行為
到這邊基本上與上司的對話應該能聽懂7成
這裡有我整包的檔案
\\sendai-file1-sv\sendai-project\187\187111\共通\個人\ソウ\20231213_chen