Harmless Weblog

PHP

さくらVPSその後(CentOS7のEOL対応)

さくらのVPSは契約後そろそろ2年になる。面倒で何もせずに先送りしているうちにあっという間にCentOS7のEOLの日(2024.6.30)が来てしまった。

結局移行先のOSは何が最適なのかはっきりしない。さくらVPS公式サイトの初心者向け講座が改訂されることを期待していたんだけど、何もなし。検索した感じだとAlmaLinuxとRockyLinuxのどちらかで、AlmaLinux派がやや優勢か?という感じ。

とにかく日替わり通信術練習の日々更新を止めないことが最重要で、あとは自分用のWebアプリ(日記とメモ)はできればすぐに使えるようにしたいけれど、これは最悪自分だけの問題なので、しばらく止まるのは許容できる。

移行の手順は次のような感じだろうか。ここで抜け漏れが無いようにできるだけ考えておくことが大切な気がする。それでも「あ、あの設定が抜けてた」とか必ずありそうだけど。それでもちょっと考えただけでこれだけのステップがあるのかと呆然とする。

  1. レンタルサーバ上の日替わり通信術練習サイトにシステムメンテナンスのアナウンスを載せる
  2. 移行作業中のバックアップ環境であるラズパイを最新状態にする(pythonのライブラリをVPSに合わせる)
  3. 日替わり通信術練習の生成スクリプトの最新バージョンをgithubにプッシュし、上記ラズパイにクローン
  4. pythonのパッケージをラズパイに反映[※1]
  5. Xで更新状況をつぶやくbotも同様にクローン
  6. クローンしたスクリプトの動作をチェックしてちゃんと動くようにする
  7. VPS上のcronで日々更新を止める。
  8. ラズパイ上のcronで日々更新を開始。この時点でうまく動かなければいったん切り戻し。
  9. VPS上のデータやスクリプト、設定などをバックアップ
    • 日記アプリとデータ
    • メモアプリとデータ
    • Webサイト
    • ITマンションアシスタント
    • cron, incron
    • firewalldのblacklist IPファイル
    • クラウドドライブの設定 
    • WAFの設定エクスポート
    • 各種設定ファイルをとりあえずまとめてバックアップ /etc, /var
    • pythonの必要パッケージをバックアップ pip freeze > requirements.txt
    • pythonのバージョン:3.6.8
    • ラズパイにクラウドドライブをマウント
  10. VPSのOS(AlmaLinux9->AlmaLinux8)を新規インストール
  11. 環境構築
    • ssh設定(rootログイン禁止、ユーザ作成、公開鍵暗号)
    • Apache設定
    • クラウドドライブのマウント[※2、※3]
    • phpの設定[※4]
    • pythonの各種ライブラリインストール(日替わり通信術関係)[※5]
    • ドメイン設定(何もする必要がなかった)
    • 常時SSL化
    • メールサーバ設定(postfix)
    • CGI許可設定(httpd.conf)
    • chrome、WebDriverのインストール、設定
  12. バックアップファイルのリストア[※6]
  13. 新環境の動作確認。問題あれば対策
  14. 動作OKならcronの設定
  15. バックアップ環境のラズパイのcronを停止

【バックアップ環境の構築で困ったこと】

※1 Chrome WebDriverでちょっと苦戦。chrome-driver-binnaryが入らず。コメントアウトして、seleniumのバージョン相違を反映してfind_element_by_idを見直したらOKになった。

【OS移行後に困った・漏れていたこと】

OSの再インストールは、さくらVPSの公式スタートアップスクリプトを適用することである程度のところまでは自動でセットアップしてくれるので、そこは便利。sshの公開鍵方式のログインとかは、管理画面に公開鍵を登録しておくことで最初から使えるので、危険なパスワードログインは使わずに済む

※2 AlmaLinux9を選択して再インストールしたのは良かったんだけど、早速トラブル。いろいろとバックアップデータを置いているクラウドドライブ(InfiniCloud(旧TeraCloud))をマウントするためのdavfs2がインストールできない。検索してもどうやらまだAlumaLinux9(RHEL9系)に対応していないみたい(そもそもネット上に情報がほとんどない)。自分でソースからコンパイルしてやればどうにかなるのかもしれないけれど、こっちはとにかく環境復旧を優先したいので、他のモジュールについても同様のことがあっていちいち詰まるのも困るし、EOLまでの期間は短くなってしまう(2029年まで)けれど、枯れているであろうAlmaLinux8を再度インストール。9系はWebDAVに対応するまではお預けかな。

