Ubuntu 18.04にYouPHPTubeを構築する

# 概要
社内だけに動画を配信したい場合に，Youtubeなどにアップして動画を共有するわけにはいかない．
オンプレミス環境にyoutubeと似た動画投稿サイトを構築する必要があった．
そこでOSSであるYouPHPTubeをUbuntu上に構築してみた

# 環境

ESXi6.7上に構築したUbuntu18.04上に構築していく

| Software | Version |
|-----|-------|
| ubuntu | 18.04 |
| PHP | 7.2 |
| Apache | 2.4.29 |
| MariaDB | 10.1.44 |

# パッケージのアップデート

```
sudo apt update
sudo apt upgrade
```
# LAMP環境の構築
## 1. Apache Web Serverをインストール

- Apache2をインストール

```
sudo apt install -y apache2 apache2-utils
```

- ステータスの確認

```
systemctl status apache2
```

- 起動していない場合は以下のコマンドを実行する

```
sudo systemctl start apache2
```

- 起動時に自動的にapacheが起動できるようにする

```
sudo systemctl enable apache2
```

- serverのURLを入力してapacheのデフォルトページが表示されるか確認する．

- apacheのページが表示されない場合はポート開放を行います

- iptablesを使用している場合

```
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
```

- UFWを使用している場合

```
sudo ufw allow http
```

## 2. MariaDBをインストールする

- 以下コマンドでインストールする

```
sudo apt install mariadb-server mariadb-client
```

- 起動しているか確認する

```
systemctl status mariadb
```

- 起動していない場合は以下コマンドを実行する

```
sudo systemctl start mariadb
```

- 起動時に自動的にmariadbを起動させる

```
sudo systemctl enable mariadb
```

- インストール後にセキュリティスクリプトを実行する

```
sudo mysql_secure_installation
```
以下の画像の通りに設定を進める
「Enterキー」の部分は何も「y/n」を選択せずに「Enterキー」を入力する
![mariadb.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583643/8479763f-0995-c98d-6efe-3ad42fbeaa83.png)

- 以下コマンドでルートパスワードを使用せずにmariadbにログインできます．

```
sudo mariadb -u root
```

- 終了するには下記コマンドを実行します．

```
exit;
```

## 3. PHP7.2をインストールする

- 下記コマンドでPHP7.2とモジュールをインストールします．

```
sudo apt install php7.2 libapache2-mod-php7.2 php7.2-mysql php-common php7.2-cli php7.2-common php7.2-json php7.2-opcache php7.2-readline php7.2-curl php-gd
```

- Apache php7.2モジュールを有効にしてからapacheを再起動します．

```
sudo a2enmod php7.2
sudo systemctl restart apache2
```

# YouPHPTubeを構築する

## 1. YouPHPTubeをダウンロードする

- Webルートディレクトリに移動

```
cd /var/www/
```

- GithubからYouPHPTubeをクローンします．

```
sudo apt install git
sudo git clone https://github.com/YouPHPTube/YouPHPTube.git
```

- YouPHPTubeディレクトリに移動する

```
cd YouPHPTube
```

- GithubからYouPHPTubeエンコーダをクローンします

```
sudo git clone https://github.com/YouPHPTube/YouPHPTube-Encoder.git
```

- YouPHPTube-Encoderとして保存されるので名前をuploadに変更します．

```
sudo mv YouPHPTube-Encoder upload
```

- Webルートの所有者としてwww-data（Webサーバーユーザー）を作成します．

```
sudo chown www-data:www-data /var/www/YouPHPTube/ -R
```

## 2. パッケージのインストール

- FFmpegのインストール

```
sudo apt install ffmpeg
```

- libimage-exiftool-perlのインストール

```
sudo apt install libimage-exiftool-perl
```

- YouTube-DLのインストール

```
sudo apt install python3-pip
sudo -H pip3 install youtube-dl
```

## 3. MariaDBでデータベースとユーザを作成する

- MariaDBにログイン

```
sudo mysql
```

- YouPHPTubeのデータベースを作成する

```
create database YouPHPTube;
```

- YouPHPTubeデータベースにログインするためのユーザを作成する．
- your-passwordをお好みのパスワードに置き換えてください．

```
create user youphptube@localhost identified by 'your-password';
```

- 作成したユーザにYouPHPTubeデータベースに対するすべての権限を付与する．

```
grant all privileges on YouPHPTube.* to youphptube@localhost;
```

- YouPHPTube Encoderのデータベースを作成する

```
create database YouPHPTubeEncoder;
```

- YouPHPTubeEncoderデータベースにログインするためのユーザを作成する．
- your-passwordをお好みのパスワードに置き換えてください．

```
create user encoder@localhost identified by 'your-password';
```

- 作成したユーザにYouPHPTubeEncoderデータベースに対するすべての権限を付与する．

```
grant all privileges on YouPHPTubeEncoder.* to encoder@localhost;
```

- テーブルをフラッシュさせて終了します．

