HumHub開発環境構築

# UbuntuでLAMP＋HumHub環境構築
### 前提
[humhub公式ページ](https://docs.humhub.org/docs/admin/cron-jobs/)ではCronでジョブ実行することが想定されているみたい。筆者のPCはWindows11だが、Cronが使えるようにWSL2上のUbuntuで開発環境構築する。

Ubuntuバージョン：24.04
参考：[humhub公式ページ](https://docs.humhub.org/docs/admin/server-setup)
### Apache、MySQLインストール
```
sudo apt install apache2
sudo service apache2 start
sudo apt install mysql-server
sudo service mysql start
sudo mysql -u root -p
```
※パスワード：空でEnter
### MySQLデータベース作成
```
mysql> CREATE USER 'humhub_user'@'localhost' IDENTIFIED BY 'humhub';
mysql> CREATE DATABASE `humhub_db` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
mysql> GRANT ALL ON `humhub_db`.* TO `humhub_user`@localhost;
mysql> FLUSH PRIVILEGES;
```
### PHPインストール
HumHubで必要とされるモジュールを入れる。
```
sudo apt install php php-mysql php-curl php-gd php-intl php-zip php-ldap php-imagick php-xml php-cli php-bz2 php-mbstring php-apcu php-gmagick
sudo vim /etc/php/8.3/apache2/php.ini
```
#### php.iniの内容を変更
`upload_max_filesize = 32M`
`post_max_size = 32M`
`max_execution_time = 120`
```
sudo service apache2 restart
```
### HumHub資産ダウンロード
```
cd /tmp
wget https://download.humhub.com/downloads/install/humhub-1.13.0.tar.gz
tar xvfz humhub-1.13.0.tar.gz
sudo mv /tmp/humhub-1.13.0 /var/www/html/humhub
```
※/var/www/htmlがApacheのデフォルトのドキュメントルートなので、そこにHumHub資産を配置する。
### PHPMyAdminインストール
GUIでMySQLの操作ができるようにするため。
```
sudo apt install phpmyadmin
```
#### PHPMyAdminインストールダイアログ
`apacheを選択する。`
`dbconfig-comonによる設定はNoを選択する。`
```
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-enabled/phpmyadmin.conf
sudo service apache2 restart
```
### HumHub資産の権限変更
```
sudo chown -R www-data:www-data /var/www/html/humhub
```
※www-dataはApacheの実行ユーザ。
### HumHub初期設定
下記にアクセスする。HumHub初期設定画面が表示される。
http://localhost/humhub
#### データベース設定
※先ほど作成したMySQLの情報を入力する。
- ホスト名：localhost
- ユーザ名：humhub_user
- パスワード：humhub
- データベース名：humhub_db
- 「データベースがまだ存在しない場合は作成します。」：チェックなし
#### その他設定①
- ネットワーク名：HumHub
- 「かんたん設定をスキップして、後で手動で設定する」にチェック
#### 管理者アカウント設定
- ユーザ名：Admin_user
- メール：[自分のメールアドレス]
- 新しいパスワード：humhub
- 名：太郎
- 姓：管理者
#### その他設定②
- 「サンプルコンテンツを作成する（推奨）」にチェック

HumHub画面が表示され、利用可能になる。
（サンプルコンテンツは手動で削除した。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/491742/7eee09c9-db4b-f16c-be89-2478bbfe7dd5.png)

# Cron設定
### 目的
HumHubブラウザ上の操作（ユーザ削除など）がキューに格納されることがある。Cronにジョブ設定して定期的にキューをクリアする。

※HumHubの初回設定時からUbuntuを再起動すると、HumHub画面にCronが正常に動作しない旨のメッセージが出る。Cron設定を行うことで解消される。
### 手順
```
sudo crontab -e
```
※sudoの理由：/var/www/html/humhubの所有者はApacheの実行ユーザになっている。Cronが一般ユーザ権限だとジョブ実行時に権限エラーとなることがあるため。
#### 記載内容
`* * * * * php /var/www/html/humhub/protected/yii cron/run`
`* * * * * php /var/www/html/humhub/protected/yii queue/run`
# VSCodeでのデバッグ環境構築
### 目的
Windowsホスト上で開くVSCodeで、WSL2上のコード修正およびデバッグを行えるようにする。
### 手順
wsl.configに下記を追記し、WSLのデフォルトユーザをrootにする。
```
sudo vi /etc/wsl.conf
```
#### wsl.confへの追記内容
```
　[user]
　default=root
 ```
- WSL2のUbuntuを再起動する。
- WSL2のUbuntuで`code .`コマンドを実行するとVSCodeが開ける。
- VSCodeに拡張機能でRemote developmentをインストールする。
- VSCodeからリモートで、WSL上のUbuntuに接続する。
- VSCodeのWSL拡張機能上にPHP、PHP Debug拡張機能をインストールする。
- var/www/html/humhug/index.phpを選択した状態で、VSCodeの左側メニューのデバッグ⇒実行とデバッグを押下⇒ビルトインサーバでデバッグを選択。
- これで、VSCode上でコード編集して即デバッグできるはず。

db接続設定はprotected\config\dynamic.phpに書いてある。

# Yii Debugの導入
```
sudo vim /var/www/html/humhub/protected/config/web.php
```
下記内容に編集する。
```
return [
    'bootstrap' => ['debug'],
	'modules' => [
	    'debug' => [
	        'class' => 'yii\debug\Module',
	        'allowedIPs' => ['127.0.0.1', '::1'],
	    ],
	]
];
```
Apache2を再起動してブラウザでHumHubを開くと画面にデバッグツールが表示されるようになる。