let's encrypt更新時にエラー(Warning)が出ていた(2022年5月)

let's encrypt を cron で更新した際に飛んでくるメールにエラー(WARNING)が記載されていた。
-------------------------------------------------------------------------
WARNING: couldn't find Python 3.5+ to check for updates.
Skipping upgrade because new OS dependencies may need to be installed.

To upgrade to a newer version, please run this script again manually so you can
approve changes or with --non-interactive on the command line to automatically
install any required packages.
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/hyogen.info.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not yet due for renewal

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

The following certs are not due for renewal yet:
/etc/letsencrypt/live/hyogen.info/fullchain.pem expires on 2022-08-06 (skipped)
No renewals were attempted.
No hooks were run.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-------------------------------------------------------------------------

Python 3.5+ が見つからないとのこと。
いつからエラーが出ていたか過去のメールを調べてみたら2020年1月の時点でエラーが確認できた。
一年五か月前からエラーが出てはいるが、証明書の有効期限は更新されている。

メールにしたがって manually(手動)で更新して見る。

-------------------------------------------------------------------------
/var/myshellscript/lets_encrypt_renew.sh
-------------------------------------------------------------------------

もしくは

-------------------------------------------------------------------------
# sudo /root/certbot-auto renew --post-hook "sudo service httpd restart"
-------------------------------------------------------------------------

centos-release-scl(10:7-4.el6.centos)と centos-release-scl-rh(2-4.el6.centos)がインストールできないとエラーが出る
-------------------------------------------------------------------------

===================================================
パッケージ アーキテクチャ バージョン リポジトリー 容量
===================================================
インストールしています:
centos-release-scl noarch 10:7-4.el6.centos extras 12 k
依存性関連でのインストールをします。:
centos-release-scl-rh noarch 2-4.el6.centos extras 12 k

トランザクションの要約
===================================================
インストール 2 パッケージ

総ダウンロード容量: 24 k
インストール済み容量: 39 k
パッケージをダウンロードしています:
http://vault.centos.org/6.8/extras/x86_64/Packages/centos-release-scl-7-4.el6.centos.noarch.rpm: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
他のミラーを試します。
To address this issue please refer to the below knowledge base article

https://access.redhat.com/articles/1320623

If above article doesn't help to resolve this issue please open a ticket with Red Hat Support.

http://vault.centos.org/6.8/extras/x86_64/Packages/centos-release-scl-rh-2-4.el6.centos.noarch.rpm: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
他のミラーを試します。

パッケージのダウンロードでエラー:
10:centos-release-scl-7-4.el6.centos.noarch: failure: Packages/centos-release-scl-7-4.el6.centos.noarch.rpm from extras: [Errno 256] No more mirrors to try.
centos-release-scl-rh-2-4.el6.centos.noarch: failure: Packages/centos-release-scl-rh-2-4.el6.centos.noarch.rpm from extras: [Errno 256] No more mirrors to try.

Could not enable SCL. Aborting bootstrap!
-------------------------------------------------------------------------

centos-release-scl と centos-release-scl-rh の該当バージョンがインストールされていないのか確認

-------------------------------------------------------------------------
yum list installed | grep centos
-------------------------------------------------------------------------
該当なし。

インストールはできるのか確認。
-------------------------------------------------------------------------
yum list | grep centos
-------------------------------------------------------------------------

インストール可能な一覧には含まれている
-------------------------------------------------------------------------
centos-release-gluster7.noarch 1.0-1.el6.centos extras
centos-release-scl.noarch 10:7-4.el6.centos extras
centos-release-scl-rh.noarch 2-4.el6.centos extras
centos-release-storage-common.noarch 1-2.el6.centos extras
-------------------------------------------------------------------------

しかしインストールはできない。

http://vault.centos.org/6.8/extras/x86_64/Packages/centos-release-scl-rh-2-4.el6.centos.noarch.rpm にブラウザでアクセスしてみると

centOS6.8 には centos-release-scl-7-3.el6.centos.noarch.rpm しか提供されていない。

centOS6.10 には 7-4 があった。

postfixの送信履歴の見方

利用しているメーラー(MTA)の確認
----------------------------------
alternatives --display mta
----------------------------------

postfixを利用している場合は下記の結果になる
----------------------------------
リンクは現在 /usr/sbin/sendmail.postfix を指しています
----------------------------------

sendmaiを利用している場合は下記の結果になる
----------------------------------
リンクは現在 /usr/sbin/sendmail.sendmai を指しています
----------------------------------

メールログの場所
---------------------
/var/log/maillog
---------------------

【stripe】webhookでデータ取得【PHP】

webhookで受信したデータから特定の情報を取り出す覚書

PHPでの書き方

//customer_id を使ってメールアドレスを取得
$customer = \Stripe\Customer::retrieve($customer_id);
$customer_email = $customer->email;

【stripeのwebhookテスト】サブスクで支払いエラーを出す

stripe で webhook の動作テストとして、サブスクリプションの支払いエラーを出す手順

1.stripe の dashboard をテストモードにして顧客を作成。

