大学用クローズドSNSの作成及び運用検討

東京電機大学 工学部 情報通信工学科

ネットワークシステム研究室

指導教員 坂本 直志

13EC063 谷口 匠

目次

1.はじめに
2.準備
2.1.大学の教育システム
2.2.SNSとは
2.3.OpenPNEとは
3.OpenPNEによるクローズドSNSの事例
3.1.立命館大学の事例
3.2.広島大学の事例
3.3.電気通信大学の事例
4.OpenPNE以外のクローズドSNS
4.1.NECの事例
4.2.富士通ソフトウェアテクノロジーズの事例
5.考察
6.まとめ
参考文献
付録 OpenPNE3のインストール手順

1.はじめに

大学生活における活動は講義や試験、レポートや実験など様々な内容がある。これらは個人の力でやるべきこと、とは言われるが実際のところはそうではない。複数人で役割分担を行い協力する、グループを作っての学習を期待されている。高等学校までの場合は席が決まっているため、必然的に近くの席の人と協力することで課題を解決することが出来た。そこで解決できなくても、クラスの人数が少ないため誰が課題を解決出来ているかの情報を得て聞くことが容易に出来た。しかし、大学は席が決まっておらず、一度の講義に参加する人数も多い。先生に直接聞くという手段も取れるが、先生が忙しくて聞く時間がない場合がある。または、先生の教え方が合わず内容が理解出来ない場合もある。この場合は何らかの形で解決ができた人を探し、教えてもらう必要がある。教えてもらうにあたり、同じ講義を受けている人全員をあたるのは効率が悪い。席が近いことだけではない形で人とのつながりを広めておくことで話を聞く範囲を絞れると効率がいい。そこで人とのつながりをつくる場として、サークルや飲み会といった不特定多数の学生が参加するイベントが有る。同期だけでなく先輩や後輩も参加するようなイベントであれば同期の横のつながりだけでなく上下の縦のつながりも作ることが出来る。うまく作ることが出来たのなら、学生生活は充実するだろう。しかし、体調不良により参加できなかった場合や、話せた中に気の合う相手が居なかった場合、学生生活の難易度は跳ね上がってしまう。大学の活動は人とのつながりがあることが前提と言える以上、大学の活動で直接人とのつながりが作れるほうが良いのでは、と考えた。

現在、大学のオンライン教育システムは普及している。成績や出欠、課題提出、休講などの情報交換に使われている。しかし、全ての講義でこれが活用されているわけではなく、講義ごとに異なる場所へ提出を行う必要がある場合がある。すべての場所を把握するのは手間がかかる。何らかの形でそれら全てを気楽に参照する手段を学校側で用意しても良いのではないか、と考えた。

また、講義の際にその講義の感想や意見をプリントに書いて提出をさせる先生がいる。しかし1行しか書かれないことが多い。これによりプリントがかさばっている様子や紙を無駄にしている様子が見られる。この問題の対策として、学生の提出物管理や講義時間外の質疑応答をある程度の範囲で電子化したいと考えた。

そこで思いついたのがSNSだ。近年流行となっているFacebookやInstagram、Twitterは気軽に書き込みを行うことで反応を得ることが出来る。その反応から新たなつながりを作る目的でも使われるのである。これで疑問を解消出来る同期の学生や先輩と繋がることができれば、縦と横のつながりを同時に作ることが出来る。その後の学生生活が充実するだろう。また、講義に関する感想を求める場合にも使える。1行しか書かないような内容ならTwitterのように書き込むだけで気軽に提出出来ると考えられるのだ。しかし実際にそれらを使う訳にはいかない。学生だけでなく学外の人も利用しているからだ。学内の情報を漏洩することになってしまうし、個人情報の流出にも繋がってしまう。発言の不審な点だけを切り抜かれ、拡散されると炎上騒動にも繋がる。炎上目的で拡散をする人もいる場では下手な発言は出来ないのである。だが、気軽に扱えるSNSをそのリスクで活用を切り捨てるのは勿体無いと考えた。

そこで調査を進めたところ、SNSをクローズドな環境で構築することが研究されていた。大学の範囲で活用も閲覧も制限することで、情報漏洩を防ぎ、炎上騒動を起こさない、人同士のつながりを作るものとして運用するための動きがあったのである。外部からの閲覧がなければ炎上も情報漏洩のリスクも格段に下がる。その上で学内での縦と横のつながりも作ることが出来る。これを教育システムへと組み込むことができれば気軽なつながりの構築を促進し、有意義な学生生活を送ることが出来る学生を増やすことが出来るだろうと私は考えた。

本研究ではその推論が本当に実用的なのか調査すべく、クローズドSNSを用いた様々な取り組みをまとめた。大学で運用することや、大学以外で運用した例を紹介していく。本研究内容を参考に、教育システムとクローズドSNSの連携による学生の充実な生活を支える可能性を検討していただければ幸いである。

 本論文の構成は以下の通りとなる。

 2章においては準備として、論文作成の前提条件と、用語の定義を説明する。

 3章においてはOpenPNEを用いたSNSの事例について説明する。

 4章においてはOpenPNEを用いないSNSの事例について説明する。

 5章においては考察を述べる。

 6章においては論文のまとめを述べる。

2.準備

2.1.大学の教育システム