※3 正確にはクラウドドライブではないけれど、以前はさくらレンタルサーバのストレージ(さくらポケット)を、curlFtpFsというツールでマウントして使っていた。しかし、AlmaLinux8(RHEL8系)ではインストールできないみたい。WebDAVもダメ、curlFtpFsもダメとなると、9系のOSではクラウドドライブのマウントってどうやるのがスタンダードなんだろう?

※4 Apacheの設定もphpのインストールも簡単だったけれど、肝心の自分アプリが動かない問題に遭遇。500エラーだったので、.htaccessがらみかと思っていろいろ試したけれどダメ。最終的にはphp-fpmのログを確認したら、以前は普通に動いていたところがsyntax errorになっていて、これはphpのバージョンが古いせいでは、と思ってphpをアップデートしたら無事に解決。

※5 日替わり通信術練習関係では、やはりMeCabのインストールで一苦労。下記のサイトなどを参考に、サンプルは動くようになったものの、pythonスクリプト中のMeCab.Tagger("-Oyomi")がエラーになる。結局この行を書き換えて、辞書のパスを指定するようにして動くようになった。

m = MeCab.Tagger('-r /etc/mecabrc -d /usr/lib64/mecab/dic/mecab-ipadic-neologd -u /home/ユーザ名/user.dic -Oyomi')

AlmaLinux8上でMeCab+NEologdで辞書を作成してPythonから呼び出す

PythonでMeCabを使う際のメモ2

※6 WAF(SiteGuard Server Edition)は、CentOS7とAlmaLinux8でインストールしたバージョンが違っていて、せっかくエクスポートした設定ファイルが新環境で読み込めなかった。また一からカスタムシグネチャなどを再設定。

≫ 続きを読む

パソコン・インターネット   2024/07/27   gena

Webアプリ日替わり通信術(公開後3年)

Webアプリ日替わり通信術練習(モールス受信)を公開して3年になる。

公開後2年半のタイミングで実施された2023年9月期の一総通試験では、過去最多5名のアプリ利用者の方より合格(通信術の科目合格含む)のご報告を頂くことができた。

2024年の3月期はお一人から合格のご報告とともにドネーションを頂いた(ありがとうございます!)。X(旧Twitter)上の検索では合格のポストはヒットせず。すべての受験者がネットで情報を取得・発信しているわけではないし、ネット利用者でもXを使っていない方も多いとは思うけれど、それにしても今期は少ない気がする。利用者自体はアクセスログベースの集計だと昨年度よりも増えていて、1日あたり60〜80名ほど。

higawari2024.jpg

この1年で新たな機能追加としては、和文pdfファイルの表示とダウンロード機能くらいかな。ほとんどの利用者には不要な機能と思うので使っているユーザは少ないと思う。また、この機能はVPSのChromeに依存しているので、アップデートしたりすると不具合が出てけっこう面倒。

機能追加ではないけれど、2024年3月期の試験後にアプリを置いているさくらレンタルサーバを新ハードに移行した。グローバルIPが変わるということで多少混乱があるかな、と思ったけれど、意外となんともない感じ。レスポンスも向上していると思うけれど、元々軽いページなのでそれほど変化は感じないかも。課題としては古いphpバージョンをそのままにしているので、これをアップデートしたいけれど、事前検証をしないと怖いので躊躇している。

あとは何度も同じ問題が出て飽きないように、本文プールの拡充は少しずつ進めている。和文は青空文庫を使うことが多かったけれど、最近は生成AI(Chat-GPT)を使うことも増えた。プロンプトがなかなか難しいし、無加工ではやっぱり問題には使えないので、一手間かかる感じ。

ブログなどで逐次書いてきた開発の経緯から実装の技術的内容、および公開後の反響までをまとめた記事をplus TK2sさんの同人誌に寄稿。興味のある方は通販や電子版の販売もありますのでどうぞ。

無償公開とはいえ(ポジティブな)反響があるとそれなりにモチベーションにはつながるわけで、あまりにも反響が薄いと「あまり役に立っていないのかな?」と不安になる。ありがたいことに数年分のサーバ維持費に相当するドネーションを頂いているので、このまま公開を続けていこうと思う。

現状でもすでに2年半分の過去の日替わり問題の蓄積があるので、日替わり更新をやめたとしてもあまり問題ないとは思うけれど。逆にその日の問題はタイトル通り日替わりの一期一会だった当時の仕様と比べて、「いつでも練習できるから今日やらなくてもいいや」という甘えが合格者数の減少につながっているとしたら...。

≫ 続きを読む

アマチュア無線   2024/04/29   gena

さくらのVPSその後(1年経過)

さくらのVPSは契約後1年になる。基本的に3か月経過の頃からは大きな変更はなく、安定稼働中。なんとなく東京のサーバを選んでしまったけれど、延々とランニングコストがかかるものなので、ちょっとでも安い石狩にすれば良かったかも。

