ギャバンITサービス
お菓子の家が作れるシステムエンジニアです

システムの起動状態確認スクリプト

unix/linuxは1番目のプロセスが起動してから、ツリー構造でいっぱい処理が起動してく。花火がパーっと上がる感じ。 その1つ1つを追いかけるのはけっこうたいへん。 見落としそうにもなるし。 なるべく直観的に、なるべく素早く状況をつかむためのスクリプト。 sshしたらほぼ必ず結果見る。 結論 sshしたコマンドラインでonlchkって入力すると、サービスが動いているかどうかを教えてくれて、そのバージョンも拾う。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 nari@nafslinux-ubu22:/gvis/script/proc$ onlchk ... linux CHECK END Description: Ubuntu 22.04.1 LTS ... httpd CHECK END Server version: Apache/2.4.52 (Ubuntu) ... smb CHECK END Version 4.15.9-Ubuntu ... docker CHECK END Docker version 20.10.17, build 100c701 === Google STATUS=== ...rtx1210-status > ...rtx1210-status Current status is disabled. ...Google -status ...Google -status jelly-fslinux us-east1-b e2-standard-8 192.168.100.218 xx.xx.xx.xx RUNNING === SSH Tunnel STATUS=== nafslinux.intra.gavann-it.com:43306:gcp-gvis-dklinux.intra.gavann-it.com:3306 nafslinux.intra.gavann-it.com:50022:gcp-gvis-dklinux.intra.gavann-it.com:20022 nafslinux.intra.gavann-it.com:53389:gcp-gvis-dklinux.intra.gavann-it.com:23389 nafslinux.intra.gavann-it.com:63389:gcp-gvis-dklinux.intra.gavann-it.com:33389 === Docker Container STATUS=== docker-cl_red8-1: redhat:8gvis Up 2 hours docker-cl_red9-1: redhat:9gvis Up 2 hours docker-cl_ubu22-1: ubu:22gvis Up 2 hours docker-sv_django-1: sv_django:4 Up 2 hours docker-sv_https-portal-1: steveltn/https-portal:1 Up 2 hours docker-sv_mariadb-1: mariadb:10.5.7 Up 2 hours docker-sv_php74-1: docker_sv_php74 Up 2 hours docker-sv_web118-1: nginx:1.18.0-alpine Up 2 hours svldap-admin: osixia/phpldapadmin:latest Up 2 hours svldap-server: osixia/openldap:latest Up 2 hours nari@nafslinux-ubu22:/gvis/script/proc$ 自分にとってはローカルlinuxは母艦みたいなもんで、その役割状態が今どうなってるのかがわかるようになってて欲しい。 ...

 ⭐️

vscodeの表示が狂う(妄想)

ある日突然macで、vscodeの表示全体がおかしくなった。エクスプローラ画面が欠けた状態で、黒い曲線なんなんやろ。 なんやねんこれ。 どないするんやろ。 ちょっとググると、直し方書いている人がおられた。 keiのPC技術ノート: Visual Studio Codeにて、表示が崩れる。また、ターミナル表示において文字が抜ける場合があった場合の対処。 kei0725.blogspot.com なるほど、コマンドパレットで起動時のオプションを指定したらええらしい。 やってみようとしたら、それ以前にコマンドパレットも表示がぐちゃぐちゃで、まともに使えず。 macやったらunixやから.vscodeってフォルダあるんとちゃうかなぁって探したらあった。 しかもargv.jsonがあって、中にアクセラレーションのこと書いてる箇所がコメント化されてあった。 すぐviで編集してvscode起動しなおしたら、あっさりなおった。 chromeのときは真っ黒で、似たようなことあったな。

djangoをdockerコンテナで利用(17) - djangoで帳簿運用