現在の大学の教育システムの例を紹介する。講義の履修を登録する、登録した時間割を確認する、教員の連絡先を確認する、休講を確認する、自分の出欠状態や成績を確認するといったことが可能である。図1の左下を編集することで講義に関連するwebサイトを登録しておくことも出来る。

東京電機大学学生用ポータルサイトのホーム画面

図1. 東京電機大学学生用ポータルサイトのホーム画面

ポータルサイト時間割画面

図2.ポータルサイト時間割画面

ポータルサイト内講義シラパス

図3.ポータルサイト内講義シラパス

シパラス内連絡先記載例 記載がないこともある

図4.シパラス内連絡先記載例 記載がないこともある

また、連携している授業サポートシステムで先生へ個別の質問を行うことも可能だ。

サポートシステムのメッセージ送信画面

図5.サポートシステムのメッセージ送信画面

欠点は、あくまで教員と学生のやり取りしか出来ないため、学生同士で疑問を解決するという運用には使えないことである。

2.2.SNSとは

SNSとはソーシャル・ネットワーキング・サービスの略称である。これはWebベースの情報サービスで、一つの事柄に対して複数人が書き込み情報の遣り取りをする場であるコミュニティを作ったり、ブログなどの投稿記事を作成、検索などを行うことが出来る。一般的にはFacebookやInstagram、mixiが知られている。

mixiのホーム画面

図6.mixiのホーム画面

通常はSNSへの参加や招待は自由にできる。任意の参加を出来ないようにし、招待も管理者を始めとした運営側の参加者しかできないようにした閉じられた環境のSNSをクローズドSNSと言う。

mixiのホーム画面

図7.mixiのコミュニティ作成画面 登録すれば誰でも作れる

2.3.OpenPNEとは

OpenPNE(オープンピーネ)とは、株式会社手嶋屋が中心となりオープンソース形式で開発を行っているSNS構築ソフトウェアである[1]。これはパソコンやフィーチャーフォン、スマートフォンの各種webブラウザに対応している。多様なサーバー環境で利用できるため、外出先からの閲覧も出来る気軽さがある。また、自分が持つサーバーへインストールした場合は自分で使用する要素を導入する、要らない要素を排除するといったカスタマイズをすることが出来る。

インストール直後のOpenPNEホーム画面

図8.インストール直後のOpenPNEホーム画面

拡張要素を導入したOpenPNEホーム画面

図9.拡張要素を導入したOpenPNEホーム画面

3.準備

3.1.立命館大学の事例

「大学教育におけるSNS(Social Networking Service)の有用性」は、立命館大学の政策科学部で運用された学部向けSNSに関する論文である[2]。5年間運用した成果から学部教育にもたらす効果を検討した。SNSとはどのようなものか、学部向けSNSの導入経緯、運用状況と成果、の順で構成される。

もともと学内用の閉じたツールはあったが、外に利便性があるツールが生じたことでユーザーが外へ流出。情報の管理が難しくなったため一括化する意図で研究された。

導入した機能はホーム画面とコミュニティ画面がある基本的なSNSの要素である。ニックネーム入力を推奨されていた箇所を本名入力へと変更し、招待メールの送信の権限を管理者のみが持つように変更した。

政策科学部は異なるゼミや講義で似た内容を扱う事があったが、打ち合わせを別々にやっていたためそれぞれの内容を知る余地がなかった。そこでこのSNS上にコミュニティを作り打ち合わせをするようになった。また、学生や教員が自主的に講義に関するコミュニティを作り教員と学生がコミュニケーションを取る、勉強会を行うコミュニティを作る、教授同士が共同研究を行うためのコミュニティを作る、といったSNSの参加者による自主的な活用も見られた。

作成されたコミュニティのカテゴリの設置数一覧

図10.作成されたコミュニティのカテゴリの設置数一覧

更には活用のためのルールについて教員や学生の間で議論が起こり、ネットリテラシーを利用者が学ぶ場ともなっていた。例えば、SNSに本名登録はプライバシーの観点から見て大丈夫なことなのかどうかが議論された。

3.2.広島大学の事例

「オープンソースソフトウェアを活用したソーシャルコミュニティの形成について ひろしまクラウドキャンパスの創生」は、広島大学で作成されたクラウドキャンパスシステムに関する論文である[3]。このシステムの説明書という意図が強い論文である。

OpenPNEだけではなくファイル共有サービスであるownCloud、ビデオ会議システムであるOpenMeetings、動画ストリーミングサービスであるViMP等をインストールしている。

OpenPNE関連画面

図11.OpenPNE関連画面

ownCloud関連画面

図12.ownCloud関連画面

OpenMeetings関連画面

図13.OpenMeetings関連画面

ViMP関連画面

図14.ViMP関連画面

これらを一括したアカウントでログインできるようGoogle IDを用いたシングルサインオン認証システムを搭載している。 ownCloudへとファイルをアップロードし、OpenPNE内のコミュニティへファイルを埋め込むことでコミュニティ参加者のみへファイルを閲覧させることが出来るようになった。これにより講座への参加を申し込んだ人だけに講座に関する資料や動画を見せることが出来る。

動画閲覧の手順説明

図15.動画閲覧の手順説明

ファイルの埋め込み

図16.ファイルの埋め込み

