CentOS7でPHP7.2からPHP7.4にバージョンアップ。ただ簡単すぎた。

ただいま仕事がないのでサーバ系やフリーソフトのバージョンアップをしながらメンテナンスをしている状況です。で、今回はPHPのバージョンアップ。今までPHP7.2系を使っていましたがセキュリティメンテナンスの期限も過ぎてしまったのでさすがにまずいということでPHP7.4系にバージョンアップすることにしました。この手のバージョンアップは状態によっては手順がかなり面倒だったりするのですが…。

 

Remi経由でPHP7.2をインストール済みの環境から

今回の前提条件がこれ。CentOS8のように元からPHP7.2が入っている環境ではなくRemi経由でPHPのバージョンが7.2系にバージョンアップ+設定がちゃんとなされている状態から始まっています。これのおかげでこの後の作業がとんでもなく楽な作業になってしまいました。

 

Remi経由でPHP7.2が入っているならリポジトリを微妙に変更してアップデートを行うだけであっさり終わり

そう。単にアップデートを行うだけで終わりだったわけです。PHP7.2系のリポジトリはremi-php72なので、remi-php74を指定するとPHP7.4系のリポジトリに切り替わります。そのため、とりあえず最新の状態まで更新が完了すれば一発

$ sudo yum update --disablerepo=base,updates --enablerepo=remi,remi-php74

これだけで終わりです。簡単でしょ?まあ、アップデートするときに一時的にPHPに関するサーバを止めてしまったもよかったのかもしれませんが…。あとは更新対象になったものをすべて更新すれば完了です。設定もそこまで違うことはないので使い回しできそうですし、更新の途中でPHP Warningが大量に出てきますがこれもそれほど気にする必要はないと思います。

 

後は運用しながら様子見

とりあえずblogも問題なく動いているようですし、あとは不具合が見つかれば設定などを見直していく、という感じになるかと思います。WordPressのプラグインもそうですが、この手の更新についてもちゃんと確認していかないとセキュリティメンテナンスがされていないものを使っているとどこからアタックが仕掛けられるかわからないですからね。ちゃんとやっていきましょう。

初夢の中身は…ADVゲームの一場面?

明けましておめでとうございます。

 

2021年初めての記事は初夢の中身について

なぜこれが記事になるか?というと内容がとんでもなくADVゲームの一部のような感じだったからです。夢というと自分の脳の記憶の整理だとかお告げだとかいろいろと言われますが、今回の初夢は縁起とかそういう次元を飛び越えたものだったので最低でも書いての残しておきたいと思って書いています。機会があればこの夢の中身をシナリオに使ったADVゲームを出してみたいとか制作に関わりたいとか思っています。…もし誰かこれで企画を思いついたという人はぜひ連絡を。何らかの形で参加します。

 

ちなみに部分的なシナリオはこんな感じ

夢では途中まで(ちょうどいいシーン)で終わってしまって、起きてしまうと自分の左手を眺めながらもの悲しい気分となり、なんとか気力を振り絞ってPCに向かい30分ほどシナリオらしきものを書いていました。この手のシナリオやプロットを書くのは高校生時代に遊びで物語を書いて以来なので全く体裁が整っていませんが、blogやメモ書き程度なのでまあいいかな、というところです。

で、肝心のシナリオはこんな感じ。

ある校舎で遊んでいた君と僕。(もう一組いたかもしれない)

その校舎が時の魔法に包まれる。時を止める(早める?)魔法。

その校舎から僕が出ると魔法が暴走する。時の魔法が急に早まり、

校舎はみるみる時を重ねていく。 気がついたとき…君はもういなかった。

 

魔法の暴走が収まった後、僕は(もう一組いた子と一緒に)最後の探検に出る。

君がいた証拠を探すために。でもそんなものは見つからない。ただ朽ちた校舎があるだけ。

何度も何度も校舎を探す。君と遊んだわずかな記憶を頼りに。

 

そして、君と初めて出会った階段の踊り場で奇跡が起こる。

