bashを用いてSlackへメッセージを投稿する

という処理を実現するためにIncoming Webhooksという機能を使うようである。作業の大筋はこういう具合である。

  • Slackアプリを作成
  • Incoming Webhooksを有効にセット
  • ワークスペースへのアクセス許可を付与
  • 動作確認

Slackアプリを作成

まずナイスな緑のボタンをクリックすることでSlackアプリを作成するページへアクセスする。アプリに名を与え、活躍の場となるワークスペースを選択する。アプリ名はのちの変更が許されているから、命名に何時間もかける作業を先送りにできる。ワークスペースはあとから変更が効かないから勢い慎重にならざるを得ない。

Incoming Webhooksを有効にセット

アプリをこしらえるとBasic Informationのページへと遷移する。そうしたら「Add features and functionality」の中にある「Incoming Webhooks」をクリックする。ここにIncoming Webhooksを有効にするスイッチがあるから此れをクリックしてOnへと変更するのである。

ワークスペースへのアクセス許可を付与

Incoming Webhooksが有効にセットされるとページの下部にcurlのサンプルコマンドなどが現れる。此処で「Add New Webhook to Workspace」ボタンをクリックすると、アプリに対してワークスペースへのアクセス権限を許可する画面へと移るから投稿先のチャンネルを選択して「許可する」ボタンをクリックする。

此れによって遂に具体的なWebhook URLが誂えられる。Webhook URLは余所の人の悪用を避けるために内緒にせねばならない。あとはこのURLに対してJSON形式でメッセージをPOSTすることでSlackにメッセージを投げつけられるようになる。curlコマンドによるサンプルもこしらえてくれるから気軽に動作確認もおこなえる。

動作確認

サンプルのcurlコマンドを実行して、設定したワークスペースのチャンネルに対してメッセージが正常に投げかけられたら「ok」と表示される。スマートフォンにSlackを導入して良しなに設定を施してあれば通知もやってくる。

通知がやって来ないときはSlackの「おやすみモード」がオンになっていたりスマートフォンの省電力設定が妨害していることもあるから「通知のトラブルシューティング」を実施してみるのがよろしい。そうしてようやっと望んだ動作が手に入ったのである。

参考:
Sending messages using Incoming Webhooks

WordPressをインストールする際に現れる幾つかのエラーを対処する

OS: Red Hat Enterprise Linux Server release 7.8 (Maipo)
Apache 2.4.6 / mysql 8.0.19 / PHP 7.3.17
WordPress 5.4

WordPressについて次のような具合でインストールが容易であると喧伝されている。

WordPress is well-known for its ease of installation. Under most circumstances, installing WordPress is a very simple process and takes less than five minutes to complete.

だのに大急ぎで構築を仕上げねばならないときに限って次々とエラーに見舞われてちっとも5分以内じゃ成し遂げられないことが相次ぐものである。その上、少し間が空いてしまうと解決に導いたエラーの記憶がすっかりと抜け落ち再び同じ内容に悩まされて貴重な時間を浪費するからいい加減、文章として残しておこうというものである。

一番目に直面するのは「お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。」というエラーメッセージである。此れはphp-mysqlndパッケージが不足している為に発生するものであるからRemi’s RPM repositoryの辺りからサッとインストールして終いである。

$ sudo yum install --enablerepo=remi-php73 php-mysqlnd
$ sudo systemctl restart httpd.service

次に立ちはだかるのが「データベース接続確立エラー」というやつである。MySQL8系が導入されている環境であって、ユーザー名とパスワードに間違いがなくてホスト名も正しくMySQLが動作しているにもかかわらずこのエラーが出現するなら十中十一程度の割合でMySQLの認証プラグインが原因であるとおもう。

この当て推量を確かなものにするため wp-config-sample.php をコピーして wp-config.phpを拵え、WP_DEBUG の値を true に置き換えてDEBUGモードを有効にし、改めてインストールを試みてみるとこうである。