また、このクラウドキャンパスへとユーザー登録できるAndroidのアプリケーションを作成した。このアプリケーションにユーザーが所持しているNFCカード(国際的に使える近距離無線通信が可能なもの)を登録することでシステムにおける認証カードや、公開講座の出席カードとして使用することが出来る。論文においてはこうして作成したクラウドキャンパスを地域連携や公開講座に運用することを想定して締めている。実際に地域連携に運用したことが広島大学の業務の実績に関する報告書[4]にある。

3.3.電気通信大学大学の事例

「大学内研究室向けSNSの設計と開発」は、電気通信大学で作成された研究室単体で運用するためのSNSに関する論文である[5]。作成したSNSの作成意図と運用方法をまとめた論文となっている。

予定の登録と勧誘が出来るスケジューラと、論文をコミュニティ形式で管理する機能、研究室内の資産管理の機能を搭載している。

スケジューラの表示形式

図17.スケジューラの表示形式

また、SNSの参加者を研究員、卒業生、一般のようにグループ化してグループ毎に使用できる機能を制限している。この中で研究員はSNSへの招待メールを送る権限と論文や研究室の資産といった情報を登録することが出来る権限を持っている。研究員の中でも更に一部がグループの編集、参加者のグループへの割り当て、グループごとの機能使用の制限変更の権限を持っている。このように機能を制限することで情報漏洩を防いでいる。

論文をコミュニティ形式で管理していることは、関連した論文や議論へとコミュニティからリンクを繋ぐことで関連先の参照を容易にしている。

論文のリンク図

図18.論文のリンク図

また、スケジューラにより研究員の予定を視覚的に確認できるようになる。これにより交流や話し合いの予定を決めるのが容易になる。今後はこのSNSを実際に活用し研究室の内外への影響を評価研究していくと締められている。一方この他に実名形式のSNS[6]が大学全体で利用されるようになっている。

SNSの機能比較

表.SNSの機能比較

4.OpenPNE以外のクローズドSNS

人とのつながりが必要なのは学生同士の関係だけではない。横のつながりや縦のつながりという言葉があるように、社会に出ても必要である。社内でのつながりを作る場としては会社主催の旅行や飲み会、スポーツイベント等がある。普段からも喫煙所の利用者同士で立場を超えたつながりができることがある。しかしそういう場は非喫煙者やインドア派の静かな人には息苦しい場であり、ハラスメント問題も話題になっている。そこでも登場するのがクローズドSNSである。これらではOpenPNEを使用していないものもあり、ここではその事例を紹介する。

4.1.NECの事例

イノベーションカフェはNECの社内で開発、運用されていたSNSである[7]。各自が社内ブログを書いたり、記事を投稿したりという形で運用された。オープンなAPIを公開しているため技術系の社員などが機能を追加していき、レイアウトが改善されて利用者が増えていった。NECのグループ内で働いているだけでは関わることがなかった別の部署との繋がりを生み、情報共有が行われるようになった。その結果SNSがなければ連携することのなかった部署同士により新たな事業が生まれることにもなったのである。

イノベーションカフェの画面イメージ

図19.イノベーションカフェの画面イメージ

4.2.富士通ソフトウェアテクノロジーズの事例

イントラネットSNSは富士通ソフトウェアテクノロジーズが富士通グループ内で運用したSNSである[8]。こちらも社内ブログを書き込む場として運用された。従来は仕事に関することでしか交流のなかった遠く離れた部署で働いている社員同士が仕事内容や人柄を知る機会となった。SNSを通じて事前に相手の人柄を知ることで現場でのやり取りが円滑になったのである。開発者と関係者らが意見を交換し、それを見た別の部署との議論が起き更に深いつながりが出来ていくという結果を得た。

5.考察

今回まとめたSNSでは、コミュニティ機能を別々の形で運用していた。講義や研究に関する話し合いの場としてだけではない。クローズドなことを利用して資料を管理する場としての運用や、開講する講座の情報を受講した人や申し込んだ人だけに公開する運用があった。指定した人にしか見ることができないクローズドな環境での情報公開には、まだ使い方に関して調査と検討の余地があると考える。

6.まとめ

ここまでの内容より、SNSを運用することは普段過ごしているだけでは接点のない、しかしながら関わることでより発展を見込めるつながりを生み出すことが出来ると判明した。また、従来は対面しなければ出来なかった打ち合わせを対面せずに進めることで、より深い打ち合わせを行えることが出来ると判明した。さらに、クローズドな環境の外から部外者が入ることを防止できるので、情報漏洩の防止になるとわかった。今後の発展としてはOpenPNEに限らず、SNS作成ツールの活用により便利なSNSを作成し、さらなる活用法を探っていくこととなる。

参考資料

  1. OpenPNE, https://www.openpne.jp/
  2. 大学教育におけるSNS(Social Networking Service)の有用性, http://r-cube.ritsumei.ac.jp/repo/repository/rcube/3756/ps194_04_nishide.pdf
  3. オープンソースソフトウェアを活用したソーシャルコミュニティの形成について ひろしまクラウドキャンパスの創生, http://harp.lib.hiroshima-u.ac.jp/pu-hiroshima/file/12289/20150602102125/keijoron07179.pdf
  4. 平成28年度 業務の実績に関する報告書, http://www.pu-hiroshima.ac.jp/uploaded/attachment/11218.pdf
  5. 情報処理学会第70回全国大会 大学内研究室向けSNSの設計と開発, http://urx.blue/Sb97
  6. 電気通信大学 情報基盤センター, https://www.cc.uec.ac.jp/srv/all/uec_sns_new/
  7. NECの社内SNS「イノベーションカフェ」, https://jpn.nec.com/techrep/journal/g07/n02/pdf/070222.pdf
  8. ブログ・SNSの創発的特性と組織へのインパクト, http://jp.fujitsu.com/group/fri/downloads/report/research/2006/269-2.pdf

