KUSANAGI でNetCommons を使用してみよう


今回は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対応を待ったほうが良いでしょう。

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


Post Author: 宮﨑悟

Avatar
国立函館高専を卒業後、NEC協力会社に入社。UNIX・Windowsアプリケーション開発、Solaris/Linuxでのシステム構築に20年以上従事した。SolarisとLinuxを専門とし、OSおよび仮想化技術を得意とする。日本OpenSolarisユーザグループのメンバとして、OSCなど勉強会での登壇多数。 ○得意分野 言語: C、C++、Perl、Python、PowerShell OS: Solaris、Linux 過去の発表資料:OSCおよびhbstudyなどでの登壇経験あり。 https://www.slideshare.net/satorumiyazaki 過去の執筆記事: https://www.cloudn-service.com/magazine/member/satoru_miyazaki.html