悔しくて目を閉じて泣いていた僕。どうしようもないほど悲しくて、

もう無理なのかと思い、初めて君と出会ったときにやったポーズをやってみた。

何気なく掲げた左手…。手のひらには君の手の感触…。 君と繋がった…気がする。

目を開けたら消えてしまいそうなほどのわずかな感触。

君と話せる最後の機会となるかも…。 そう思って君との思い出を語っていく。

 

 

どれだけ話してもあふれてくる君への想い。

もう限界だ、と思い覚悟を決めて目を開けてみる

君は…確かにそこにいた。

 

君はずっと…僕の左手の中にいたんだね…。

 

「…どうしても気になって見に来ちゃったんだよ。

 もう大丈夫かな。ここにはもういられないけれども

 君はここから歩き出していってほしいな。

 

(ここで夢から覚める)

注意1:魔法の暴走により見回っているときに校舎の近くで何人かとゴミ回収らしきことをしているイメージあり。家電などの廃棄物が捨てられている部分があったりした。

注意2:<君は…確かにそこにいた。>で「君」は半透明の状態。ワンピースを着た少女のイメージで。階段の窓から日の出の光(のような光)が差し込んでいる状態。

注意3:書いている最中に思い出してみると舞台の校舎は地元の小学校かも。

…どうなんでしょうかね。一応夢で見ているのでイベントCGのような情景(注意2参照)も頭に浮かんでいましたし、何か音楽らしきものが流れていたような気もしています。(気になったので夢の中で流れていたような音楽をピアノで奏でていると20年前後前のADVゲームのBGMに似たようなものがあった)

やっている(+作ったことのある)ADVゲームの本数が本数なのでそれらがごちゃ混ぜになってできたシナリオのような気がしないでもないし、夢占い的に捉えることもできそうな場面ではあるし、(ぶっ飛んだことを考えるなら)この世界を見ている神のような立場の何かから送られたメッセージにも読み取れるし…という摩訶不思議な初夢となってしまいました。

 

(予定では)今年からゲームプログラマではなくなる可能性大

一昨年からいろいろと動いていた結果が出て本格的にゲームプログラマを名乗らない立場になる予定です。Twitterやこのblogには「ゲームプログラマが必要なら参加する」とは書いてあるのですがこの3年間くらいだとただの1件もその手の誘いはなかったですので結局そちら側には戻れなさそうな気が、ということで。業界的に縮小が続いているようにも見えるのでプログラマやスクリプなんかはあまりが多すぎてかなり厳しいのでしょうね。

ただし、もし上のシナリオ(プロット)を拡張していって同人ゲームに近いものを出すのもありかな~とは思っています。自分がメインで関わった最後の作品、という意味で何かを残したいとは考えています。そうなると時間と予算次第ですね。予算は(BIGの記事を書いている位なので)宝くじでも当てるか、そうでなくても株式などの投資を少しずつして増やしていくなどして確保できれば動きたいとは考えています。

 

久しぶりにBlog(WordPress)の広告系設定を見直してみた

いろいろと忙しかったのでその手の設定を放置していたのですよ…。ちょうどGoogleの広告に関する状態を見に行ったときにいろいろと警告も出ていたのでいくつか修正してみることにしました。

 

AMPを導入

この場合のAMPはAccelerated Mobile Pagesの方です。モバイル系でアクセスされたときに速度を向上させるための技術ですね。出た当初はWordPressへ導入するのがかなり大変だったことと、とりあえずWPTouchでモバイルページ側をどうにかしていたので放置しておいたのですが、今回プラグインの導入とともにWPTouchを破棄することにしてみました。メニューとかがなくなって見づらくなっていると思いますが、モバイル版の方は後でテーマを変更して調整する予定です。プラグインは一応2種類あるようですが、公式に近いと思われる方を導入しています。もう片方の方は有料モードがあるのでちょっと怪しいということで今回は使いません。

 

Google広告のプラグインも変更