A.付録 OpenPNEのインストール手順

1.OSのインストール

OpenPNEの作成環境はCentOS7というOSをインストールしたVMwareWorkStationの仮想マシンを想定している。まず、OSのインストール手順から説明する。

1.1.isoファイルのダウンロード

CentOS7の公式サイトよりisoファイルをダウンロードする。フルインストールが可能なDVD ISOをダウンロードする。図1のDVD ISOをクリックすると一覧が出る。内容はどれも同じなので適当な「x8.6_64/CentOS-7-x8.6_64-DVD-18.10.iso」が語尾となっているファイルをクリックするとダウンロードできる。

公式サイトインストールページ

図a.公式サイトインストールページ

一覧ページ

図b.一覧ページ

ダウンロードしたものはVMwareの「仮想マシンの設定の編集」からドライヴにセットする。

仮想マシンの編集の場所

図c.仮想マシンの編集の場所

ダウンロードしたファイルの設置場所

図d.ダウンロードしたファイルの設置場所

1.2.仮想マシンの起動

前項でISOをセットした仮想マシンを起動する。するとインストーラーが起動する。インストーラーが起動しない場合64bit用のソフトウェアへのサポートを設定されていないことになる。よってBIOS画面でサポートを許可しておく必要がある。BIOS画面への移行は機種により操作が異なるため割愛する。移行後、「CPU設定」に関する項目を探す。この中に

Virtualization Technology

という項目があるのでこれを有効化する。日本語なら

有効

英語なら

Enable

に設定する。すると仮想環境の64bit用のソフトウェアへのサポートが認証される。起動したなら「Install CentOS 7」を選択してインストール用サービスを起動する。言語選択では使いやすいよう日本語を選択しておくこと。

インストール画面の画像

図e.インストール画面の画像

言語選択画面

図f.言語選択画面

1.3.インストールの設定

インストールの設定を決める画面が表示される。

インストールの概要画面

図g.インストールの概要画面

言語選択画面

図f.言語選択画面

ソフトウェアの選択をクリックし、「最小限のインストール」を選択する。

ソフトウェアの選択画面

図h.ソフトウェアの選択画面

インストール先をクリック。「自動構成のパーティション構成」にチェックが入っていることを確認。

インストール先の画面

図i.インストール先の画面

ネットワークとホスト名をクリック。ホスト名をFQDN形式で任意に決めておく。また、同画面で表示されているイーサネットをオンにしておく。すると自動でIPアドレス情報が表示されるのでメモしておく。イーサネットを用いないならブリッジ接続に設定しておく。

ネットワークとホスト名の画面

図j.ネットワークとホスト名の画面

ここまでやると日付と時刻をクリックすると時間合わせが出来る。ネットワーク時刻をオンにすれば合わせられる。「ntp2.jst.mfeed.ad.jp」のNTPサーバーを追加しておくと、アジア/東京に同期される。

日付と時刻の画面

図k.日付と時刻の画面

ここまでしたら、「インストールの開始」をクリック。

1.3.インストールの設定

まずはrootパスワードを設定する。rootパスワードをクリックすると設定できる。出来るだけ珍しい組み合わせが良い。10文字以上で数字、英大文字、記号を含む文字列が推奨される。

rootパスワード画面

図l.rootパスワード画面

root以外の操作を行う一般ユーザーも作成しておく。ユーザー作成をクリックする。

作成画面

図m.作成画面

終わった頃には「インストールが完了しました!」と表示されているはずである。再起動を選択し、そのままenterキーを押せばパスワード入力画面が出る。

login:

と出たなら

root

と入力しエンターキーを押す。

Password:

と出たならそこで先ほど決めたrootパスワードを入力しエンターキーを押す。

2.CentOS7の環境設定

このままではインストールに不要な機能、必要な機能が整理されておらず支障が出る。よって、インストールが出来る環境に整える。

2.1.selinuxの無効化

起動したそのままだと様々な設定に支障が出る。よってまずselinuxを無効化する。ログイン後に

getenforce

を入力する。すると

Enforcing

と表示される。これはselinuxが有効化されているという意味である。「/etc/selinux/config」ファイルを編集することで無効化することが出来る。

vi /etc/selinux/config

を入力しファイル編集モードにする。出た画面で

SELINUX=enforcing

と記載されている箇所を

SELINUX=disabled

と書き換えて保存することでselinuxを無効化できる。ファイル編集モードの時に「a」キーを押すと書き換えが可能になる。編集が終わったら「Esc」キーを押すと編集モードが解除される。「Shift+Z」キーを2回押すとファイルが上書き保存される。再度

getenforce

を入力すれば

Disabled

と表示される。これでselinuxを無効化できたことになる。

2.2.yumコマンドによるパッケージのインストール

サービス管理として使われているコマンドやオプションをインストールする。インストールするにはyumコマンドを使う。

