PC設定覚書と雑記
<ご注意下さい!>
以下の方法は、ver 3.1.10 までのものです。ver 3.2.0 からは、uploadディレクトリの場所が変更されたようです。実験して検証が済みましたら、訂正記事を載せたいと思います。
さて、本題の、Netcommons3サイトのバックアップ・リストアがどうやって成功したか、についてです。
繰り返しになりますが、以下の⑥までは以前と同じ内容です。また⑥までがNetcommons2の時と同じやり方です。
① サイトを閲覧不可にする、又はwebサーバーを停止してから、旧DB3 *** のダンプファイル △△△.sql 作成。
# mysqldump -u root -p *** > △△△.sql (mysql の root パスワード聞かれるので入力)
② files ディレクトリ( app / webroot / files )取得。アーカイブして持ってくる。
③ 新環境に新DB3 ○○○ を作成する。
mysql > create database ○○○ default character set utf8;
mysql> grant all privileges on ○○○ to ユーザー名@localhost identified by 'パスワード';
その後、 prefix のみ旧サイトと同じにして、nc3を新規インストール。
④ インストール完了したら、mysql にログインして、③の新DB3をいったん削除。
mysql > drop database ○○○;
⑤ 再度、③と同様にして新DB3○○○ 作成。作成後、旧DB3ダンプファイルインポート。
mysql > create database ○○○ default character set utf8;
mysql > use ○○○;
mysql > set names utf8;
mysql > source / home / bk / △△△.sql; (/ home / bk に dumpファイルがある場合)
⑥ app / webroot / files ディレクトリを②の解凍ディレクトリと置き換える。
⑦ 旧サイトの app / Config / application.yml ファイルを、新サイトに上書きする。
以上の方法で、上手くいきます!!
上手くいったのは、もちろん、天野さんからのアドバイスのおかげなんです!
application.yml を上書きしないと、アカウント関係の情報が引っ越し前と違ってしまうので、ログインできない状況になってしまう、と教えていただきました。
そして、新サイトで出来たDB情報を、引っ越し前環境で出来たDB情報に上書きするのはおかしい、ということなんだと思います。なので、旧サイトの database.php で上書きしてはいけません。自分は上書きしてみた後、このファイル内のDB情報を編集してみたりしましたが、エラーは直らずダメでした。
今年のユーザカンファレンスの資料にあった、 「database.php が大事なファイル」というのは、「prefix 情報の確認のために database.php が大事なファイル」という意味で、上書きしなさいということではないのだろうと判断しました。
以上の貴重な情報は、すべて天野さんからのアドバイスによるものです!
前回お世話になったので、あつかましくもまたメールで助けを求めてしまいました。
やはり、自分のスキルにあった適切なアドバイスをいただき、本当に感謝しています!
天野さん、有難うございました!!
重ねて御礼申し上げます。
最後に、天野さんが注力されている「nc3+ NetCommons3 をより便利に」というプロジェクトについて、ぜひ書いておきたいと思います。
Netcommons3関係のプラグイン、pluguin開発の要望引き受け、Netcommons3レンタル、などの開発をしているとのことで、自分もとても興味が湧きました!
特に、Netcommons3のテーマも開発中とのことで、武骨なデザインのNetcommonsがカッコ良くなるのでは? と自分も期待しているんです!
Netcommons3のバックアップ・リストアのプラグインも、間もなく発表となっています!!
この天野さんのプロジェクトのHPは、以下のリンクからたどってみて下さい。nc3で出来ているのにカッコいいんですよ!
Netcommons(nc)3サイトのバックアップ・リストア(サーバー引っ越しの時必要!)の正しい方法をアドバイスして下さったのは、株式会社RYUSの代表、天野龍司さんという方です。
天野さんは、Netcommons3のコアプログラムの開発を行っており、また自社で「nc3+ NetCommons3 をより便利に」というNetcommons3プラグイン、テーマその他の開発も行っていらっしゃるエンジニアなんです!
実は、昨年、nc2をnc3に移行しようと奮闘していて上手くいかなくて悩んでいる時に、天野さんのブログを発見したんです。
そのブログの中で
「移行ツールでうまく移行できないような特殊ケースとかNetCommons2用に開発したプラグインをNetCommons3に移植したいようなケースがありましたらご相談ください^^;」
とありましたので、こちらは企業でもないのに相談にのってくれるだろうか、と思いながらメールしたんです。
その時、意外にも、こちらのスキルを推し量りながら適切なアドバイスを下さり、とても感激したんです!
結局、その時は、自分にはまだ無理な面があり、移行は成功したのか不明だったのですが、今年の夏に再度移行に挑戦した訳なんです。
nc2→nc3移行にあたりnc2側の準備について、開発元のページには次のように記してあります。
「現状NC2のDB及びNC2のアップロードファイルを取得して、NC3と同じ環境にDBインポート及びファイル配置をしてください。」
ここまでは何とかできたものの、この後移行ツールを実行すると、エラーが出て上手くいきません。
この時、自分はnc2のDB、nc3のDBのログイン情報は違った状態でやっていました。nc2のDBのログイン情報がないとDBに接続できないはずなのに、この情報をどこから引っぱってきているんだろう? と、素人の自分でもさすがに感じていました。
この時の天野さんのアドバイスは、「NC3のDB接続につかってるアカウントでNC2DBにも接続できるようにすると解決するかなと思います。」というものでした。
そうか! nc3のDBをnc2DBの接続アカウントと同じにして作らないとダメなんだ!と、やっと分かりました!
目の前が開けたような感じでした!
これは専門家には当たり前のことで「NC3と同じ環境にDBインポート」という文に含まれている内容だ、ということなんでしょうね。
このあと、移行ツールは走るようになりましたが、成功しているのか、失敗している部分があるのか確かめる手段も分からず、まとまった時間がないと実験も出来ないので放置してありました。
そしてこの夏、まず、方法、手順、アドバイスをおさらいし直して、徹夜したりしながら、何とかnc3に移行出来たのかな、というところまで来れました!(このサイトは移行して出来たものです)
天野さんからのDB接続についてのアドバイスがなければ、今もnc2からnc3への移行は出来ていなかったと思います。
素人相手に適切なアドバイスを下さった天野さんに、本当に感謝しています!!
さて、本題に戻ります。
サーバー引っ越しの時などに必須の作業、nc3サイトのバックアップ・リストアははたして出来るのでしょうか?
2018年のユーザカンファレンスの「バックアップ」に関する資料に、「大事なファイル3点」という項目を発見!
このファイル、ディレクトリ、3つをインストールしたての新規NC3に上書きすれば、いけるに違いない!
と思い、早速やってみました。
引っ越し前の上記すべてのファイルをtarファイルにして、また、引っ越し前mysqlのデータベースはdumpファイルにして、testサーバー機に移動させました。
そして、testサーバーに作成した新規NC3に、ファイル上書き、DBインポートを行いました。
その結果は、残念ながら、アウト!
前回、app / Config フォルダをコピーした時と同じ結果でした・・・
「内部エラーが発生しました」が出てしまいます。
ディレクトリのオーナー、パーミッションも確認しましたが、ダメでした。
もうお手上げです・・・
「ディレクトリ丸ごと移動」という最後の手段があるからいいのかな、とも思いました。
「ファイル全部でもOK」と上記の資料にもありますしね。
ただ、今回、NC2をNC3に移行した時は、同一サーバー(debian8)内で行ったんです。
よって、出来たNC3サイトは php5.6 環境で install したものです。
このNC3サイトを、php7.0(debian9)環境にそのままコピーしてもいいのか? 何とか動いているように見えるだけで良くないんじゃないか? という気もするんです。
この手詰まりの時に、救いの一手を差し伸べて下さったエンジニアがいらっしゃったんです!
NC2と同様の方法でバックアップ・リストアを試したら、ログインが出来なくて失敗に終わった、と前回書きました。
しばらく、ない頭でずっと考えていたのですが、ちょっと思い当たる件をいくつか書いてみます。
① NC3ではログイン情報(id、パスワード)の扱い方がNC2とは変わっているのでは?
② ユーザのパスワードはそのままの値ではなく、何らかの規則で変換されているはず(以前DB内のid、パスワード、を表示させてみたら、idはそのままの値、パスワードは意味不明の長い文字列だった)
③ 職場では、NC2による個人情報を入力してもらうような受け付け方法を禁止する通達が来た。この件が示しているように、NC2では現状のセキュリティレベルを満たさなくなっているのではないか?
④ よって、NC3では、ログイン情報、その他の個人情報の扱い方は、NC2より進化して改良されていると考えられる。(当然か)
この④の件について、何か分かれば前進するかもしれません・・・
実は、Netcommons3に移行しても、未解決の大問題が残っています。
それは、Netcommons3サイトの引っ越し(リストア)の正しい方法がまだ分からないということです。
これが出来なければ、ハードディスクの交換やサーバーの新調もあるでしょうから、運用はいずれストップしてしまいます。
Netcommns2で用意されていたバックアップ機能が、新Netcommns3にはまだ搭載されていません。(2018.8.21現在)
そこで、Netcommns2の時と同じようにやれば出来るだろうと思い、実験をしておきました。その方法は・・・
① 旧DB3のダンプファイル △△△.sql 作成。
② fileuploadディレクトリ( app / webroot / files / upload_file)取得。圧縮して持ってきました。
③ 新環境に新DB3作成(prefixのみ旧サイトと同一に)してnc3を新規インストール。
④ インストール完了したら、③の新DB3をいったん削除。
⑤ 再度③と同様にして新DB3作成 → mysqlコマンドで、use 新DB; → source /○○○/○○○/△△△.sql; で旧DB3インポート。
⑥ app / webroot / files / upload_file ディレクトリを②の解凍ディレクトリと置き換える。
これで、ブラウザからアクセスして、トップページが見えました!
出来た! と大喜び。
これで行ける、と検証せずに終わらせちゃっていたんです・・・
今回、nc2サイトをnc3サイトに移行出来たので、ハードウェアも新調して、新サーバーに引っ越ししようと、再度このリストア法を使ってみました。
作業完了してトップページが見えました!
ところが・・・!!
何と、ログインが出来ない!! ん、パスワード間違えたか? いや・・・何かおかしい・・・
「パスワードがわからない方はこちら」のリンクも表示されません。
何度確認してもダメでした。
そうだ、旧Configディレクトリを上書きしてみよう。
エラーが出てダメでした・・・ この方法では何か足りないんでしょう。
以前、DBテーブル内のパスワードデータを確かめようとしたことがあるんですが、ID等と違って、暗号化された(?)文字列でした。この暗号化データを復号させるしくみがどこかにあるのかな?とか。
で、最終的にどう引っ越しさせたのか?
nc2サイトを移行したばかりのnc3ディレクトリを丸ごと持って来たんです・・・!
DBは、ダンプファイルにして、新DBにインポートしました。
今の自分にはこれしか手がなかったんです。
このサイトもこのやり方で出来ているんですが、今のところ不具合はありません。(と言っても、まだ1週間も経っていませんが・・・)
nc3サイトの正しいバックアップ、リストアの方法を教えて下さる方、どうかよろしくお願い致します!!
そして、Netcommons3にもこの仕組みが組み込まれますよう、熱望しています!!
<追記>
2018.9.13現在、Netcommons 3.1.10 までの対応ですが、このページをご覧ください。
この夏に、Netcommons3への移行作業に手を出してしまい、結局、かなりの日数を費やしてしまいました。
Netcommons2サイト運用で問題はなく、Netcommons3自体が完成までもう少しではないのか?という感じもあったので、迷ったのですが、夏休みでないと、移行作業のためのまとまった時間が取れないということもあり、移行を決心しました。
同一webサーバー内での移行手順を記しておきます。nc2サイトは動かしたままで出来ますが、閲覧停止状態にしておいて下さい。
① nc3用DB3作成。この時、user、passwordを、旧nc2のDB2のuser、passwordと同じにして作成。DB名は同じでなくて良い。(この場合、同じにはできませんが)
② 別のヴァーチャルホストを作成し、別ドキュメントルートにnc3ファイルを展開しnc3をインストールする。DB3のprefixはDB2とは別にする。
③ インストールが終了したら、サーバーOSにログインし、インストールディレクトリ / app に移動。カレントディレクトリを移動せずに、フルパス指定で実行するとcakeがうまく動かない。
④ # ./Console/cake Nc2ToNc3 --database NC2のDB名 --prefix NC2のテーブルプレフィックス名 --upload_path NC2のアップロードファイルフォルダーパス --base_url NC2のベースURL --nc3base NC3のベースパス
を入力してEnter(実行)。
実行文の例を参考にして下さい。また、このページのやり取りも参考になりました。上記「NC3のベースパス」は自分の場合は、ヴァーチャルホストのドキュメントルートにnc3ファイルを展開したので、「/」としました。
⑤ 実行経過が順次示されていくので観察する。実行が最後まで進んでも、エラーが出ると完成サイトにアクセスできない等のトラブルが起こることがある。(かなり長い時間がかかる。自分の場合は20分以上!)
⑥ 完成サイトにアクセスして、トップページのお知らせモジュールを削除、phpメモリ設定、送信メール設定等を行う。失敗していたら、DB3削除、nc3インストールディレクトリ削除して、最初からやり直し。
⑦ 旧urlでアクセスしたいのなら、/app/config/application.yml の fullBaseUrl:を旧urlに書き直す。
⑧ 各フォルダのパーミッションを確認して設定しておく。このページの、インストール後のパーミッション参照。
⑨ 新ヴァーチャルホストの、servername、ドキュメントルートパス等の記述を書き換え、設定を読み込む。またnc2サイトのヴァーチャルホスト設定は無効にする。その後apache再起動。
以上ですが、恥ずかしいことに、最初は全く分からず、cakeを別にinstallしなければいけないのか(実際は不要)、とか、上記DB2、DB3のアクセス情報が同一でなかった(これではツール動かない)、とか手探りの状況でした。
もちろん、「Netcommons問い合わせ」にメールで質問はしたのですが、どうもNetcommons開発母体が有償サポートの方針のようなんです。
多様なニーズ、セキュリティ面など、今後のアプリケーション開発はますます大変になっていくだろうと思われます。当然、開発費用もかなり必要になってくるでしょう。ということで、利用に際してある面では有償になるということは、止むを得ないのでしょうか。
こちらは、全くの無料で使わせていただいているので、やはり文句は言えないのかな、と考え直した次第です。
実は、そんな中で、貴重なアドバイスを下さったエンジニアの方もいらっしゃったんです!
Netcommons3開発者の一人である天野さんという方です。
この方のアドバイスを「NC3サイトのバックアップリストアについて(3~5)」に記しましたので、是非読んで下さい!
さて、自分のサーバーでは、Netcommons2サイトを3つ公開していました。
上記の方法で2つのサイトは何とか移行できましたが、残り1つがどうしても上手くいきませんでした。
移行ツールは途中エラーが出ながらも最後まで走るんですが、完成サイトにアクセスすると「不正なリクエストの可能性があります」と表示され、さらに無限ループの応答になり、失敗します。
エラーを見ると、Undefined index : room_id、Undefined index : user_id が出ています。さらに、移行できないphotoalbum dataがある、というような内容でした。
nc2サイトに戻り、まず退会したユーザを削除して、再度移行を試しましたが失敗。
そこで、今までのnc2サイトでの運用をたどってみて、ある利用者Nさんの管理者権限をユーザ権限に変更したことを思い出しました。photoalbumもNさんの作成だったんです。
で、nc2サイトのNさんの権限を再度、管理者権限に戻し、移行をやり直しましたが、結果は変わらずで失敗。
結局、Nさんの作った photoalbum を削除して、やっと移行が成功しました!(ここまで1週間近くかかりました)
Nさんが管理者の時に作っていた photoalbum と 画像データは、Nさんをユーザ権限に変更した時点でnc2内での扱いがおかしくなっていたのでは? と想像しています。
ユーザ権限では、photoalbum を作ったり編集したりできない訳ですから。
まあ、とにかく、ここまででやっと何とかなったようなんですが、この後手を出した件で再び泥沼にはまることに・・・
netcommons2 から 3 にアップデートするには、アップデートパッチを当てるとかではなく、移行ツールなるものを使わないとダメなんです。(システムが全く別物になっている)
ところが、この移行ツールがまだ見当たりません。
今年の 8月のユーザーカンファレンスのプログラムには、「移行ツールの使い方」が公表されているので、この夏に出るのかもしれません。
このサイトも、移行ツールで netcommons3 にリニューアルする予定です。
新しくしたい最大の理由ですが、OS の php がほとんど ver7 になってきているのに、netcommons2 は php7 では動かないんです。( debian9 も php7 )
netcommons2 が php7 対応になってくれればいいんですが、どうもそれはやってくれなさそうです。
また、owncloud も php7 で動かした方がパフォーマンス等良くなるでしょう。
ということで、nc3 への移行ツールを心待ちにしているところです。
でも不安が・・・
簡単に、すべての内容が移行できるのか?
また、超長~い時間ハマって苦しむんじゃないかなあ・・・
マザーボードは、Asrock社の J3710M(Pentium J3710オンボード)です。
前回 Celeron 847 からの比較では、TDP 17W → 6.5W、クロック 1.1GHz → 1.6GHz(ターボ 2.6GHz)、コア数 2 → 4 で、省電力化しているのに、基本性能は向上しているのが嬉しいところ。
しかもSOCなので、チップセット込みで 6.5W なんです!
キャッシュは 2 MB と変わらずですが、コア数 2 倍になっているので 1 コアあたりは減少していますね。
送料手数料込みで 9,970円でした。
RAID 1 にする HDD は、WD 社の Red 2TB 2台としました。
メモリーはDDR3-8GB × 2がそのまま流用できました。この板でもデュアルチャンネル動作はOKでした。
電源ですが、今年 4月に壊れて新調したばかりなので、これも流用しました。(Corsair RM550x)
デバイスが省電力なので、BIOSはパフォーマンス優先設定としました。
試しに、Ubuntu16、Ubuntu14、Debian8、をインストールしてみましたが、なぜか最新の Ubuntu16 は立ち上がりがかなり遅かったような気がします。何かしらの新しい機能追加でしょうか?(メーカー発表の対応OSには Ubuntu16 、Debian8 は載っていないのですが)
ハードウェアより OS が若干新しい程度ですから、デバイスの認識に難があったとは思えません。
使いたい netcommons2 は、php7 非対応なので Ubuntu16 はダメ。
で、最初から身軽な debian がやはりいいだろうということで、debian8_64bit版に決定しました。
apache、phpのキャッシュ方法、mysqlの最適化をちょっと勉強して設定してみました。
webサーバーの動作は、以前よりキビキビしているようですし、今のところ順調に動いています!
自宅にある数代のWin7機に、Win10へのアップグレードの通知が頻繁に来ていました。
ずっと無視していたら、カミさんに貸していたデスクトップPCがupdateでつけっ放しにしていたところ、やられました! (皆さんもやられたと思いますが!)
次の日に、何か変だから見てくれる?と言われ、確認したらWin10にされちゃっていました。
ところが、起動やソフトの動きは、ほぼ速くなっているようで、
この新しいカーネルはいいんじゃない? と簡単に、自分もWindows10に寝返ることにしちゃいました!
ただIE11は頻繁にフリーズするようになってしまい、MS Edge、Chrome等も併用してしのいでいます。
プリンタも含めたデバイスの認識や、常用しているソフトの動きに問題がなければWin10にしてしまった方がいいと思います。
実は、アップデートではなく、クリーンインストールする方法も見つけたので、
DAWマシン、ラジオサーバーはその方法で作成しました。
(これは2016年6月の記録です)
WebServerマシンのOS入れ替え作業を行いました。
まず、3つのwebサイト本体のバックアップ、
ヴァーチャルホストの設定ファイル、DDNSへの通知スクリプトファイルも忘れないようバックアップ。
次は、ルーターのIPマスカレード設定を無効にして、外部からアクセスを受けないようにします。
そして、マシン内部の掃除、異常がないか、目視点検です。
電源、マザーボード、HDD等、温度異常もありませんでした。
HDDをまっさらにする前に、もう一度忘れている作業がないか、一息考えます。
では、いよいよOSの再インストールから始めます!
OSはDebianの最新版、Jessie64bit版を使います。
webサイトが正常にリストア出来るか、LAN内でですがテストはしておきました。
クライアントのWindowsマシンで、netinst.isoファイルをダウンロードし、フリーソフunetbootinでインストール用USBメモリを作っておきます。
CDRでインストールディスクを作るより、手軽で確実で早いです!
CDドライブはwebサーバー運用中は不要ですから、尚更です。USBメモリインストールで決まりでしょう。
USBメモリは高速タイプがいいです。今回64GBメモリはうまくいかず、4GBメモリを使いました。
HDDは、3.5インチ2TBを2台ソフトウェアRAID1とし、パーテイションは2つに分けました。
OSインストールは最小構成です。デスクトップ、GUIはもちろん、基本的なユーティリティも入れません。
apache、mysqlも最初にはインストールしません。aptでowncloudをインストールする際に、依存関係も含めて、またphp等必要なものも一緒にインストールしてくれるからです。
作業手順ですが、
OSインストール → OSアップデート → rootログイン禁止 → ユーザsudo設定 → サーバーリモートログオン設定 →ファイヤウォール設定 → 必要なrepository設定 → 再度OSアップデート → owncloudインストール → owncloud設定 → netcommonsインストール → netcommonsリストア(作業手順はこちら) → ルーターIPマスカレード設定 → 動作確認
こんな感じで進めていきます。
今回も、結局徹夜の作業となってしまいましたが、何とか完了しました!