The server requested authentication method unknown to the client と云うのだからもうすっかり裏付けが保証されたものである。こうなればユーザの認証プラグインを mysql_native_password に変更すれば問題が解消される。

mysql> alter user 'root'@'localhost' identified with mysql_native_password by 'p@ssw0rd';

最後は「wp-config.php ファイルに書き込みできません。」 というものでインストールディレクトリのパーミッションに特段の問題が無いのにこういった訴えを受けた場合はSELINUXを無効にセットすると解決する。

$ sudo vi /etc/sysconfig/selinux
#SELINUX=enforcing
SELINUX=disabled

$ sudo reboot

こうしてインストールはつつがなく完了するようになった。

pvsやvgsやlvsコマンドのサイズ表示に現れる < マークの意味

これらのコマンドではデフォルトで --units r オプションを指定したものとしてサイズ表示が取り扱われている模様である。此れは人間に読みやすいよう二進接頭辞の単位に変換してディスク容量を表記する効能があってその際、少数第3位が四捨五入されるのであるが其れが実際の容量よりも小さくなった場合に現れるものと見られる。

$ sudo pvs
  PV             VG             Fmt  Attr PSize   PFree
  /dev/nvme0n1p2 centos_centos7 lvm2 a--  <19.00g    0

現在のディスク容量をバイト単位で表記するとこういう具合である。

$ sudo pvs --units b
  PV             VG             Fmt  Attr PSize        PFree
  /dev/nvme0n1p2 centos_centos7 lvm2 a--  20396900352B    0B

20396900352Byteを二進接頭辞のGiB単位に変換すると18.99609375GiBであって、少数第3位を四捨五入すると19.00GiBである。此れは実際の容量よりも幾許か大きい為にほんとうはも少し小さいサイズであるぞと主張するべく印を出している模様である。

仮想マシンを停止することなくLVMでディスク容量を追加する

OS:CentOS Linux release 7.7.1908
LVM: 2.02.185(2)-RHEL7
VMware Workstaion 15 Pro 15.5.2 build-15785246

既に稼働中の仮想マシンを停止せずにディスク容量を増すよう指令を受け実践するものである。然し乍ら追加したいディスクの種類がIDEとNVMeの場合は稼働中、新たに追加すること能わぬからこういう場合、関係者とマシン停止の機会を何としてでも調整せねばならない。まずは現状のブロックデバイスを把握する。

$ lsblk -i
NAME                    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0                      11:0    1 1024M  0 rom
nvme0n1                 259:0    0   20G  0 disk
|-nvme0n1p1             259:1    0    1G  0 part /boot
`-nvme0n1p2             259:2    0   19G  0 part
  |-centos_centos7-root 253:0    0   17G  0 lvm  /
  `-centos_centos7-swap 253:1    0    2G  0 lvm  [SWAP]

そうしたら仮想マシンにディスクを追加する。

仮想マシンが稼働中であるとIDEとNVMeの仮想ディスクは追加できない

恙無くディスクが追加されたら改めてブロックデバイスを一覧すると新たにsdaというブロックデバイスがあるからこれが先に追加したディスクであろうと見当が付く。

$ lsblk -i
NAME                    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                       8:0    0   20G  0 disk
sr0                      11:0    1 1024M  0 rom
nvme0n1                 259:0    0   20G  0 disk
|-nvme0n1p1             259:1    0    1G  0 part /boot
`-nvme0n1p2             259:2    0   19G  0 part
  |-centos_centos7-root 253:0    0   17G  0 lvm  /
  `-centos_centos7-swap 253:1    0    2G  0 lvm  [SWAP]

このあとの手続きは物理ボリューム、ボリュームグループ、論理ボリュームそれぞれの作成である。先ずは追加したブロックデバイス /dev/sda をLVMで扱うために物理ボリュームとして初期化する。

$ sudo pvs
  PV             VG             Fmt  Attr PSize   PFree
  /dev/nvme0n1p2 centos_centos7 lvm2 a--  <19.00g    0