yum install -y bash-completion chrony mysql wget postfix mlocate

を入力するとインストール処理が行われる。うまくいかないときは

yum install -y bash-completion

yum install -y chrony mysql wget postfix mlocate

を別々に入力するとインストールできる。インストール結果は

yum list installed | grep

を入力すると確認できる。

2.3.ホスト名の設定

任意のホスト名を設定する。実験では「openpne」と設定した。

nmcli general hostname openpne

と入力するとホスト名が「openpne」に設定される。設定されたかは

cat /etc/hostname

を入力すると確認可能。

2.4.firewalldでのパケットフィルタの設定

「firewall-cmd -指示」と入力するとfirewalldでの設定の変更や指示を出していくことができる。

firewall-cmd --get-default-zone

を入力したとき

public

と出ることを確認する。

firewall-cmd --list-all

を入力することでリストを表示する。「interfaces」と「services」の項目を見る。ここに書いてある内容はインターフェイスens33(CentOSがデフォルトで作成したインターフェイス名)に対してdhcpv6-clientとsshの接続を許可するということである。このままではどこからでもssh接続ができてしまう。なので、設定を変更する。恒久的に新しい接続ゾーンを作成する。

firewall-cmd --new-zone=manage --permanent

を入力する。これが成功したなら

success

と応答メッセージが出る。以降もfirewall-cmdが成功した時は同じように表示される。表示されなかったときはスペルミス等を確認する。また、「--permanent」は恒久化の意味がある。これがないと再起動時に作った接続ゾーンは消滅する。ここで作ったmanageゾーンに接続許可を設定する。

firewall-cmd --zone=manage --set-target=ACCEPT --permanent

を入力する。このコマンドは作ったゾーンからの接続をACCEPT、つまりは受け入れる状態にするものである。同じように接続ゾーンに登録したいサービスを設定する。「firewall-cmd --zone=manage --add-service=入れたいサービス名--permanent」で設定したものだけ接続できるようになる。ここでは「ssh」「ftp」「mysql」を入れておく。

firewall-cmd --zone=manage --add-service=ssh -permanent

firewall-cmd --zone=manage --add-service=ftp -permanent

firewall-cmd --zone=manage --add-service=mysql -permanent

この3行を入力する。どれも入力に成功したなら

success

と表示される。ここで入れられるサービスは

firewall-cmd --get-services

と入力すると確認できる。エラーで詰まったらこれを入力する。関連するサービスが登録されているか確認するとよい。ここに接続できるIPアドレスを設定する。

firewall-cmd --zone=manage --add-source=許可したいIPアドレス --permanent

を入力すると設定できる。ここまで終わったら

firewall-cmd --reload

を入力する。すると設定を再読込させることができる。

firewall-cmd --get-active-zones

を入力したとき、

public

interfaces: ens33

manage

sources:許可したIPアドレス

のように表示されれば成功になる。最後にどこからでもssh接続で繋げる状況を辞める。

firewall-cmd --remove-service=ssh --zone=public --permanent

を入力、再度

firewall-cmd --reload

を入力する。sshが無事消えたかどうかは上記した

firewall-cmd --list-all

を入力し確認する。

2.5.不要なサービスの無効化

「systemctl disable 無効化したいサービス」を入力することで不要なサービスを無効化する。ここで無効にするものは環境によって異なる。 例として以下を入力する。

# systemctl disable auditd.service

# systemctl disable abrt-ccpp.service

# systemctl disable abrt-oops.service

# systemctl disable abrt-xorg.service

# systemctl disable abrt-vmcore.service

# systemctl disable abrtd.service

# systemctl disable libstoragemgmt.service

# systemctl disable smartd.service

# systemctl disable libvirtd.service

# systemctl disable qemu-guest-agent.service

# systemctl disable dmraid-activation.service

# systemctl disable mdmonitor.service

# systemctl disable avahi-daemon.service

# systemctl disable kdump

これらを入力する。途中でエラーが発生したら気にせず次の行を入力する。ここで出るエラーは元から入っていないサービスを無効化しようとした時に出るものである。

2.6. chronydサービスの設定

vi /etc/chrony.conf

を入力する。すると/etc/chrony.confファイルを編集できる。設定ファイルの

server 0.CentOS.pool.ntp.org iburst

server 1.CentOS.pool.ntp.org iburst

server 2.CentOS.pool.ntp.org iburst

server 3.CentOS.pool.ntp.org iburst

の文頭に#を追記する。「server ntp2.jst.mfeed.ad.jp iburst」を追記して保存する。以下のように書き換えることになる。

#server 0.CentOS.pool.ntp.org iburst

#server 1.CentOS.pool.ntp.org iburst

#server 2.CentOS.pool.ntp.org iburst

#server 3.CentOS.pool.ntp.org iburst

server ntp2.jst.mfeed.ad.jp iburst

書き換えたら

systemctl restart chronyd

を入力し再起動する。設定ができたかは

chronyc sources

と入力すると確認できる。サーバー名に*表示があれば設定は成功になる。出ない場合はミスがないか見直す。

2.7.sshdセキュリティの設定

サービスの設定を変更するため「/etc/ssh/sshd_config」を今まで同様viエディタで編集する。

vi /etc/ssh/sshd_config

を入力し編集モードにする。35行目付近の

#PermitRootLogin yes

と記載されている箇所を

