KUSANAGI でNetCommons を使用してみよう

宮﨑悟

Azure上のKUSANAGI環境にNetCommons3をインストールする方法を丁寧に解説しています。NetCommonsは次世代の情報共有基盤システムであり、オープンソースソフトウェアです。本記事では、まずAzureでKUSANAGIを設定し、その上でNetCommonsをインストールする手順を詳しく説明。その際、安全な接続のための設定やIPアドレスの登録、NetCommonsのダウンロードから設定まで、一連の流れを具体的に示しています。言語はPHP5を用いることとの注意もあります。

今回はAzure上のKUSANAGIに、NetCommons3をインストールしてみます。

NetCommons とは

NetCommonsは次世代の情報共有基盤システムで、CMS/LMS/グループウェアを統合したコミュニティウェアです。NetCommons プロジェクトは、国立情報学研究所の次世代の情報共有基盤に関する研究開発プロジェクトです。NetCommonsは、Open Source Software(FreeBSDライセンス)として公開されています。プロジェクトは国立情報学研究所をはじめとした様々な公的補助を受けて運営されています。その開発には内外の研究者および技術者が参加しています。

Azure上でKUSANAGIインスタンスを上げる。

では、早速AzureでKUSANAGIを立てて試してみましょう。詳細は、KUSANAGI公式ドキュメントを参照下さい。初期設定のBasic A2より高速で安価なStandard B2sを今回は使用します。また、よりセキュアに接続するため、以下の設定を追加して下さい。

  • passwd ではなく、ssh公開鍵(rsa暗号、RFC 4716形式の公開鍵)を使用する。
    ssh-keygen -e -m RFC4716 -f ~/.ssh/id_rsaでOpenSSH秘密鍵からRFC 4716形式の公開鍵が標準出力に出力されます。
  • SSHは接続するマシンのGlobal IP アドレスからのみ接続可能なように制限する。

起動したAzure仮想マシンのIPアドレスを任意の名前(以下、netcommons.example.comと例示します)でDNS登録します。

KUSANAGIでNetCommonsをインストールする。

まず、上記で作成した仮想マシンにsshログインします。以下の作業はrootで実施するため、sudo -iを実行します。
kusanagi init と kusanagi provision で、NetCommons 用に環境を準備します。LAMPでprovisonします。
念の為、自動生成した各種パラメータはnetcommons.txt に保管しておきます。

FQDN=netcommons.example.com
PROF=netcommons
KUSANAGI_PASS=$(mkpasswd -l 20)
DBROOTPASS=$(mkpasswd -l 20 -s 0)
DBNAME=$(mkpasswd -l 10 -s 0)
DBUSER=$(mkpasswd -l 10 -s 0)
DBPASS=$(mkpasswd -l 20 -s 0)
printf "FQDN=$FQDN\nPROF=$PROF\n" > netcommons.txt
printf "KUSANAGI_PASS='$KUSANAGI_PASS'\nDBROOTPASS='$DBROOTPASS'\n" >> netcommons.txt
printf "DBNAME=$DBNAME\nDBUSER=$DBUSER\nDBPASS='$DBPASS'\n" >> netcommons.txt
kusanagi init --tz tokyo --lang en --keyboard en --passwd "${KUSANAGI_PASS}" --nophrase --dbrootpass "${DBROOTPASS}" --nginx --php5 --dbsystem mariadb --ruby24
kusanagi provision --lamp --fqdn $FQDN --no-email --dbname $DBNAME --dbuser $DBUSER --dbpass "$DBPASS" $PROF

NetCommonsはCake-PHP 2.xを使用しているため、PHP 5でしか動かないことに注意して下さい。
kusanagi init でパッケージ更新されるため、rebootして再度sshログインします。そしてsudo -iを実行してroot権限で以降の操作を実行します。
次に最新のNetCommons3.2.2をダウンロードします。

cd /home/kusanagi/netcommons
curl -Lo NetCommons3.2.2.zip  'https://www.netcommons.org/cabinets/cabinet_files/download/50/30f5738db7a333a2408ef92bffd3b60e?frame_id=63'

ZIPファイルで配布されているため、unzipを使用して展開します。生成されたNetCommons3 ディレクトリ以下のファイルを、全て/home/kusanagi/netcommons/DocumentRoot に移動します。

rm -rf DocumentRoot
unzip -q NetCommons3.2.2.zip
mv NetCommons3 DocumentRoot
chown -R kusanagi:www DocumentRoot
find DocumentRoot -type f -print0 | xargs -0 chmod 0660
find DocumentRoot -type d -print0 | xargs -0 chmod 0770
find DocumentRoot -type f -a \( -name cake -o -name '*.sh' \) | xargs chmod 0770

Apache HTTPDでは、.htaccses にrewrite rule が書いてあるのでこのままで動作します。nginxではrewrite ruleをconfigファイル(/etc/nginx/conf.d/netcommons.conf)に反映しなければなりません。一旦、設定ファイルをバックアップしてから修正します。

cp /etc/nginx/conf.d/netcommons_http.conf /etc/nginx/conf.d/netcommons_http.conf.orig
cp /etc/nginx/conf.d/netcommons_ssl.conf /etc/nginx/conf.d/netcommons_ssl.conf.orig

/etc/nginx/conf.d/netcommons_*.conf の、root とindex の2行を書き換えます。

        root  /home/kusanagi/netcommons/DocumentRoot/app/webroot/;
        index index.php;

あとは、nginx -tで設定に間違いがないか確認し、systemctl restart nginx でnginxを再起動します。

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# systemctl restart nginx

その後、http://$FQDN/にアクセスします。

NetCommonsの設定

  • インストール初期画面が表示されるので、「次へ」ボタンを押して下さい。
  • PHPなどのバージョンチェックを行います。「次へ」ボタンを押して下さい。
  • データベース設定画面になります。データベース名に$DBNAME、IDに$DBUSER、パスワードに$DBPASSの値を入力します。「次へ」ボタンを押すと、DBの作成や初期設定が行われます。
  • 管理者ユーザ名と、そのパスワードを入力して「次へ」を押して下さい。
  • 使用する言語を選択して、「次へ」ボタンを押して下さい。
  • これで、インストール完了になります。「ホーム」ボタンを押して下さい。
  • 以下の通りの初期画面が表示されます。右上の「編集」ボタンを押して下さい。
  • ログイン画面が表示されるので、4で設定したユーザ名とパスワードを入力して「ログイン」ボタンを押して下さい。
  • これで、ログインした状態になりました。

これで、NetCommons3を使用できるような状態になりました。
この状態でPHP 7に切り替えてもある程度は使えるようですが、NGINX側でのfile openエラーが多数発生しているため、NetCommonsのPHP 7対応を待ったほうが良いでしょう。

では、次回をお楽しみに。

関連記事

Webサイト運用の課題解決事例100選 プレゼント

Webサイト運用の課題を弊社プロダクトで解決したお客様にインタビュー取材を行い、100の事例を108ページに及ぶ事例集としてまとめました。

・100事例のWebサイト運用の課題と解決手法、解決後の直接、間接的効果がわかる

・情報通信、 IT、金融、メディア、官公庁、学校などの業種ごとに事例を確認できる

・特集では1社の事例を3ページに渡り背景からシステム構成まで詳解