写真管理Webアプリ Piwigo をサーバにインストールする

# 写真管理Webアプリ Piwigo をサーバにインストールする

[自宅に Samba サーバを構築する](https://qiita.com/fujiisoup/items/d773c16e476d5aa0e2ca)
[Flashair を使って、デジカメデータを自動的にサーバにアップロードする](https://qiita.com/fujiisoup/items/35cabbe8629a335b6642)
で作ったサーバに、Webベースの写真管理ソフトをインストールします。

ウェブベースの写真管理ソフトとして
+ [Lychee](https://lycheeorg.github.io/)
+ [piwigo](https://piwigo.org/)
が有名なようです。

はじめはLycheeを試しました。
あまりインストラクションが親切でなく、散々苦労した結果、

- Lycheeではすでにあるフォルダを監視することはできないこと
- すでにあるフォルダ構造を維持できなくて、全データをLycheeディレクトリにコピーすること

などがクリアできなくて使うのを諦めました。

やはりファイルはそのままおいておいてほしい。
元データもおいておけば容量は２倍無駄にするし、
元データを消すのは、Lycheeが今後50年メンテされ続けるとは思えないので不安。

一応 piwigo だとそれらはできそうです。
あとインストールの方法も
[どなたかが親切にまとめてくれていた](https://websiteforstudents.com/install-the-piwigo-photo-gallery-on-ubuntu-16-04-17-10-18-04-with-apache2-mariadb-and-php-7-2-support/) ので非常にスムースでした。

以下は、ほとんどがこのサイト

https://websiteforstudents.com/install-the-piwigo-photo-gallery-on-ubuntu-16-04-17-10-18-04-with-apache2-mariadb-and-php-7-2-support/

からのコピーです。


## Step 1: Apache2 HTTP サーバのインストール

```bash
sudo apt update
sudo apt install apache2
```

## Step 2: MariaDB のインストール

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

sudo systemctl stop mysql.service
sudo systemctl start mysql.service
sudo systemctl enable mysql.service
```

mysql の設定
```bash
sudo mysql_secure_installation
```

[元サイト](https://websiteforstudents.com/install-the-piwigo-photo-gallery-on-ubuntu-16-04-17-10-18-04-with-apache2-mariadb-and-php-7-2-support/) のまんまコピー

```bash
Enter current password for root (enter for none): Just press the Enter
Set root password? [Y/n]: Y
New password: Enter password
Re-enter new password: Repeat password
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]:  Y
Reload privilege tables now? [Y/n]:  Y
```

MariaDB server の再起動

```bash
sudo systemctl restart mysql.service
```

## Step 3: PHP 7.4 のインストール


```bash
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php7.4 php7.4-common php7.4-mbstring php7.4-xmlrpc php7.4-gd php7.4-xml php7.4-intl php7.4-mysql php7.4-cli php7.4 php7.4-ldap php7.4-zip php7.4-curl
```

phpの設定をします。

```bash
sudo nano /etc/php/7.4/apache2/php.ini
```

いくつかの項目を次のように変更します。

```bash
file_uploads = On
allow_url_fopen = On
memory_limit = 256M
upload_max_filesize = 100M
date.timezone = Asia/Tokyo
```

## Step 4: Piwigo Database の作成

次に、 mysql にユーザを作成します。
このデータは

```bash
CREATE USER 'piwigouser'@'localhost' IDENTIFIED BY '[your_password]';
GRANT ALL ON piwigo.* TO 'piwigouser'@'localhost' IDENTIFIED BY '[your_password]' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
```

この情報はあとでセットアップのときに使います。

## Step 5: Piwigo のダウンロード

[元ページ](https://websiteforstudents.com/install-the-piwigo-photo-gallery-on-ubuntu-16-04-17-10-18-04-with-apache2-mariadb-and-php-7-2-support/)
にはないですが、Stick PCやRaspberry PIは、本体のデータ容量は少なくて、外部ディスクを主に使うと思うので、シンボリックリンクを外部ディスクから張っておきます。

```bash
mkdir /mnt/disk1/piwigo
sudo ln -s /mnt/disk1/piwigo /var/www/html/
```

piwigoのダウンロード

```bash
cd /tmp && curl -o piwigo.zip http://piwigo.org/download/dlcounter.php?code=latest
unzip piwigo.zip

mv piwigo/* /var/www/html/piwigo/*
```

## Step 6: Apache2 の構成

```bash
sudo nano /etc/apache2/sites-available/piwigo.conf
```

以下をファイル末尾に記入

```bash
<VirtualHost *:80>
     ServerAdmin admin@example.com
     DocumentRoot /var/www/html/piwigo
     ServerName example.com
     ServerAlias www.example.com

     <Directory /var/www/html/piwigo/>
        Options +FollowSymlinks
        AllowOverride All
        Require all granted
     </Directory>

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

</VirtualHost>
```

## Step 7: Piwigo の有効化

```bash
sudo a2ensite piwigo.conf
sudo a2enmod rewrite
sudo systemctl restart apache2.service
```

## Step 8: Piwigo の初期設定

PCなどから、構築したWeb サーバに行きます。うちの場合は
`http://192.168.11.2/piwigo`

以下のように設定します。

```
Host: localhost
User: piwigouser
Password: [上で設定したもの]
Databae name: piwigo
Database tables prefix: piwigo_
```

これでとりあえずは使えるようになりました。