PermitRootLogin no

と書き換えて保存する。

systemctl restart sshd

を入力して再起動する。

2.8.suコマンドが使えるユーザーの制限

rootユーザーへの移動は、デフォルトではどのユーザーからでも移動できてしまう。rootユーザーへ移動する役割があるsuコマンドは誰でも使えるように設定されているからである。これはsuコマンドが使えるユーザーを予め制限しておくことで対策になる。1.4.で作成した一般ユーザーにsuコマンドの使用権限を与えることにする。まず、

usermod -g wheel ユーザー名

を入力する。これでwheelグループにユーザー名を追加する。

id ユーザー名

を入力するとwheelグループに追加されたかどうか確認できる。次に設定ファイルの変更を行う。

vi /etc/pam.d/su

を入力することで変更する。

#%PAM-1.0

auth sufficient pam_rootok.so

# Uncomment the following line to implicitly trust users in the "wheel" group.

#auth sufficient pam_wheel.so trust use_uid

# Uncomment the following line to require a user to be in the "wheel" group.

#auth required pam_wheel.so use_uid

表示されたファイルの上記の箇所の中から

#auth required pam_wheel.so use_uid

の#を消し、

#%PAM-1.0

auth sufficient pam_rootok.so

# Uncomment the following line to implicitly trust users in the "wheel" group.

#auth sufficient pam_wheel.so trust use_uid

# Uncomment the following line to require a user to be in the "wheel" group.

auth required pam_wheel.so use_uid

となるようにする。こうすると対象のユーザー以外からのsuコマンドは拒否されるようになる。suコマンドは

su -

のように入力して実行する。成功したならwheelグループ外のユーザーがsuコマンドを実行しようとすると以下の画面が出る。

パスワード:

su: 拒否されたパーミッション

2.9.locateコマンドを使えるようにする。

yum list installed | grep mlocate

を入力する。mlocateがインストール済みか確認する。インストール済みなら以下のように出る。

mlocate-0.26-6.el7.x8.6_64

数字に多少違いはあるかもしれないがこれが出る。出ないならyumでインストールする。

yum -y install mlocate

を入力するとインストールできる。次に

updatedb

を入力する。するとlocateコマンドが正常に使えるようになる。以降、

locate 探したいファイル名

を入力すると一致する名前のファイルが有る場所を検索できる。

2.10.ロケールの設定

言語設定を行う。

localectl set-locale LANG=ja_JP.utf8.

を入力する。するとロケールの言語が日本語に設定される。

localectl status

を入力する。すると以下のように表示され設定できたことを確認出来る。

localectl status

System Locale: LANG=ja_JP.utf8.

VC Keymap: jp

X11 Layout: jp

3.サーバーの構築

OpenPNEをインストールするためのサーバーを構築する。

3.1.Apacheのインストール。

まず、Apacheを動作させるために必要なユーザーを作る。

useradd -s /sbin/nologin 任意のユーザー名

を入力するとシステムへのログインができないユーザーが作成できる。次に

passwd 設定したユーザー名

を入力するとそのユーザーのパスワードを設定できる。

新しいパスワード: (ここにパスワードを入力)

新しいパスワードを再入力してください: (入れたパスワードを再入力)

passwd: すべての認証トークンが正しく更新できました。

と表示されればパスワードが設定されたことになる。このユーザーの情報は

cat /etc/passwd | grep 設定したユーザー名

を入力すると確認できる。

id 設定したユーザー名

を入力するとユーザーとグループの情報が表示される。Apacheは通常httpdのパッケージでまとまっている。そこでまず、CentOSでhttpdを名称に含むパッケージのリストを確認する。

yum list | grep httpd

を入力するとインストールできるものを確認できる。この中から必要なものをインストールする。今回は

yum -y install httpd httpd-tools httpd-devel httpd-manual

を入力する。すると4つのファイルがインストールされる。無事に入ったかの確認を行うには

yum list installed | grep httpd

を入力する。どこに入ったかは

which 探すファイル

を入力すると検索できる。

systemctl start httpd

を入力するとhttpdが起動する。その状態を確認するには

systemctl status httpd

を入力する。正常なら表示される画面で緑色の●が確認できる。確認できたら

systemctl enable httpd

を入力する。するとhttpdが自動で起動するように設定される。正常に動けば

systemctl list-unit-files | grep httpd

を入力すると

httpd.service enabled

が表示されて起動していることが確認できる。

3.2. 80番ポートの開放

現状だとウェルカムページの表示ができないためポートを開放する。

firewall-cmd --add-service=http -permanent

を入力するとfirewallにサービスが追加される。

firewall-cmd --reload

を入力するとfirewallの再起動が行われる。どちらも成功したら

success

と表示される。ウェブブラウザのアドレス入力欄に

http://httpdをインストールしたipアドレス

を入力する。するとウェルカムページが表示される。

ウェルカムページ

図n.ウェルカムページ

3.3.httpdの設定

httpd.confファイルを編集。設定を変更する。

cd /etc/httpd/conf

を入力するとcdコマンドでconfフォルダまで移動したことになる。

cp -p httpd.conf httpd.conf.org

を入力すると編集元ファイルをコピーする。これでミスが有った時に元に戻せるようになる。

vi httpd.conf

を入力してファイルの編集を行う。66~67行目にある

User Apache