2.顧客のクレジットカード番号は以下のものを登録

4000 0000 0000 0341

stripe の document(組み込みをテストする)

3.この顧客でサブスクリプションを作成

charge.failed イベントが発生する。charge.failed をリッスンしておけば webhook で通知が受け取れる。

ipアドレス別でサーバーに接続している数を調べるコマンド

ipアドレス別でサーバーに接続している数を調べるコマンド
-----------------------------------------------------------
netstat -tan | awk '{print $5}' | cut -d : -f1 | sort -n | uniq -c | sort -n
-----------------------------------------------------------

オプションの説明
a → すべてのネットワーク接続を表示する
n → DSN逆引きを行わない(ipアドレスで表示)
t → TCPのみを表示する

awk '{print $5}' → 5フィールド目を取り出す

cut -d : -f1 → デリミタ(区切り文字)「:」を指定。フィールド1を取り出す

sort -n → データを文字ではなく、数値として並び変える。次のuniq が隣り合った行しか比較しないので必要

uniq -c → 各行の前に出現回数を出力する。隣り合った行しか比較しない

sort -n → データを文字ではなく、数値として並び変える。出現回数順に並べ替える

OOM発動時にサーバーを再起動

現在の設定を確認
--------------------------------------------
# sysctl vm.panic_on_oom kernel.panic
vm.panic_on_oom = 0
kernel.panic = 0
--------------------------------------------

vm.panic_on_oom
OOM Killer が実行される際に、カーネルパニックを起こさせるかを制御するパラメータ

0 → カーネルパニックしない
1 → カーネルパニックする。但し cgroup 制限により物理メモリがまだ残っている場合にはカーネルパニックしない。
2 → 必ずカーネルパニックする

カーネルパニックとは、オペレーティングシステム(OS)のカーネル部分において、何らかの理由で致命的なエラーが発生し、安全に復旧することができなくなった状態。

kernel.panic = 0 → なにもしない
kernel.panic = 30 → 30秒後にリブート

--------------------------------------------
sysctl -a | grep vm.over
--------------------------------------------

現状
--------------------------------------------
vm.overcommit_memory=1
vm.panic_on_oom=1
kernel.panic=10
--------------------------------------------

vm.overcommit_memory:オーバーコミットするかどうかの設定
vm.overcommit_memory = 0 → オーバーコミット有効。実メモリの大きさまで割り当てる。
vm.overcommit_memory = 1 → オーバーコミット有効。実メモリ以上に割り当てる。

sysctl.conf を下記のように変更
#oom になったらカーネルパニックにさせてサーバーを再起動
--------------------------------
vm.overcommit_memory=1
vm.panic_on_oom=1
#15秒後に再起動
kernel.panic=15
--------------------------------

設定を反映
--------------------------------
sysctl -p
--------------------------------

httpdやmysqldを監視するmonitを導入する

monit を導入する

ダウンロードできるか確認
-----------------------------------
yum list available | grep monit
-----------------------------------

monit をインストール
-----------------------------------
yum install monit
-----------------------------------

設定ファイルをいじるので原本をコピー
-----------------------------------
cp -p /etc/monit.conf /etc/monit.conf_org
-----------------------------------
※centOS7.x系では設定ファイル名は monitrc

起動しているか(monitの状態確認)
-----------------------------------
monit summary
-----------------------------------

もしくは

-----------------------------------
monit status
-----------------------------------

結果:起動していない
-----------------------------------
Monit: the monit daemon is not running
-----------------------------------

monit を起動させる(centOS6.x系)
-----------------------------------
service monit start
-----------------------------------

monit を起動させる(centOS7.x系)
-----------------------------------
systemctl start monit
-----------------------------------

設定ファイルの編集
-----------------------------------
vi /etc/monit.conf
-----------------------------------

monit のログ(デフォルト)
-----------------------------------
cat /var/log/monit
-----------------------------------