AMPを導入することで問題になるのが広告ユニットの問題。AMPではJavaScriptが使えない影響でそのままでは広告ユニットが表示できない、という問題があります。…まあ、なんとなくですがここ数年はWPTouch側でも広告を出す処理を設定にしていないような気がしているのでそれはそれでいいのかもしれませんが…。とりあえずAMP対応かつ有料にならないものを探す、ということで今回はAd Inserterを導入してみました。解説ページなどから設定をしてとりあえず動く状態には持って行っています。ヘッダ部への設定およびAMPのページでのみ動作する広告と通常ページで動作する広告を混ぜるのがちょっと大変でした。また特に設定箇所を表示する機能が地味に使えるのがうれしいところで、挿入箇所が予定していたポイントでなかったときにデバッグ的に使うことができました。なお、設定を少し代えてトップページの広告だけ第一記事と第二記事に表示するように設定しています。

 

そのほか詳しいことは別のサイトに譲ります

今回は説明サイトに従って設定してみたただの記録なのでこれで終わりです。WordPressでAMPを導入してかつGoogleなどの広告を表示させるのであればWordPressのプラグインであるAMPとAd Inserterの組み合わせがそれなりにいいのでは?という個人的感想を書いて終わりにします。

 

MEGA BIG1等が1210回に誕生したのでちょっとした数字で振り返る

いろいろとネタにはしてきましたけれども・・・。1週間前のネタですみません。MEGA BIG1等が誕生しましたね。自分でなかったことを残念に思いながらちょっとした数字を見てみたいと思います。ちなみに、行われた回数や口数が圧倒的に少ないですので統計的な収束は全くしていません。それを前提でとりあえずこんな数字、という話です。

 

初の1等が出るまでに購入された口数は・・・約5700万口

正確には56566610口になります。MEGA BIGは4^12=16777216通りありますので、割り算すると3.371…となります。この数字にあまり意味はありませんが、なんとなく求めてみたかった数であります。いわゆる「もし1回で購入されたとき、何口が当選になるのか?の目安」くらいの意味です。ちなみに口数や回数が多くなる(収束する)と1になりますし、宝くじも未購入等で銀行に戻る分がないと仮定すると1になります。このあたりは「コンピュータがランダムに数字を選ぶ」特性が表れている可能性はありそうですが…。その他のBIG系くじと比較していませんのでなんともいえませんね。

 

初の1等が出るまでに行われた回数は・・・37回

今年はコロナ禍の影響で試合が中止になったり一週間のうちに2回くじの機会があったりと…ちょっと変わったスケジュールが組まれましたからね。特に一週間に2回の機会があると期間が短くなる関係で1回あたりの購入される口数が減ってしまうので確率的に厳しくなるのですよね…。試合の中止は確率を押しあげる効果はあるのですが、それでも期間内だと(対象の12試合外で中止になったこともあったので)2回しかなかった、ということになるようです。

 

当たりが出ることは証明できたのでこれで購入口数が増えるのか?

新聞や報道関係でも出ましたからね…。ただ、「今年早い時期に始まったはずのくじが年末まで当たりが出ていなかった」という事態から考えると個人的にはちょっと厳しい可能性は高そうです。とりあえず定期的にちょこっとだけ買って…という考え方が正しそうな気はします。このblogの宝くじ系の記事でも書いていますが、「億円をとれるという条件で確率で見てましな日本の宝くじは100円BIGである」というところは変わりませんのでそれをどう考えるか、ですか。

 

8月に構築した48TBファイルサーバのHDDが一つやられたので交換してみる

まさか構築して1年以内にHDDがやられるとは思いませんでした。しかもエラーが現れたのはZFSのscrub処理によってで、しかもSMARTの報告で確定するくらいのもの。はじめは「とりあえず再チェックかければなんとかなるかな…?」と思っていましたが…

 

HDD1台が不良セクタを大量に出す事態に

