HumHubというCMSを使ってSNSを秒で作る

## 概要
HumHubというCMSを使うと、SNSサービスを秒で作ることができます。
HumHubとは、SNSに必要な機能が一通り用意されているPHP製のCMSです。

<img width="1280" alt="Screen Shot 2018-01-07 at 17.25.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/105936/182f8164-29ac-7511-0427-d42a16092669.png">

- 参考：[SNSが簡単に構築できるマニアックなPHP製オープンソースCMS 3選](http://www.usendream.com/1246/)
- 関連記事：[oxwallというCMSを使ってSNSを秒で作る](https://qiita.com/Esfahan/items/472f6120bb74305c00ff)

## 関連
- [HumHubをインストールしたら最初にやっておくべきこと](https://qiita.com/Esfahan/items/dec5e95eab8825eb09d3)
- [HumHubの新規ユーザー登録画面のカスタマイズ](https://qiita.com/Esfahan/items/714bd4fa529ee564e7df)

## 環境
- CentOS 7.2
- PHP 7.0.27
- Composer 1.6.2
- Apache 2.4.6
- Mysql 5.7.20
- HumHub 1.2.4

## 構成

| 項目 | 値 |
| --- | --- |
| DocumentRoot | /var/www/html/humhub/public/ |
| DB User | humhub |
| DB Name | humhub_db |

## PHP, Mysql, Apacheのインストール
以下を参考にインストールしておいてください。

- [phpのインストール](https://qiita.com/Esfahan/items/e55fa83a9dcf91d89d84)
    - composerもインストールしてください
- [Mysqlのインストール](https://qiita.com/Esfahan/items/83200c64de8d826677b5)
- [Apacheのインストール](https://qiita.com/Esfahan/items/364462502b6d19dea1fe)

## PHP Extensionのインストール
以下のextensionをインストールします。

```
$ sudo yum -y --enablerepo=remi,remi-php70 install php-pecl-zip
$ sudo yum -y --enablerepo=remi,remi-php70 install php-pecl-mysql
$ sudo yum -y --enablerepo=remi,remi-php70 install php-intl
$ sudo yum -y --enablerepo=remi,remi-php70 install php-ldap
$ sudo yum -y --enablerepo=remi,remi-php70 install php-apc
```

以下はPHPをインストールしたら入っていると思いますが、念のため。

```
$ sudo yum -y --enablerepo=remi,remi-php70 install php-curl
$ sudo yum -y --enablerepo=remi,remi-php70 install php-mbstring
$ sudo yum -y --enablerepo=remi,remi-php70 install php-exif
$ sudo yum -y --enablerepo=remi,remi-php70 install php-fileinfo
```

インストールしたら、Apacheをリスタートします。

```
$ sudo apachectl restart
```

## HumHubのダウンロード

### GitHubからclone
GitHubからソースをcloneします。

```
$ git clone https://github.com/humhub/humhub
```

### ディレクトリ権限変更
以下のディレクトリの権限を変更します。

```
chmod 777 -R assets
chmod 777 -R protected/config/
chmod 777 -R protected/modules
chmod 777 -R protected/runtime
chmod 777 -R uploads/
```

### composer install
このCMSはyiiを利用しているみたいなので、 `fxp/composer-asset-plugin` も入れます。

```
$ composer global require "fxp/composer-asset-plugin:~1.4.2"
$ composer install
```

/var/www/html/humhub/の下に、cloneされた、humhubをpublicというディレクトリ名に変更して設置します。

```
$ mv /var/www/html/humhub/humhub /var/www/html/humhub/public
```

## DBとDBユーザー作成
DBを作成します。

```sql
mysql> CREATE DATABASE `humhub_db` CHARACTER SET utf8 COLLATE utf8_general_ci;
```

DBユーザーを作成します。

```sql
mysql> GRANT ALL ON `humhub_db`.* TO `humhub`@localhost IDENTIFIED BY 'password_changeme';
mysql> FLUSH PRIVILEGES;
```

## 初期設定
ブラウザからアクセスします。
http://192.168.33.10

すると、初期設定画面が表示されるので、ガイドに従って進んでいきます。

<img width="1280" alt="Screen Shot 2018-01-07 at 11.49.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/105936/e4af6924-ce5a-cd5a-6764-6e226c4dec46.png">

システム要件に不備があると、以下のようになるので、適宜対応してください。

<img width="1280" alt="Screen Shot 2018-01-07 at 11.53.05.png" src="https://qiita-image-store.s3.amazonaws.com/0/105936/200bc8dc-e4ec-75b9-426c-1727668dde3f.png">

問題がなければ以下のようになるので、次へをクリックしてください。

<img width="1280" alt="Screen Shot 2018-01-07 at 14.43.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/105936/c983b018-ce6c-d874-0136-cbb776cfc21d.png">


### DBの設定
先程作成したDBの情報を入力してください。

<img width="1280" alt="Screen Shot 2018-01-07 at 14.44.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/105936/f24a7ba0-9f63-ba81-9065-35e5cf66268b.png">

### Social Network Name
SNSの名前を入力します。

<img width="1280" alt="Screen Shot 2018-01-07 at 17.19.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/105936/df2bdad3-35d9-0f1a-3259-62f17f3a6739.png">


### Configuration
このSNSをどのような用途で使用するのか選択します。
どれを選択するかによって、用途に沿ったプラグインのインストールが促されます。

<img width="1280" alt="Screen Shot 2018-01-07 at 14.58.49.png" src="https://qiita-image-store.s3.amazonaws.com/0/105936/25ed9919-b35b-9d44-1453-eca8f04482c2.png">

今回は、 `Skip this step, I want to set up everything manually` を選択して、何もプラグインをインストールしないまま進めます。

### Admin Account
サイトの管理者のアカウントを作成します。

<img width="1280" alt="Screen Shot 2018-01-07 at 14.59.32.png" src="https://qiita-image-store.s3.amazonaws.com/0/105936/c4bb9c27-40b5-5715-6a75-0885f0c7f205.png">

### Example contents
チェックを入れると、デフォルトで何人かのユーザーと投稿が入った状態のものが出来上がります。
HumHubがどのようなものかをとりあえず試してみたい方はチェックを入れましょう。
後で消せるらしいです。

<img width="1280" alt="Screen Shot 2018-01-07 at 15.01.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/105936/71e72649-3bf3-0c7f-207e-41888226867e.png">



### インストール完了
これで初期設定は完了です！

<img width="1280" alt="Screen Shot 2018-01-07 at 15.04.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/105936/123825a4-e3d7-f670-28ce-aad1e1bdac70.png">

## sign in
先程作成した管理者アカウントでログインします。

<img width="1280" alt="Screen Shot 2018-01-07 at 17.24.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/105936/f89f5050-75e0-a01a-575f-c09d733edf0a.png">

Facebookみたいですね。
Example contentsにチェックを入れたので、既にユーザーと投稿が存在しています。

<img width="1280" alt="Screen Shot 2018-01-07 at 17.25.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/105936/182f8164-29ac-7511-0427-d42a16092669.png">


## Admin管理画面
右上のプルダウンメニューから管理をクリックすると、Admin管理画面に飛ぶことができます。

<img width="1280" alt="Screen Shot 2018-01-07 at 22.19.18.png" src="https://qiita-image-store.s3.amazonaws.com/0/105936/67e499a9-7e8e-3201-0df4-48e4af24d26c.png">

以下のようなページに飛びます。

<img width="1280" alt="Screen Shot 2018-01-07 at 22.21.00.png" src="https://qiita-image-store.s3.amazonaws.com/0/105936/7f8536e2-26bd-194a-e8f9-e4241f510059.png">



## プラグイン
HumHubでは、プラグインを、モジュールという呼び方をするみたいです。

最期ほど、初期設定ではモジュールを何もインストールしなかったので、Admin管理画面でインストールしてみます。

左メニュのモジュールをクリックして、 `オンラインで見る` のタブを選択し、必要なモジュールをインストールします。

<img width="1280" alt="Screen Shot 2018-01-07 at 22.22.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/105936/9be26403-81d1-61a3-5e51-b1f0562507d7.png">

以下のプラグインを入れてみます。
`インストール` をクリックした後、 `インストール済み` のタブで `有効化` をクリックすることで適用されます。

- Birthday Widget
    - 誕生日が来ると通知してくれるみたいです
- Report Content
    - スパム投稿などを通報できるみたいです
- Most Active Users Widget
    - アクティブなユーザーを一覧にして表示してくれるみたいです
- Mail
    - ユーザー同士でメッセージのやり取りが可能になります
- Social Share
    - 投稿を他のSNSと連携できるみたいです
- Humhub Updater
    - Humhubのアップデートを簡単にしてくれるみたいです
- Polls(質問のやつ？)
    - アンケート機能が使えるようになります
        - `デフォルトで設定 -> 常に作動` を設定する必要があります


## 友達機能を有効にする
Administration 管理メニュー -> 設定 -> Enable user friendship system
にチェックして、保存を押すと、友達機能が有効になります。

## Mail設定
<img width="1280" alt="Screen Shot 2018-01-07 at 23.11.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/105936/e267d435-a6bd-4e3f-ec24-135761d665b1.png">

以下の3つを選ぶことができます。

- File (Use for testing/developoment)
- PHP
- SMTP

SMTPを選択した場合は、以下のような設定項目が現れます。

<img width="1280" alt="Screen Shot 2018-01-07 at 23.21.33.png" src="https://qiita-image-store.s3.amazonaws.com/0/105936/5675bcfc-5ccb-8c86-016f-28ae7c6cf533.png">

参考：http://docs.humhub.org/admin-installation-configuration.html#e-mails

## 関連
- [HumHubをインストールしたら最初にやっておくべきこと](https://qiita.com/Esfahan/items/dec5e95eab8825eb09d3)
- [HumHubの新規ユーザー登録画面のカスタマイズ](https://qiita.com/Esfahan/items/714bd4fa529ee564e7df)

## 参考
- [HumHub Documentation](http://docs.humhub.org/admin-installation.html)
- [HumHubインストール体験記](http://www.miyako-office.net/blog/humhub%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E4%BD%93%E9%A8%93%E8%A8%98/)
- [yii2をcomposer-asset-pluginから自由にする](https://qiita.com/kitatuba/items/ebd2a2a92d0756bd4969)