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