$ sudo pvcreate /dev/sda
  Physical volume "/dev/sda" successfully created.

$ sudo pvs
  PV             VG             Fmt  Attr PSize   PFree
  /dev/nvme0n1p2 centos_centos7 lvm2 a--  <19.00g    0
  /dev/sda       centos_centos7 lvm2 a--  <20.00g    0

/dev/sda が物理ボリュームとして追加されているから引き続き之を元にしてボリュームグループを作成する。ボリュームグループ名である centos_centos7 を用いてボリュームグループを作成した。

$ sudo vgs
  VG             #PV #LV #SN Attr   VSize   VFree
  centos_centos7   1   2   0 wz--n- <19.00g    0

$ sudo vgextend centos_centos7 /dev/sda
  Volume group "centos_centos7" successfully extended

$ sudo vgs
  VG             #PV #LV #SN Attr   VSize  VFree
  centos_centos7   2   2   0 wz--n- 38.99g    0

次に論理ボリュームを追加する。ボリュームグループ centos_centos7 の内、論理ボリューム root の容量を拡張したいからlvextendコマンドでこうである。

$ sudo lvs
  LV   VG             Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos_centos7 -wi-ao---- <17.00g
  swap centos_centos7 -wi-ao----   2.00g

$ sudo lvextend -l +100%FREE /dev/mapper/centos_centos7-root
  Size of logical volume centos_centos7/root changed from <17.00 GiB (4351 extents) to 36.99 GiB (9470 extents).
  Logical volume centos_centos7/root successfully resized.

$ sudo lvs
  LV   VG             Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos_centos7 -wi-ao---- 36.99g
  swap centos_centos7 -wi-ao----  2.00g

最後にファイルシステムの拡張を実施する。XFSファイルシステムで構成されているから xfs_growfs コマンドで以って拡張する。

$ df -Th
ファイルシス                    タイプ   サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos_centos7-root xfs         17G  1.5G   16G    9% /

$ sudo xfs_growfs /dev/mapper/centos_centos7-root
meta-data=/dev/mapper/centos_centos7-root isize=512    agcount=4, agsize=1113856 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=4455424, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

$ df -Th
ファイルシス                    タイプ   サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos_centos7-root xfs         37G  1.5G   36G    4% /

これでようやっとディスク容量の拡張が達成された。

.txtでない拡張子のファイルをtext/plainとして扱いたい

OS: CentOS Linux release 7.7.1908 (Core)
httpd-2.4.6-90.el7.centos.x86_64
Internet Explorer 11.719.18362.0

.lstという拡張子の付くテキストファイルをInternet Explorerで表示したときに改行が反映されないという通報を受けて調査を進めたところ、Content-Typeがtext/plainとして扱われていないが為に表示がクシャリとなっている模様である。

Google Chromeでは改行がきっちり表現されていたからInternet Explorer固有の問題であると早合点して、Microsoft Edgeへの移行を進言すべく目論んでいたところ、Microsoft Edgeもやはり表示がクシャリとなってしまったからすっかり計画が狂ってしまった。

拡張子が.txtであれば勝手にtext/plain扱いされて良いけれどもファイル名の変更は受け入れられない情勢である。唯一、Apacheの設定変更のみが許されているのである。それでこうである。

$ sudo vi /etc/httpd/conf/httpd.conf
<FilesMatch "\.lst$">
  AddType text/plain lst
</FilesMatch>

これで拡張子が.lstのファイルもtext/plainとして扱われてInternet Explorerでも改行が反映された。反映されないときは概ねキャッシュが邪魔をしているからCrtl+F5でスーパーリロードするのが宜しい。

AddTypeディレクティブは無闇にセットすると.lst.guroのような拡張子であっても効果を発揮してしまうから本当は SetHandler text/plain を使うのが良いようである。

けれどもどうしてもSetHandlerの設定が反映されなかったので已む無くFilesMatchディレクティブで取り囲んだAddTypeでお茶を濁したものである。

参考:
AddType ディレクティブ