まず問題になったのはzpoolのstatusから。たま~にコマンド経由で何か問題がないかチェックをかけていますが、そのとき出てきた状態。ちなみにstatusなどのメッセージはちょっと控えていないので状態だけ。とりあえずこんな状態でした。

$ sudo zpool status
…
    NAME             STATE     READ WRITE CKSUM
    tank             DEGRADED     0     0     0
      raidz2-0       DEGRADED     0     0     0
        zfs1         ONLINE       0     0     0
        zfs2         ONLINE       0     0     0
        zfs3         DEGRADED     0     0   170  too many errors
        zfs4         ONLINE       0     0     0
        zfs5         ONLINE       0     0     0
        zfs6         ONLINE       0     0     0
        zfs7         ONLINE       0     0     0
        zfs8         ONLINE       0     0     0
…

zfs3だけ 大量のCheckSumエラーを出している状態です。不思議に思い一度zpool clearによりエラーを一度クリアして再度scrubによりチェックサムを確認させると同じような状態になったので「こりゃまずいのでは?」と思い、smartmontoolsを入れて問題のドライブの状態を見てみると…

$ sudo smartctl -a /dev/sde
…
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       65
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       936
  7 Seek_Error_Rate         0x000f   075   060   045    Pre-fail  Always       -       33243485
…

はい、明らかな 不良セクタの発生でした。冒頭にも書きましたが(HDDを10台同時とはいえ)稼働させて1年もたたずに1台目がやられてしまうとはびっくりです。とりあえずびっくりもしてられないので回復作業に取りかかります。念のために1台だけ予備のドライブがあるのでそれを取り付けます。

 

ZFSからRAIDZ系の回復作業を行う

ZFSでRAIDZ系を使っているときは対象のパーティションはDEGRADED状態ですがアクセスは可能ですので慌てなくても大丈夫です。後は取り外せる状態にして物理的に電源を落として交換orホットスワップによる交換を行い、再構築を行わせるだけです。まずは取り外す準備として壊れてしまったドライブを無効にする処理を行います。コマンドはzpool offlineです。

$ sudo zpool offline tank zfs3
$ sudo zpool status
…
    NAME             STATE     READ WRITE CKSUM
    tank             DEGRADED     0     0     0
      raidz2-0       DEGRADED     0     0     0
        zfs1         ONLINE       0     0     0
        zfs2         ONLINE       0     0     0
        zfs3         OFFLINE      0     0   170  too many errors
        zfs4         ONLINE       0     0     0
        zfs5         ONLINE       0     0     0
        zfs6         ONLINE       0     0     0
        zfs7         ONLINE       0     0     0
        zfs8         ONLINE       0     0     0
…

上のようにすると取り外しの準備ができます。対象のドライブがOFFLINEになっていますね。これを行った後で当該のドライブを取り外し、予備のドライブと交換します。面倒だったのはどれが/dev/sdeにあたるか、という問題。構築時にも書きましたがSATA3I10-PCIEの特性で端子(物理ドライブ)の順番と認識されているドライブの順番が一致していないので順番を間違えないように交換する必要があります。確認してみると今回対象になっていたのは物理的に一番下に来ていたドライブでした。

あとは交換してパーティションを組み直して終わりです。ドライブが交換されただけなので認識順番が変わらないことを使うとそのまま/dev/sdeになるため、

$ sudo parted /dev/sde
 - mklabel gpt
 - mkpart zfs3 zfs 2048s -1s

でzfs3の領域が元に戻り、ZFSに再構築を行わせれば完了です。

 $ sudo zpool replace tank zfs3

さすがに8TBもあるとかなり時間がかかるようですので気長に待ちましょう。RAIDZ2のよいところは2台故障まで耐えられるので1台の修復中であればそこまで怖がる必要がないことですね。完了したらTwitterにでもつぶやいておきます。

 

壊れたドライブはどうしようか…

最後はこれ。1年もたたず(というか半年すらたっていない)ので保証とか効かないかな…とは考えています。さすがにさらに予備を買っておくのはどうかと思いますので、なんとかしたいところですね。