monit.conf を見ると、include /etc/monit.d/ 以下のファイルがインクルードされているのが分かる
-----------------------------------
# Include all files from /etc/monit.d/
include /etc/monit.d/*
-----------------------------------

監視対象のデーモンは /etc/monit.d/ に個別にファイルを作ればいい。

crond の監視をする場合、下記の内容で crond.conf というファイル名にして /etc/monit.d の直下に置く
-----------------------------------
check process crond with pidfile /var/run/crond.pid
start program = "/etc/init.d/crond start"
stop program = "/etc/init.d/crond stop"
if 5 restarts within 5 cycles then unmonitor
-----------------------------------

mysqldはこれ
-----------------------------------
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
start program = "/etc/init.d/mysqld start"
stop program = "/etc/init.d/mysqld stop"
if 5 restarts within 5 cycles then unmonitor
-----------------------------------

httpd(apache)はこれ
-----------------------------------
check process httpd with pidfile /var/run/httpd/httpd.pid
start program = "/etc/init.d/httpd start"
stop program = "/etc/init.d/httpd stop"
if 5 restarts within 5 cycles then unmonitor
-----------------------------------

メールの設定。monit.conf に書く
-----------------------------------
#yahooメールの送信サーバーを指定
set mailserver localhost

#アラートメールの内容
set mail-format {
from: monit@example.com
subject: $HOST : $SERVICE - $EVENT
message: Monit
ACTION : $ACTION
SERVICE : $SERVICE
at $DATE on $HOST.
DESCRIPTION : $DESCRIPTION
}

#送信先
set alert 自分のメール@yahoo.co.jp
-----------------------------------

個別設定ファイルを作ったらシンタックスのチェックも忘れずに
-----------------------------------
monit -t
-----------------------------------

シンタックスに問題なければ設定を反映
-----------------------------------
monit reload
-----------------------------------

サーバーが起動した際に monit も自動起動するか確認
-----------------------------------
# chkconfig --list monit
monit 0:off 1:off 2:off 3:off 4:off 5:off 6:off
-----------------------------------
run level 3 ~ 5 が on になっていれば自動起動する。↑これでは起動しない。

ちなみに mysqld の run level を確認すると 3~ 5 が on になっていた。
----------------------------------
#chkconfig --list mysqld
mysqld 0:off 1:off 2:off 3:on 4:on 5:on 6:off
---------------------------------

monit を自動起動に設定する
---------------------------------
chkconfig monit on
---------------------------------

スクリプトにより unmonitor になった場合に monitor に戻すとき
-----------------------------------
monit monitor all
-----------------------------------

一時的に unmonitor するとき
-----------------------------------
monit unmonitor crond

もしくは

monit unmonitor all
-----------------------------------

一度 unmonitor になると自動で戻らないので cron で定期的に戻す
-----------------------------------
#60分ごとに unmonit をリフレッシュ
*/60 * * * * /usr/bin/monit monitor all
-----------------------------------

マニュアルを開く
-----------------------------------
man monit
-----------------------------------

poderosaのssh2接続で使用していた秘密鍵をtermiusで使う

PoderosaをSSH2 形式で利用していて、PC に置いてある秘密鍵を iphone のターミナルでも再利用しようとコピペしたが使えない。

id_rsa というファイル名でこんな感じの内容だった
------------------------------------------------

---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----
Comment:
faejpg@gjewrewf:affewgwgrgfsdfdsfdsfsdffa
ejpg@gjewrewf:affewgwgrgfsdfdsfdsfsdffaej
pg@gjewrewf:affewgwgrgfsdfdsfdsfsdffaejpg
@gjewrewf:affewgwgrgfsdfdsfdsfsdffaejpg@g
jewrewf:affewgwgrgfsdfdsfdsfsdffaejpg@gjew
rewf:affewgwgrgfsdfdsfdsfsdf
---- END SSH2 ENCRYPTED PRIVATE KEY ----
------------------------------------------------

これはssh.com形式(SECSH)という形式の鍵で termius で使用するには OpenSSH形式への変換が必要らしい
認証鍵の形式についてはこちらを参考
「SSHの公開鍵ってなに?」の「認証鍵の形式」の章

ちなみにサーバーにアップロードされている公開キーは ssh-rsa~ から始まる一行の物でOpenSSH 形式だった。
------------------------------------------------
cat /home/ユーザー名/.ssh/authorized_keys
------------------------------------------------

ssh.com形式(SECSH)をOpenSSH形式へ鍵の形式変換

変換を試みる

ssh-keygen コマンドがあるか確認
------------------------------
which ssh-keygen
------------------------------

変換を実施
------------------------------
# ssh-keygen -i -f id_rsa > new_id_rsa
unsupported cipher 3des-cbc
decode blob failed.
------------------------------

失敗した。

別の方法で変換を試みる。

参考ページの方法で変換する↓
PoderosaのSSH2の秘密鍵をOpenSSHで使う

秘密鍵の変換は puttygen.exe を利用するとできるらしい。

1.ダウンロードしたputtygen.exe をダブルクリックで起動。
2. [Conversions]→[Import key] でPoderosaで作成した秘密鍵をインポート
3. [Conversions]→[Export OpenSSH key] で秘密鍵をエクスポート

出来上がった秘密鍵を iphone の termius に itunes のファイル共有から移動させて接続できた。

サーバーへの接続要求が失敗した数の味方

サーバーへの接続要求が失敗した数の味方

コマンド
-----------------------------------------
# netstat -s | grep Tcp: -A 10
-----------------------------------------

netstat -s は、システム起動後からのネットワークの統計値を表示するためコマンド

-A 10 はgrep のオプションで、十行うしろも表示

結果
-----------------------------------------
Tcp:
15707 active connections openings
1356123 passive connection openings
2425 failed connection attempts
33948 connection resets received
187 connections established
32977847 segments received
34238933 segments send out
298015 segments retransmited
14 bad segments received.
26367 resets sent
-----------------------------------------

failed connection attempts が失敗した接続の数

linuxでファイルを探すfindコマンドの使い方

error_log という名前のファイルを探したい場合
--------------------------------------
# find / -name error_log
--------------------------------------

ワイルドカードも使える
--------------------------------------
# find / -name error_*
--------------------------------------

1 / 3312345...102030...最後 »