Evernoteの有料プランを解約した代わりに、自作のWebアプリで日記とメモ(ブログ原稿や備忘録)を運用している。こちらも意外とトラブルもなく使えていて、Evernoteの時のアプリの使いづらさとか同期の不安定さとは無縁でむしろ便利。裏で動いているソフトがすべて自作で中身がわかっているので、いざとなればsshでアクセスすればなんとでもなる。

グローバルIPを持つサーバなのでセキュリティには気を遣うけれど、fail2banで1度でもbanされたIPはiptablesで永久出入り禁止としているし、悪質なドメイン(同じサブネットから何度もアタックしてくる)についてはサブネットごと永久banしている。それでも毎日数十件の不正アクセスの試みは続いているけれど、基本的にsshのパスワードログインを禁止していることで、重大な問題はほぼ生じないと思われる。WebのDoS攻撃やCMSの管理画面を狙った攻撃はWAFで防げていると思う。

このまま安定稼働を維持したいけれど、心配はCentOS7のサポートが2024年6月で終了してしまうこと。今のところさくらのVPSのサイトではCentOS7が標準OSのままで、後継や移行方法についてのアナウンスがない。最悪はサポート終了のタイミングで、データをバックアップした上でその時に標準になっているOSをクリーンインストールしてしまうことだと思うけど、上記の日記アプリや日替わり通信術練習などのアプリをまた新環境で動くように手当するのがちょっと面倒だなぁ。連続稼働を止めるわけにはいかないので、移行の際は一度別なサーバを借りて無料期間で環境構築とアプリの稼働を確認してから本番サーバの入れ替えかな。

日替わり通信術練習のアプリ利用者の方から、一総通合格の報告や、ありがたいことにドネーションまで頂いてしまったので、これから受験する方のためにもできるだけ安定稼働で維持していきたい。

≫ 続きを読む

パソコン・インターネット   2023/10/15   gena
タグ:JavaScript , VPS , PHP

VPSその後(3ヶ月経過)

さくらのVPSはその後もいろいろと手を入れたくなるところがあって、やっぱりレンタルサーバと比べると比較にならないほど手間がかかるけれど、その分面白い。

手塩にかけて育てた(設定した)サーバは愛着も出てきて、レジャーとしてかなりオススメ。不正アクセスの試みも、siteGuardやfail2banが防いでいるログを眺めては、ふふふ、そんな攻撃で防壁が破れると思っているのか?とか楽しんで見ている。

TeraCLOUDの無料ストレージをマウントして使っていて、ふと、同じようにさくらレンタルサーバライトのストレージもマウントできないのかな、と思って調べてみたところ、FTPをマウントできる方法があったので試してみた。

【参考サイト】

CurlFtpFSは動作してレンタルサーバをbashからストレージとして見られるようになった。イメージのバックアップはかなり時間がかかるけれど、cron_dailyに放り込んでおけば夜中に勝手に終わっているのでまあこれでも良いかも。容量見合いで古いバックアップは自動削除するようにしておく。Tipsとしては、mondoarchiveの"-E"オプションで除外フォルダを設定するときは、-E "/backup1|/backup2"のようにパイプで区切ること。スペースだと無視される。

イメージバックアップはもしものときの備えで、実際にリカバリできるかは試していないので不明。それよりも操作ミスとかでデータが消える方が怖いので、データのバックアップはしつこいくらいに取っている。自作のスクリプトはGithubのプライベートリポジトリに、日記・ブログ記事のデータはrsyncで上記TeraCLOUDに30分毎に同期させている。

どこからでもアクセスできて好きなようにいじることのできるサーバの特性を活かして、Evernote(やその他クラウドで同期するメモ帳的なもの)に頼らない日記とメモのWebアプリを作った。Webアプリと言っても完全に自分専用のもので公開するつもりはない(パスワードで保護している)。このアプリは正直使えるようになるまでに半年単位で時間がかかると覚悟していたんだけど、意外とあっさり動いてくれた。PHPとJavascriptのハイブリッド。

cfvmemo.jpg

今はEvernoteはバックアップで補助的に使うだけになってしまった。もう少し様子を見て問題なければ有料プラン(3,100円/年)は解約しても良いくらいかも。...なんて書いたらEvernote有料プランの値上げ(3,100円→4,500円/年)の通知がきたので、サクっと解約。これで差し引き年間5,000円ほどでVPSが維持できる。

不正アクセスの試みはsiteGuardとfail2banで防げているし、自分アプリも一応完成してしまったので、契約後2ヶ月を経過したあたりで安定稼働を維持するモードになってしまった。次の課題を何か考えたいところ。

≫ 続きを読む

パソコン・インターネット   2022/12/02   gena
タグ:JavaScript , 日記 , VPS , PHP