PC設定覚書と雑記

サーバー運用とPC日記

このサイトを Connect-CMS へ移行する前にやっておくべきこと

 昨日、NetCommons3 の update 作業を行いましたが、

「NetCommons3 の配布は、2025年3月までで終了する」と発表されていることは以前書きました。

NetCommons3サイトは、

オープンソース・ワークショップ社の Connect-CMS サイトに移行出来そうなんです。

サーバーに Connect-CMS をインストールして、ここに現サイトの情報をインポートする流れです。

今、色々と情報を集めているところなんですが、

まずは自分の webサーバーに、試しに Connect-CMS をインストールしてみようと思っています。

 

git コマンドで github からソースをクローンし、

php ライブラリを composer でダウンロードしてくるように書かれていました。

これは自分には未経験の作業なので、不安と期待が入り混じった気分です!

3~4日くらいまとまった日にちが取れた時にやってみたいと思います!

 

 

Debian に Connect-CMS をインストールしてみる

※ MariaDBでデータベース作成は済ませておく。

 

①install ディレクトリ作成

 # mkdir -p /var/www/test

  

②GitHubからソースをクローン、安定版へ切り替え

 # cd /var/www/test

 # git clone https://github.com/opensource-workshop/connect-cms.git

 # cd /var/www/test/connect-cms

 # git checkout $(git describe --tags --abbrev=0)

 

③composerをインストールし、利用ライブラリをダウンロード

 # php -d allow_url_fopen=1 -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

 # php -r "if (hash_file('SHA384', 'composer-setup.php') === 'ハッシュ値は、https://getcomposer.org/download/を参照') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

 # php -d allow_url_fopen=1 composer-setup.php

 # php -r "unlink('composer-setup.php');"

 

 # php -d allow_url_fopen=1 composer.phar install --no-dev

 

④apache conf設定

 DocumentRoot /var/www/test/connect-cms/public

 

 <Directory "/var/www/test/connect-cms/public">

     AllowOverride All

     Require all granted

 </Directory>

 

⑤.envファイル作成(Laravel)

 # cd /var/www/test/connect-cms/

 # cp .env.example .env

 

⑥.envファイル編集

 APP_NAME="Connect-CMS"

 APP_ENV=production

 APP_KEY=               ←適当な文字列を入力、ダブルクオートで囲まない

 APP_DEBUG=false

 APP_URL=https://xxx.mydns.jp/ (DNS設定、ssl設定は済ませておく)

 

 LOG_CHANNEL=daily

 

 DB_CONNECTION=mysql

 DB_HOST=127.0.0.1      localhostに変更

 DB_PORT=3306

 DB_DATABASE=          ←DB名

 DB_USERNAME=            ←DBユーザ名

 DB_PASSWORD=            ←Dパスワード名

 

⑦アプリケーションキーの初期化

 # php artisan key:generate

 **************************************

 *     Application In Production!     *

 **************************************

  Do you really wish to run this command? (yes/no) [no]:

  > yes        ← yes を入力

 

⑧DBマイグレーション

 # php artisan migrate

 **************************************

 *     Application In Production!     *

 **************************************

  Do you really wish to run this command? (yes/no) [no]:

  > yes        ← yes を入力

 

⑨seederで初期データインポート

 # php artisan db:seed

 **************************************

 *     Application In Production!     *

 **************************************

 Do you really wish to run this command? (yes/no) [no]:

  > yes        ← yes を入力

 

⑩ディレクトリパーミッション、他の設定

 # cd /var/www/test/connect-cms/

 

 # chown -R www-data:www-data storage

 # chown -R www-data:www-data bootstrap/cache

 # chown -R www-data:www-data vendor/tecnickcom/tcpdf/fonts

 # chown -R www-data:www-data public/themes/Users

 

 # chmod -R u+wr storage

 # chmod -R u+wr bootstrap/cache

 # chmod -R u+wr vendor/tecnickcom/tcpdf/fonts

 # chmod -R u+wr public/themes/Users

 

⑪完成サイト初期アカウント

 user:admin

 pwd :C-admin

 

現NC3サイトをConnect-CMSへ移行準備 勉強中(1)

 現NC3サイトをConnect-CMSへ移行しなければなりませんが、移行の猶予はまだ1年あります。

Connect-CMSの試験installは何とか出来て、

また、Connect-CMSサイトのバックアップ、リストアの方法も教えていただきました!

 

そして、Netcommonsサイトの移行方法について勉強中です。

 https://github.com/opensource-workshop/connect-cms/wiki/Migration-from-NC3

に記載の、

 

 .envファイル

# migration option (Common)
 MIGRATION_JOB_MONITOR=true
 MIGRATION_JOB_LOG=true
 MIGRATION_CONFIG_PATH=C:\connect-cms\_migration_config\migration_config_nc3.ini

# migration option (NetCommons3)
 NC3_DB_CONNECTION=mysql
 NC3_DB_HOST=127.0.0.1
 NC3_DB_PORT=3306
 NC3_DB_DATABASE=xxxxxx
 NC3_DB_USERNAME=xxxxxx
 NC3_DB_PASSWORD=xxxxxx
 NC3_DB_PREFIX=nc3_
 NC3_EXPORT_UPLOADS_PATH=/path_to_nc3/app/Uploads/
 NC3_APPLICATION_YML_PATH=/path_to_nc3/app/Config/application.yml

上記のように、.env に移行元のNC2 情報を設定する。

 

