はじめに
増え続けていく画像ファイル。
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の設定を推奨設定へ変更します。
max_execution_time = 200
post_max_size = 100M
upload_max_size = 100M
upload_max_filesize = 20M
memory_limit = 256M
$ 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 の設定を変えなきゃいけない事がわかるまですごく時間がかかってしまいました。
ここのサイト様が大変参考になりました。ありがとうございました。
接続できなかった時、以下のようなエラーが出ていました。
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サーバの設定
それぞれ、自分の設定を記入します。
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: ******
画面に記述してある通りに設定します。
username: photouser
password: password
無事接続できました!
あとは手持ちの写真をいろいろと放り込みます。