```
flush privileges;
exit;
```

## 4. Web Serverのセットアップ

- YouPHPTubeの仮想ホストファイルを作成します．

```
sudo nano /etc/apache2/sites-available/youphptube.conf
```

- ServerNameはサーバのIPアドレスもしくはドメイン名を入力する．

```
<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/

    <Directory /var/www/YouPHPTube>
       DirectoryIndex index.php
       Options +FollowSymLinks
       AllowOverride All
       Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/youphptube.error.log
    CustomLog ${APACHE_LOG_DIR}/youphptube.access.log combined

</VirtualHost>
```

- ファイルを保存します

- 作成した仮想ホストを有効にします．

```
sudo a2ensite youphptube.conf
```

- 書き換えたモジュールを有効にします．

```
sudo a2enmod rewrite
```

- apacheを再起動します

```
sudo systemctl restart apache2
```

## 5. セットアップウィザードを使用してインストール

- 先ほど仮想ホストファイルに設定したIPアドレスもしくはドメインにWebからアクセスします．アクセスできるとセットアップウィザードが表示されます．

- http://```your-domain```/YouPHPTube

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583643/156a362d-afe2-2c67-552a-7925059636ba.png)

- 下記ファイルを編集する

```
sudo nano /etc/php/7.2/apache2/php.ini
```

- 下記4か所を編集する
    - max_execution_time
    - post_max_size
    - upload_max_filesize
    - memory_limit

- 下記のように編集する

```
max_execution_time = 7200
post_max_size = 1024M
upload_max_filesize = 1024M
memory_limit = 512M
```

- ファイルを保存して終了する

- apacheを再起動する

```
sudo systemctl restart apache2
```

- ブラウザをリロードし，左側がすべて緑色になったことを確認する．

- 下記を参考にセットアップウィザードの右側を埋めていく

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583643/b97e16c7-6cbe-733f-66ff-0c1f06a6e7c6.png)

- Install nowをクリック

- ここでエラーの下記のようなポップアップを表示されることがあるが，ブラウザをリロードし下記のように画面が遷移されればOK

- エラーポップアップ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583643/049db3c4-7cdb-b4d1-f3d5-ebfab2d31cf4.png)

- リロード後の画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583643/3ffe0873-ec31-6578-23f2-d0ebd9b50e8b.png)



 - ```/var/www/YouPHPTube/install/```ディレクトリを削除する

```
sudo rm /var/www/YouPHPTube/install/ -r
```

- ```GO to main page```をクリックする

以下のようなメインページが表示されればOK

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583643/5e65763b-9853-b025-36fa-20e3456fda3a.png)

- 右上のアカウントマークから先ほどセットアップウィザードで設定したパスワードでログインできます．ユーザ名は```admin```です．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583643/d15ebc08-6c5e-4fed-3663-35901e53a404.png)

## 6. エンコーダのセットアップ

- 動画をアップロードするにはエンコーダが必要なのでエンコーダのセットアップをやっていきます．

- 仮想ホストファイルに設定したIPアドレスもしくはドメインにWebからアクセスします．

- http://```your-domain```/YouPHPTube/upload

- 下記を参考に項目を埋める

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583643/23aa8b88-5b84-c959-0d2c-d57aaa0eae51.png)

- Install nowをクリック

- 下記画面に遷移すればOK

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583643/2a4dc63f-1812-ca21-8bfe-3d62664ddcb6.png)

- ディレクトリを削除します

```
sudo rm /var/www/YouPHPTube/upload/install/ -r
```

- ```Go to main page```をクリック

- 下記の画面に遷移するのでサイトのユーザ名とパスワードを入力しログインする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583643/0722615c-26a3-0917-b353-9de6735e3faa.png)

- 下記画面が表示されればエンコーダの設定も完了

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583643/8d1b2021-80f6-7065-fa7d-a73f81810593.png)

## 7. エンコーダのURLを変更する

- YouPHPTubeにアクセスする
- ```Admin Panel```をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583643/47e4f8c2-a28b-3876-f3ed-3487b7b22d19.png)

- 下記の設定項目にアクセスする．

- Encoder URLを変更する．

- http://```your-domain```/YouPHPTube/upload

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583643/b25fda59-21f1-b984-7ff1-243a09b53494.png)


- 以上でYouPHPTubeは構築完了となります．


# まとめ

はじめはCentOS上で構築しようと思ったができることに制限があるようで，今回はUbuntu上で構築した．
サイトデザインの変更などが細かくできるので好みのデザインにしてみるといいかもしれない

# 参考

##### apache+mariadb+php

[How to Install LAMP Stack on Ubuntu 18.04 Server/Desktop](https://www.linuxbabe.com/ubuntu/install-lamp-stack-ubuntu-18-04-server-desktop)

##### YouPHPTube

[How to Install YouPHPTube on Ubuntu 18.04 Server](https://www.linuxbabe.com/ubuntu/install-youphptube-ubuntu-18-04-server)