とあるのですが、ここで引っかかっています。

 

# migration option (Common)

中の 

 MIGRATION_CONFIG_PATH=C:\connect-cms\_migration_config\migration_config_nc3.ini

ですが、

MIGRATION_CONFIG_PATH= 以下の書き方は、Windows上での書き方?

これらの操作を全てLinuxサーバー上で行うのであれば、例えば、

 MIGRATION_CONFIG_PATH= /var/www/test/connect-cms/migration_config/migration_config_nc3.ini

でいいんでしょうか?

 

また、試験installしたconnect-cmsディレクトリ中には、migration_configディレクトリはありませんでした・・・

ということは、migrationのコマンドを実行した時に、ディレクトリが作られる?

 

ここら辺のことは、試験的に実際にコマンドを動かしてみながら勉強した方が良さそうです。

それでも上手くはいかないでしょうから、その時点でメール質問しようと思っています。

 

現NC3サイトをConnect-CMSへ移行準備 勉強中(2)

 .envファイル設定の

# migration option (Common)
 MIGRATION_JOB_MONITOR=true
 MIGRATION_JOB_LOG=true
 MIGRATION_CONFIG_PATH=C:\connect-cms\_migration_config\migration_config_nc3.ini

中の、

 PATH=C:\connect-cms\_migration_config\migration_config_nc3.ini

の記述で引っかかっていたんですが、

考えてみると、

webサイトはWAN上にあり、このサイトを動かしているwebサーバーに対するコマンド操作は、

SSHを使ったリモートアクセスによっていると思います。

このSSHコンソールは、手もとのクライアントにあり、

クライアントは一般的にはWindowsが多いと思われます。

また、移行準備の際に生成されるconfigファイル、サイト内のコンテンツ等の沢山のファイルも一時的な保管場所が必要になります。

この一時的な保管場所は、WAN上のサーバー内ではなく、手もとのクライアント内にしてある、ということではないでしょうか?

ということで、

 export した際に、storage\app\migration\import 以下にデータが作成される。

という記述も確認出来ました。

このパスも、クライアントのWindows上だと思われます。

 

以上のことより、このNC3からConnect-CMSへの移行手順は、

クライアントのWindows上のSSHターミナル(Teraterm等の)で操作をする前提で書いてあるのではないか?

現時点ではこのように考えています。

ちょっと自信はないのですが・・・

 

Webサーバーハードウェア更新

久しぶりにwebサーバーのハードウェアを入れ替えました。
マザーボードは、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サーバーの動作は、以前よりキビキビしているようですし、今のところ順調に動いています!

netcommons3 への移行ツール

netcommons もやっと ver3 が出て、提供元の netcommons3 関係のサイトも開設されました。
netcommons2 から 3 にアップデートするには、アップデートパッチを当てるとかではなく、移行ツールなるものを使わないとダメなんです。(システムが全く別物になっている)
ところが、この移行ツールがまだ見当たりません。
今年の 8月のユーザーカンファレンスのプログラムには、「移行ツールの使い方」が公表されているので、この夏に出るのかもしれません。
このサイトも、移行ツールで 
netcommons3 にリニューアルする予定です。
新しくしたい最大の理由ですが、OS の php がほとんど ver7 になってきているのに、netcommons2 は php7 では動かないんです。( debian9 も php7 )
netcommons2 が php7 対応になってくれればいいんですが、どうもそれはやってくれなさそうです。
また、owncloud も php7 で動かした方がパフォーマンス等良くなるでしょう。
ということで、nc3 への移行ツールを心待ちにしているところです。
でも不安が・・・
簡単に、すべての内容が移行できるのか?
また、超長~い時間ハマって苦しむんじゃないかなあ・・・ 

新調サーバー内のNetcommons3環境にNetcommons2サイトを移行しました

この夏に、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 を作ったり編集したりできない訳ですから。

 

まあ、とにかく、ここまででやっと何とかなったようなんですが、この後手を出した件で再び泥沼にはまることに・・・

Netcommons3サイトのバックアップリストアの正しい方法は?(1)

実は、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 までの対応ですが、このページをご覧ください。

NC3サイトのバックアップ・リストアについて(2)

NC2と同様の方法でバックアップ・リストアを試したら、ログインが出来なくて失敗に終わった、と前回書きました。

しばらく、ない頭でずっと考えていたのですが、ちょっと思い当たる件をいくつか書いてみます。

 ① NC3ではログイン情報(id、パスワード)の扱い方がNC2とは変わっているのでは?

 ② ユーザのパスワードはそのままの値ではなく、何らかの規則で変換されているはず(以前DB内のid、パスワード、を表示させてみたら、idはそのままの値、パスワードは意味不明の長い文字列だった)

 ③ 職場では、NC2による個人情報を入力してもらうような受け付け方法を禁止する通達が来た。この件が示しているように、NC2では現状のセキュリティレベルを満たさなくなっているのではないか?

 ④ よって、NC3では、ログイン情報、その他の個人情報の扱い方は、NC2より進化して改良されていると考えられる。(当然か)

 

この④の件について、何か分かれば前進するかもしれません・・・

 

NC3サイトのバックアップ・リストアについて(3)

 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)環境にそのままコピーしてもいいのか? 何とか動いているように見えるだけで良くないんじゃないか? という気もするんです。

この手詰まりの時に、救いの一手を差し伸べて下さったエンジニアがいらっしゃったんです!