Harmless Weblog

日記

さくら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

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

日記その後(25年経過)

1997年にパソコンで日記を書き始めてから25年経った。Webサイト(1998年から)とかブログ(2005年から)ではなく、プライベートな日記の話。25年分でプレーンテキスト16MBになった。UTF-8が3バイト/文字とすると単純計算で5,300,000文字。

もはや人生の50%以上の期間が検索可能な外部記憶として蓄積されている状態なので、逆に『前日記時代』の記憶の曖昧さがなんとも気持ちが悪い感じ。物心ついたころからSNSデビューしている若者たちは、どうぞ日記がわりに大切に保存しておくことをオススメする。

2011年頃からクラウドサービスのEvernote上で書くようになって、何年サービスが継続されるか気になっていたけれど、意外にも(失礼)10年以上維持されている。無料プランのサービスが劣化したり、有料サービスも安いプランが徐々に劣化しつつある感じはあるけれど、テキストの日記を書いたり、ブログの下書きをする程度なら今のところ支障はない。iOS、iPad OSアプリの動作がイマイチなのは相変わらずだけど、長期的には少しずつ改善されているとは思う。

Twitterを始めた2010年頃は、これで何をやったかをつぶやいて、ログを保存しておけばそのまま日記になるんじゃない?と思ってそれを意識してつぶやいた時期もあった。しかしやっぱりオープンでは書けない内容(仕事のこととか、家族のこととか)が多いし、リアルタイムにどこにいるかをつぶやくのはリスクがあるという認識が広まったことで、結局クローズな日記に書くしかないね、という結論になった。

Evernoteに依存せず、かつオンラインで読み書き可能なソリューションとして、レンタルサーバ上の記憶領域を使えば良いのでは、というのはたまに考える。さくらインターネットのサービスはさすがにまだ10年単位で安定して提供されるだろうし、最近ラズパイのシェルでnanoエディタ+Gitでソースコードを管理するようになったので、これを応用できないだろうか。

大前提として、今はさくらのライトプランでSSH接続できないので、これはスタンダード以上のプランを追加契約して必要ならWebサイトやメールアドレスを移行する必要がある。こんなことならせめて日替わり通信術練習のWebアプリ公開時にスタンダード契約にしておくんだった。

構想を思いつくままに書くと、

  • 1)パソコンやiPadで書くときは、SSHでログインしてnanoエディタで閲覧・編集。
  • 2)日記データは1ファイル/1ヶ月のプレーンテキストとする。
  • 3)シェルスクリプト+CRONで毎日0時にその日の日付を自動で追記。
  • 4)月替わりの処理もシェルスクリプトで自動化。
  • 5)日記フォルダをGit管理し、GitHub、NASに定期バックアップ。
  • 6)スマホではSSHは使いづらいので、Webで閲覧・編集するHTML/Javascriptを書く。

ひとまずこんな感じかな。とにかく前提のスタンダードプランへの移行が大変だけど、別に移行するのは長期的に取り組んで、まずは新規契約してSSHを使えるようにして遊んでみるのでも良いかも。あとはEvernoteからプレーンテキストとしてファイルをエクスポートするのがどの程度手間か。25年分、300個のファイルなので手作業ではやりたくない。

構想を書きながら俄然面白くなってきた。日替わり通信術の開発が落ち着いたので、次のプロジェクトとして楽しめそうな気がする。なんだかんだ言って、最後はプレーンテキスト(Ascii)形式が長期のデータ保存としては最強だと思う。

ただ、夏休み中に少し調べたところ、6)がJavascriptだと難しそう。閲覧はともかく、textareaで編集した日記データをサーバに保存する方法がないかも。こういう場合はPHPになるのかな。今どきならPythonだけど、ライトプランだといろいろ制約がありそう。この辺を調べるところから始めて、長期計画で進めたい感じ。日替わり通信術はかんなさんのために始めたプロジェクトだけど、日記アプリは完全に自分のためなので急ぐ必要もない。

参考リンク:過去の日記についての記事

≫ 続きを読む

ブログ   2022/09/02   gena
タグ:日記