PHP
nginx
mariadb
lychee

俺だけの写真管理サーバを作る(Lychee)

More than 1 year has passed since last update.


はじめに

増え続けていく画像ファイル。

PCに保管しているだけでは、スマホから見る事が出来ないので、使い勝手が悪いです。

クラウドに上げればいい事ですが、5GBとか10GB程度では俺の思い出は入りきれません(見栄)。

あと、曲がりなりにもインターネットにアップロードする事になるので、ソレはソレで心の中の何かが抵抗します。

セットアップまでは多少面倒でもいいから、自宅で写真を管理してくれるWebアプリケーションサーバがあればと思い探してみたらLycheeを見つけました。

デザインもカッコイイのでこれをいれてみます。


環境

Lycheeのためとはいえ、普通のPC上げっぱなしでは電気代が気になります。

RaspberryPi model 3Bをサーバにすることにしました。

主なソフトウェアは以下の通りです。

・Webサーバ:Nginx 1.10.2

・アプリケーションサーバ: php 7.1.1

・DB:MariaDB 10.1

・写真管理Webアプリ:Lychee 3.1

よく他の記事ではApache とか php 5.5 とか mysql を使用してたりしますが、

せっかく自宅用で何のしがらみもありませんから、使用するソフトだったり、

バージョンなど、色々挑戦してみました。

ディレクトリ構成は以下の様にしております。

/etc

+ーmy.cnf
/opt
+ーanyenv
+ーーenvs
+ーーphpenv
+ーーversions
+ーー7.1.1
+ーーbin
+ーーetc
+ーmariaDB
+ーー10.2
+ーーbin
+ーnginx
 +--1.10.2
 +--sbin
 +--conf
+--running
+--logs
+--html
+--temp
+-fastcgi_temp
/var
+ーwww
+ーーLychee

なお、それぞれのインストールですが、私はは以下の記事の様にしております。

MariaDB

NginX

PHP

併せてみて頂けると幸いですm(_ _)m


セットアップ手順

GitHubに従い、セットアップしていきます。


環境確認

phpの設定を確認します。phpのモジュールの状況から。

$ php -m

:
, exif
, gd
, json
, mbstring
, mysqli
, session
, zip
:

上記パッケージがあればOKです。

次にPHPの設定を推奨設定へ変更します。


php.ini

max_execution_time = 200

post_max_size = 100M
upload_max_size = 100M
upload_max_filesize = 20M
memory_limit = 256M


diffの結果

$ diff php.ini.org php.ini

383c383
< max_execution_time = 30
---
> max_execution_time = 200
404c404
< memory_limit = 128M
---
> memory_limit = 256M
671c671
< post_max_size = 8M
---
> post_max_size = 100M
824c824,825
< upload_max_filesize = 2M
---
> upload_max_size = 100M
> upload_max_filesize = 20M
939c940
< ;date.timezone =
---
> date.timezone = Asia/Tokyo


Lychee本体のダウンロード

無心で落としてきます。

$ cd /var/www

$ sudo git clone https://github.com/electerious/Lychee.git


Permissionの変更

$ sudo useradd -r -g web -d /opt/Lychee/ -s /usr/sbin/nologin lychee 

$ sudo chown -R lychee:web /opt/Lychee
$ sudo chmod -R 777 /opt/Lychee/uploads/ /opt/Lychee/data


php-fpm設定

記事がうまく整理できていなくて申し訳ないですが、php-fpmも設定します。

$ cd /opt/anyenv/envs/phpenv/versions/7.1.1/etc/php-fpm.d

$ cp -p www.conf.default www.conf
$ sudo vi www.conf


listen = 127.0.0.1:19711

user = nginx
group = web


nginx.conf の設定

$ diff nginx.conf.org nginx.conf

44,45c44,46
< root html;
< index index.html index.htm;
---
> # root html;
> root /var/www/Lychee;
> index index.html index.htm ;
65,71c66,75
< #location ~ \.php$ {
< # root html;
< # fastcgi_pass 127.0.0.1:9000;
< # fastcgi_index index.php;
< # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
< # include fastcgi_params;
< #}
---
> location ~ \.php$ {
> root /var/www/Lychee;
> fastcgi_pass 127.0.0.1:19711;
> fastcgi_index index.php;
> fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
> include fastcgi_params;
> }

fastcgi_parm の設定を変えなきゃいけない事がわかるまですごく時間がかかってしまいました。

ここのサイト様が大変参考になりました。ありがとうございました。

接続できなかった時、以下のようなエラーが出ていました。


nginxのerror.log

2017/03/06 16:23:46 [error] 18245#0: *7572 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.1.1, server: localhost, request: "POST /php/index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:19711", host: "192.168.1.2", referrer: "http://192.168.1.2/"



Lycheeサーバの設定

Lycheeサーバにアクセスすると、以下の画面が出ます。

Lychee設定.PNG

それぞれ、自分の設定を記入します。

Database host:     localhsot

Database username: ******
Database password: ******

以下はお好みで。

Database Name : DB_Lychee (Lychee独自データベース名)

Table Prefix : Lyc_ (テーブル名の接頭辞)

と、入力できればよかったのですが、、、、

実はDBの設定を忘れていました。

ユーザを作っていませんでしたので、今から作成します。


DBの設定


ユーザ作成

まずは、rootでログインして設定を確認します。

$ mysql -u root -p

Enter password:

MariaDB [(none)]> select host, user FROM mysql.user;
+-----------+------+
| host | user |
+-----------+------+
| 127.0.0.1 | root |
| ::1 | root |
| localhost | root |
+-----------+------+
3 rows in set (0.00 sec)

MariaDB [(none)]>

見事に手つかずでした。Lychee用にデータベース(photo)とユーザ(photoadmin)を作成します。

MariaDB [(none)]> create database photo;

MariaDB [(none)]> grant all privileges on photo.* to photoadmin@localhost identified by 'password' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;

(間違って作ってしまったユーザは、以下のコマンドで消してやり直ししました。)

MariaDB [(none)]> drop user user1;


Lycheeサーバの設定(再び)

準備が整いました。もう一度、ブラウザから設定にいきます。

、、、、先ほどの記述では、まだうまく次の設定画面にいけませんでしたorz

原因を想定して解決するのに苦労しましたが、ポート番号の設定が抜けていました。

なのでポート番号の設定も行います。

Database host:     localhsot:3306

Database username: photoadmin
Database password: ******

次にユーザ名とパスワードの設定画面が出ます。

キャプチャ![TOP.PNG](https://qiita-image-store.s3.amazonaws.com/0/14800/ddd81552-922e-d750-786d-ca2a16373c0f.png)<br>
<br />.PNG

画面に記述してある通りに設定します。

username:    photouser

password: password

無事接続できました!

TOP画面.PNG

あとは手持ちの写真をいろいろと放り込みます。