3か月の並行運用期間と過去データで検算 php版を最初に作ったときは、excelで検算してた。 webページをそのままexcelに貼り付けるだけじゃうまく行かない箇所は電卓。 今回は3月にdjango版がだいたいできたから、4月から入力しながら処理誤りを修正しつつ、php版の結果と比べてった。 処理をそろえて作ってるから当たり前なんやけど、1円単位で合計があったときはやっぱり嬉しい。 こういうとき ディスプレイが3枚 あるとチェックがめっちゃ楽。 入力は3か月やけど、帳簿は7年分を確認してった。 django版はちょっと細かめに計算。 その計算結果を使ってグラフ作らせたら、これまたパーセンテージが一致。 小数点第2位まで一致。 7年分見たとき、この数字が一致したときの快感はなんとも言えず気持ちよかった。 印刷でアセった 検索結果一覧画面を表示させておいて、これをpdf保管したい。 例えば現金出納帳は決まった年数保管しとかないといけない。 firefoxで見たら、なんじゃこりゃ。 ボタンとかロゴとかだけ表示されてるけど、数字があらへん。 cssのせい? djangoの中の何か設定? pipでなんかインストールいるんか? 小一時間ほどdjangoで印刷っていうのを調べたら、いろいろ結果が出てきた。 けっこう面倒くさい。 こんなんやってられへんし、もっと楽にできへんのかなぁってfirefox閉じてchromeで表示させたら、あっさり表示できた。 ブラウザ依存とか困るなぁ。 何年か前に「閉じる」のボタンを作ってたら、セキュリティか何かの都合でfirefoxもchromeも閉じてくれんようになった。 最近はjava scriptの解釈が変わったんかもしれんけど、また閉じれるようになった。 この印刷も何年かしたらちゃんと見えなくなるんとちゃうか。 フォームの箇所いらんから結果だけ印刷したいけど、まぁ数字は読めるしええか。 今年はいったんこれで完成。 どっかで解決方法見つけたら、pdf出力の方法探そっと。 1年かけて得られたもの php版の帳簿管理の仕組みから脱却してdjangoで動かそうとしたのが去年の今頃。 「pythonで扱うdjangoってどんなんやねん」から始まって、ssl利用とかpdfのデータベース保存とかグラフ作成とか、いろいろ挑戦してようやく完成。 google cloudの中のコンテナも用意できて、ローカルの開発環境とクラウドの本番環境を切り替えながら使うのもできるようになった。 コンテナ仮想化使ってるから、単純にアプリケーション作るための知識を得るだけじゃなく、アプリケーションインフラ寄りの知見も得られた。 日本語フォントのインストールとか、円グラフのライブラリをdjangoで使えるようにするのは苦労したなぁ。 djangoのモジュールのgitグラフを見ると、作って楽しかった履歴が見える。 できたつもりが、できてなかったり、思い出したら人に言えない恥ずかしいコミットもある。 最初はurls.py小さかったけど、こんなにデカなってた。 画面遷移がうまく行かんなぁって、コレ書き間違えてるのに気づくの時間かかったっけ。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 urlpatterns = [ path('login/', auth_views.LoginView.as_view(template_name='gvisWebApp/login.html'), name='login'), path('logout/', auth_views.LogoutView.as_view(template_name='gvisWebApp/logout.html'), name='logout'), path('home/', gvis_base_views.home, name="home"), path('gvis_001_IntraIchiran/', gvis_base_views.gvis_001_IntraIchiran, name="gvis_001_IntraIchiran"), path('gvis_002_LogKensaku/', gvis_log_views.GvisLogList.as_view(), name="gvis_002_LogKensaku"), path('gvis_Complete/', gvis_base_views.gvis_Complete, name="gvis_Complete"), path('gvis_100_ShisanKensaku/', gvis_zaiko_views.GvisZaikoList.as_view(), name="gvis_100_ShisanKensaku"), path('gvis_101_ShisanDetail/<int:pk>/', gvis_zaiko_views.GvisZaikoDetail.as_view(), name="gvis_101_ShisanDetail"), path('gvis_102_ShisanCreate/', gvis_zaiko_views.GvisZaikoCreate.as_view(), name="gvis_102_ShisanCreate"), path('gvis_103_ShisanDelete/<int:pk>/', gvis_zaiko_views.GvisZaikoDelete.as_view(), name="gvis_103_ShisanDelete"), path('gvis_104_ShisanUpdate/<int:pk>/', gvis_zaiko_views.GvisZaikoUpdate.as_view(), name="gvis_104_ShisanUpdate"), path('gvis_105_GvisZaikoTENPU/<int:pk>/', gvis_zaiko_views.GvisZaikoTENPU.as_view(), name="gvis_105_GvisZaikoTENPU"), path('gvis_200_KokyakuKensaku/', gvis_cust_views.GvisMstCustomerList.as_view(), name="gvis_200_KokyakuKensaku"), path('gvis_201_KokyakuDetail/<int:pk>/', gvis_cust_views.GvisMstCustomerDetail.as_view(), name="gvis_201_KokyakuDetail"), path('gvis_202_KokyakuCreate/', gvis_cust_views.GvisMstCustomerCreate.as_view(), name="gvis_202_KokyakuCreate"), path('gvis_203_KokyakuDelete/<int:pk>/', gvis_cust_views.GvisMstCustomerDelete.as_view(), name="gvis_203_KokyakuDelete"), path('gvis_204_KokyakuUpdate/<int:pk>/', gvis_cust_views.GvisMstCustomerUpdate.as_view(), name="gvis_204_KokyakuUpdate"), path('gvis_205_GvisCustTENPU/<int:pk>/', gvis_cust_views.GvisMstCustomerTENPU.as_view(), name="gvis_205_GvisCustTENPU"), path('gvis_300_TorihikiKensaku/', gvis_tran_views.GvisTransactionList.as_view(), name="gvis_300_TorihikiKensaku"), path('gvis_301_TorihikiDetail/<int:pk>/', gvis_tran_views.GvisTransactionDetail.as_view(), name="gvis_301_TorihikiDetail"), path('gvis_302_TorihikiCreate/', gvis_tran_views.GvisTransactionCreate.as_view(), name="gvis_302_TorihikiCreate"), path('gvis_303_TorihikiDelete/<int:pk>/', gvis_tran_views.GvisTransactionDelete.as_view(), name="gvis_303_TorihikiDelete"), path('gvis_304_TorihikiUpdate/<int:pk>/', gvis_tran_views.GvisTransactionUpdate.as_view(), name="gvis_304_TorihikiUpdate"), path('gvis_305_GvisTranTENPU/<int:pk>/', gvis_tran_views.GvisTransactionTENPU.as_view(), name="gvis_305_GvisTranTENPU"), path('gvis_400_KatsudoKensaku/', gvis_work_views.GvisWorkList.as_view(), name="gvis_400_KatsudoKensaku"), path('gvis_401_KatsudoDetail/<int:pk>/', gvis_work_views.GvisWorkDetail.as_view(), name="gvis_401_KatsudoDetail"), path('gvis_402_KatsudoCreate/', gvis_work_views.GvisWorkCreate.as_view(), name="gvis_402_KatsudoCreate"), path('gvis_403_KatsudoDelete/<int:pk>/', gvis_work_views.GvisWorkDelete.as_view(), name="gvis_403_KatsudoDelete"), path('gvis_404_KatsudoUpdate/<int:pk>/', gvis_work_views.GvisWorkUpdate.as_view(), name="gvis_404_KatsudoUpdate"), path('gvis_405_GvisWorkTENPU/<int:pk>/', gvis_work_views.GvisWorkTENPU.as_view(), name="gvis_405_GvisWorkTENPU"), path('GvisWorkCopy/', gvis_work_views.GvisWorkCopy, name="GvisWorkCopy"), path('GvisWorkMonthlyCopy/', gvis_work_views.GvisWorkMonthlyCopy, name="GvisWorkMonthlyCopy"), path('gvis_500_KeihiKensaku/', gvis_keihi_views.GvisKeihiList.as_view(), name="gvis_500_KeihiKensaku"), path('gvis_501_KeihiDetail/<int:pk>/', gvis_keihi_views.GvisKeihiDetail.as_view(), name="gvis_501_KeihiDetail"), path('gvis_502_KeihiCreate/', gvis_keihi_views.GvisKeihiCreate.as_view(), name="gvis_502_KeihiCreate"), path('gvis_503_KeihiDelete/<int:pk>/', gvis_keihi_views.GvisKeihiDelete.as_view(), name="gvis_503_KeihiDelete"), path('gvis_504_KeihiUpdate/<int:pk>/', gvis_keihi_views.GvisKeihiUpdate.as_view(), name="gvis_504_KeihiUpdate"), path('GvisKeihiCopy/', gvis_keihi_views.GvisKeihiCopy, name="GvisKeihiCopy"), path('GvisKeihiMonthlyCopy/', gvis_keihi_views.GvisKeihiMonthlyCopy, name="GvisKeihiMonthlyCopy"), path('gvis_510_KamokuKensaku/', gvis_kamoku_views.GvisKamokuList.as_view(), name="gvis_510_KamokuKensaku"), ## 科目画面ではcreate/detail viewを扱わず、削除と更新のみ path('gvis_513_KamokuDelete/<int:pk>/', gvis_kamoku_views.GvisKamokuDelete.as_view(), name="gvis_513_KamokuDelete"), path('gvis_514_KamokuUpdate/<int:pk>/', gvis_kamoku_views.GvisKamokuUpdate.as_view(), name="gvis_514_KamokuUpdate"), path('GvisKamokuCopy/', gvis_kamoku_views.GvisKamokuCopy, name="GvisKamokuCopy"), path('gvis_600_ChoboKensaku/', gvis_chobo_views.GvisChoboList.as_view(), name="gvis_600_ChoboKensaku"), path('gvis_700_KoteishisanKensaku/', gvis_koteishisan_views.GvisKoteishisanList.as_view(), name="gvis_700_KoteishisanKensaku"), path('gvis_800_GenkinKensaku/', gvis_genkin_views.GvisGenkinList.as_view(), name="gvis_800_GenkinKensaku"), path('gvis_900_ShiwakeKensaku/', gvis_shiwake_views.GvisShiwakeList.as_view(), name="gvis_900_ShiwakeKensaku"), path('ENplot/<int:year>', gvis_chobo_views.get_ENpng, name='ENplot') # 円グラフを描くための設定 数年したらまたpython&djangoの環境から脱却して別の実装へ引っ越すかもしれんけど、別の言語へ引っ越すための勉強になった。 ...

 ⭐️

速度メモの参考(gvis-2022)

速度の確認に使った参考URL speedtest.net gvisセグメント-windows物理 gvisセグメント-windows物理-m2.ssd-c-ts256gmts800-ドライブ性能 gvisセグメント-windows物理-m2.ssd-d-ct500mx500ssd-ドライブ性能 gvisセグメント-windows物理-usb3-HDD6TB-ドライブ性能 gvisセグメント-linuxVM gvisセグメント-windowsVM gvisセグメント-linuxVM-Docker 1 apt install gnome-system-monitor

ubuntu22を利用開始(google cloud分)

ローカルlinuxでubuntu22利用がうまく行ったので、こっちもバージョン上げた。 基本はローカルlinuxでやったことと同じセットアップをするけど、ネットワークだけきちっと想定しながら作らなあかん。 マシンイメージでubuntu22選べるんかなぁって見たら、下から2つ目にあった。 前はfocal-fossaってネコっぽかったけど、次はjellyfishでクラゲ。 フワフワと動きが軽かったらええんやけどなぁ。 Google cloudのubuntu centosのバージョンアップも同じようなことやったけど、ubuntuでも行程はだいたい同じ。 ローカルlinuxで練習したから、スンナリできた。 やっぱり開発環境で練習して本番環境でも同じことするってやり方だと安心できる。 グローバルIPの予約 いきなりVMを作るわけじゃなく、まずはネットワークから。 どこにどう作って、許可設定どうするかとかをイメージしてからやる。 新しくグローバルIPを予約し、ubuntu22を新OSとしてインストールして、ssh鍵とか作っていく。最終的には古いグローバルIPは開放する(使わずにリザーブするとお金かかるし)。 昔使ったgoogle cloudコンソールのssh接続どうやるんやったか忘れた。 コンソールから一時的にsshを許可するように設定して、終わったらteraterm接続のみしかしないからファイアウォール設定を無効にしとく。 コンソールからsshを許可する方法を説明されている方がおられた。 作者さんありがとう。 https://www.apps-gcp.com/gce-casual-knowhow-03/ こんな感じのgcloudコマンドライン使うらしい。 1 2 3 gcloud projects add-iam-policy-binding gvis-XXXXXX \ --member=user:XXXXXXXXXX@gmail.com \ --role=roles/iap.tunnelResourceAccessor VPCにあるFW設定も新しく予約したグローバルIPで許可設定入れて接続確認してく。 VPCの中にローカルIPも必要なので、それも予約しとく。 グローバルIPは1つだけ予約しておき、使い終わったら返却。ローカルIPは2つを確保しておく。 バージョン上げたりOS変える都度、ローカルは末尾118と218を行ったり来たりする。 新OSを準備 元からディスクはOS用(30GB)とデータ用(300GB)を使っているので、新OS用を一時的にもう1つ用意する。 データ用のディスクには、excelのファイルとかpdfとかもあるけどdockerの永続化領域とイメージが入った領域を持ってる。 永続化領域にはmariadb/rdp用のlinux/gitlabのデータとか入ってて、ubuntu20で使ってたものをubuntu22にマウントしてdocker起動すると一発で動くはず。 「1か月動かしたら$25.66やぞぉ」って書いてあるけど、別にずーっと動かすわけじゃないので気にしない、気にしない。 接続確認した後でdockerコンテナ使い始める直前に、cpuのコア数とメモリサイズ増やすから今は適当に設定。 「ネットワークインターフェースの編集」ってとこでVPCを先につけとく。タグづけしたローカルIPとグローバルIPもつける。この2つをマシン作るときに忘れると、ローカルPCからうまく接続できない。最初これを忘れて、後で変更したら接続できんなぁって悩んだ。 昔はVPN接続使ってて、3年ぐらい前にVPC作った。今はなくてもなんとかなるんやけど、まぁせっかくあるしそのまま使う。 ssh鍵作成とtera term接続 いっつもこのやり方忘れる。 ssh接続するときに秘密鍵と公開鍵を使う。 パスワードもつけておく。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 nari@nafslinux-ubu22:~$ ssh-keygen -t rsa -b 4096 -C "nari@gmail.com" Generating public/private rsa key pair. Enter file in which to save the key (/home/nari/.ssh/id_rsa): /home/nari/id_rsa_nari.txt Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/nari/id_rsa_nari.txt Your public key has been saved in /home/nari/id_rsa_nari.txt.pub The key fingerprint is: SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx nari@gmail.com The key's randomart image is: +---[RSA 4096]----+ | ooo . | | + + | | o o . . . | | S . ..=.o| | = *. +oo=*| | o . .+B.| +----[SHA256]-----+ nari@nafslinux-ubu22:~$ 作ったファイルは大事に保管。 tera termのマクロでも使わせるし、sshトンネリングするときにも使う。 ...

 ⭐️