Group Apache

と記載されている箇所を

User 3.1で設定したユーザー名

Group 3.1で設定したユーザー名

に書き換える。86行目の

ServerAdmin root@localhost

と記載されている箇所を

ServerAdmin 使用するメールアドレス

に書き換える。95行目の

#ServerName www.example.com:8.0

と記載されている箇所を

ServerName 2.3.で設定したホスト名.com

に書き換える。119行目にある

DocumentRoot "/var/www/html"

と124行名にある

<Directory "/var/www">

と131行目にある

<Directory "/var/www/html">

と247行目にある

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

と255行目にある

<Directory "/var/www/cgi-bin">

の5つにおける「/var/www/」を「/home/www/」に書き換える。また、httpd.conf内にある

Options Indexes FollowSymLinks

と記載されている箇所を

Options Indexes ExecCGI FollowSymLinks

に書き換える。しかしこのまま動かすとエラーになる。

cd home

を入力しhomeディレクトリへ移動する。

mkdir www

を入力しwwwディレクトリを作成する。更に

cd www

を入力しwwwディレクトリへ移動。

mkdir html

mkdir cgi-bin

を入力しhtmlディレクトリとcgi-binディレクトリを作る。

chown root:wheel html

chown root:wheel cgi-bin

を入力して、wheelグループに2つのディレクトリへのアクセス権を与える。この状態で

httpd -t

と入力すると

Syntax OK

と出て正常にプログラムが動いていることになる。ここでファイルがいくらか作成される。しかし不要なものが混ざっているので無効化しておく。

cd /etc/httpd/conf.d/

を入力しディレクトリを移動。そこにある

autoindex.conf

welcome.conf

の2つのファイルをmvコマンドで名前を変更する。

mv autoindex.conf autoindex.conf.org

と入力し、続けて

mv welcome.conf welcome.conf.org

と入力する。するとファイルの名前が変更される。

systemctl restart httpd

を入力するとhttpdが再起動する。これでプログラムは正常に動くはずである。

3.4.テスト用ページの表示

cd /home/www/html

を入力するとドキュメントルートへ移動する。ここにテストページを作る。

vi index.html

を入力する。新規のhtmlファイルが形成される。

html文

を入力し保存する。これのアクセス権も変更する。

chown root:wheel index.html

を入力する。これによりwheelグループでアクセスできるようになる。ここまでやったら

http://IPアドレス

をウェブブラウザのアドレス入力欄に入力する。するとウェブブラウザで

適当な英文

が表示される。

3.5.FTPサーバーの実装

yum -y install vsftpd

を入力する。これでFTPサーバーがインストールされる。

systemctl start vsftpd

を入力するとサーバーが起動する。他と同様に

systemctl enable vsftpd

を入力すると自動で起動するようになる。

cd /etc/vsftpd/

を入力してから

cp -p vsftpd.conf vsftpd.conf.org

を入力。元のファイルをバックアップする。

vi vsftpd.conf

を入力し設定を変更する。

anonymous_enable=YES

と記載されている箇所を

anonymous_enable=NO

に書き換える。

#ascii_upload_enable=YES

#ascii_download_enable=YES

#chroot_local_user=YES

#chroot_list_enable=YES

#chroot_list_file=/etc/vsftpd/chroot_list

#ls_recurse_enable=YES

の計6箇所の#を削除する。また、

# other settings

pasv_min_port=60001

pasv_max_port=60010

use_localtime=YES

allow_writeable_chroot=YES

force_dot_files=YES

を追記し保存する。更に

touch chroot_list

を入力して空のファイルを作っておく。これらの接続をfirewalldで許可する。

firewall-cmd --add-port=60001-60010/tcp --zone=manage -permanent

を入力する。最後に

firewall-cmd -reload

を入力しfirewallの再起動を行う。

success

と表示されれば成功である。

3.6.PHPのインストール

yum list installed | grep php

を入力する。php関係のなにかが入ってないか確認する。入っていたなら

yum remove php*

を入力すると不要なphp関連のファイルをアンインストールできる。

yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

を入力する。これで必要なphpのレポジトリをインストールできる。

yum info --enablerepo=remi,確認したいファイル

を入力する。するとファイルの詳細を確認できる。

yum -y install --enablerepo=remi,remi-php56 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql php-mysql

を入力してphpファイルをインストールする。インストールされたものの一覧は

yum list installed | grep php

を入力すると確認できる。

3.7.PHPの設定変更

cp -p /etc/php.ini /etc/php.ini.org

を入力する。これでphpの設定ファイルのバックアップが取れる。

vi /etc/php.ini

を入力する。これで設定を変更していく。

expose_php = On

と記載されている箇所を

expose_php = Off

に書き換える。

post_max_size = 8.M

と記載されている箇所を

post_max_size = 20M

に書き換える。

upload_max_filesize = 2M

と記載されている箇所を

upload_max_filesize = 20M

に書き換える。

;date.timezone =

と記載されている箇所を

date.timezone = "Asia/Tokyo"

に書き換える。

;mbstring.language = Japanese

と記載されている箇所の;を消す。

;mbstring.internal_encoding =

と記載されている箇所を

mbstring.internal_encoding = UTF-8.

に書き換える。

;mbstring.http_input =

と記載されている箇所を

mbstring.http_input = UTF-8.

に書き換える。

;mbstring.http_output =

と記載されている箇所を

mbstring.http_output = pass

に書き換える。

;mbstring.encoding_translation = Off

と記載されている箇所を

mbstring.encoding_translation = On

に書き換える。

;mbstring.detect_order = auto

と記載されている箇所と

;mbstring.substitute_character = none

と記載されている箇所は;を消す。最後に

systemctl restart httpd

を入力してhttpdに再起動をかける。これで変更した設定が反映される。

4.Mysqlのインストール

OpenPNEをインストールするためにMysqlを導入する。

4.1.MySQLのインストール

yum remove mariadb-libs

rm -rf /var/lib/mysql

この2行を入力する。これでMySQLと競合してしまうプログラムを削除できる。

rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-8..noarch.rpm

を入力する。これでMySQLを運用するためのレポジトリが追加される。

yum install mysql-community-server

を入力する。これでサーバーをインストールできる。

systemctl start mysqld.service

でインストールしたMySQLのサービスを起動する。自動起動出来るように

systemctl enable mysqld.service

を入力する。

cat /var/log/mysqld.log | grep password

を入力する。するとmysqlのログが表示される。インストールしたばかりなので短いはずである。これで表示される文に

[Note] A temporary password is generated for

の文字列があるはずである。これがある行の最後の方に、

:文字列

になっている場所がある。ここの:の後の文字列が初期パスワードである。

mysql_secure_installation

を入力する。指示に従いパスワード変更を行う。

Enter password for user root:

と表示されたら初期パスワードを入力。「Enterキー」を押す。

New password:

と表示されたら新しく設定するパスワードを入力。「Enterキー」を押す。

Re-enter new password:

と表示されたらもう一度パスワードを入力。「Enterキー」を押す。以降は文末に

(Press y|Y for Yes, any other key for No):

と表示されるたびに「yキー」を押す。最後に

All done!

と表示されれば設定終了である。

mysql -u root -p

を入力する。

Enter password:

と表示されたら新しいパスワードを入力。ログインできるか確認する。ログインできたら

grant all privileges on openpne.* to openpne@localhost identified by '好きなパスワード';

create database openpne;

を入力する。mysqlを閉じる際は

exit

を入力する。

4.2.Mysqlの設定変更

vi /etc/my.cnf

を入力する。これで設定を変更する。

default_password_lifetime = X

のXが0でなければ

default_password_lifetime = 0

となるように書き換える。その後

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,

NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

を追記する。ここまででサーバーの準備が終わる。

5.OpenPNEのインストール

今回は最新版OpenPNE3を実装する。

5.1.OpenPNEのインストール

wget https://codeload.github.com/openpne/OpenPNE3/legacy.zip/OpenPNE-3.8.29

を入力する。これでOpenPNEをダウンロード出来る。出来なければ最新版を検索する。検索したアドレスに上記文字列を変更する。

unzip OpenPNE.zip

を入力する。これでダウンロードしたファイルを展開する。

mv openpne-OpenPNE3-*/ /var/www/OpenPNE

を入力する。これでファイルの名前を変更したうえで移動させる。

rm -f OpenPNE.zip

を入力する。これで最初のファイルを削除する。以降基本的に参考資料のSNS構築(OpenPNE)の「(2)OpenPNEインストール」を参照する。ただし、

base_url

mail_domain

の2箇所は事前に3.1.で決めたものを参照する。同ページ内の「Apache設定」を行う時に、

AllowOverride All

は次の行に

Require all granted

を追記する。

5.2.アクセス権の許可

chmod 777 /var/lib/php/session

chown apache /var/lib/php/session

の2つを入力してアクセス権を付与する。

service postfix start

を入力する。これでメールサービスを起動する。

service postfix enable

を入力する。これで自動起動されるようにする。これでログインが可能になる。

インストール直後のログイン画面

図o.インストール直後のログイン画面

インストール直後のホーム画面

図p.インストール直後のホーム画面

5.3.プラグインの導入

cd /var/www/OpenPNE

を入力する。これでディレクトリを移動する。移動をした先で

./symfony opPlugin:install -r 導入したいプラグインのバージョン 導入したいプラグイン

./symfony openpne:migrate --target=導入したいプラグイン

./symfony cc

の順で入力をする。これでプラグインが導入される。

参考資料

  1. viコマンド集, http://www.ritsumei.ac.jp/~tomori/vi.html
  2. Rem System Techlog, https://www.rem-system.com/centos-install/ ,https://www.rem-system.com/linux-first-setting/ ,https://www.rem-system.com/centos-httpd-inst/ ,https://www.rem-system.com/cent-ftpd-inst/ ,https://www.rem-system.com/cent-httpd-ssl/ ,https://www.rem-system.com/centos-php72-inst/
  3. enomotodev’s blog, https://enomotodev.hatenablog.com/entry/2016/09/01/225200
  4. 完璧になんてなれない, https://sawatan.com/php/php7%E3%81%8B%E3%82%89php5%E3%81%B8%E3%83%80%E3%82%A6%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E3%81%97%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89
  5. ミッションたぶんPossible, http://takigawa401.hatenablog.com/entry/20120523/1337785054
  6. シドニーで働くプログラマーのblog, http://blog.mizoshiri.com/archives/213
  7. SNS構築(OpenPNE), https://centossrv.com/openpne.shtml