結果だけでなく過程も見てください

たい焼きさんの日々の奮闘を綴る日記です。

Zenphotoを超簡単にインストールする方法 (Linux(CentOS))

はじめに

世の中にはGoogleフォト等の便利な写真用ストレージサービスがありますが、
以下の理由から自宅サーバーにzenphotoを導入することにしました。

  • 長年使用していると何かしら情報が洩れそうで心配
  • 家族全員の携帯で取りだめてる写真や動画や時には写真以外のファイルを容量無制限でまとめてぶっこみたい

今回は自作のスクリプトを使って一発でインストールしています。
スムーズに行けば5分程度で完了し、すぐ使えるようになります。

環境:CentOS 7 (64-bit)

インストール手順

(1)必要なパッケージのインストールと設定

以下の自分が自作したスクリプトをrootで実行します。
setup_zenphoto.sh 直

WebサーバーやDBサーバーの設定を色々と変更するので、怖かったらスクリプトの中身をコピペして手動で実行してってください。本スクリプトを使用して不利益が生じても責任は負いませんのでご注意を…。あと、スクリプトのエラー処理や複数回実行等の処理は適当です。

スクリプトをダウンロードして、中身をテキストエディタで開き、
最初の方にある以下のパラメーターを好きな値に変更してからスクリプトを実行してください。

パラメーター 意味
PHOTO_DBNAME 写真用のデータベース名
PHOTO_DBUSERNAME 写真用のデータベース用ユーザー名
PHOTO_DIRNAME Webサーバーにzenphotoを展開する際のディレクトリ名(そのままURLになります)
SSL_CRT_BASENAME SSL用証明書と秘密鍵のファイル名

実行するコマンドはこちら。
./setup_zenphoto.sh

コマンド中は対話でいくつか入力を求められます。

Enter current password for root (enter for none):

インストール直後はパスワードがないので、そのままEnterキーを押してください。
mariadbをこのスクリプト内でインストールした場合に実行する
 mysql_secure_installationで入力を求められるものです。

Set root password? [Y/n]

「Y」を入力して、パスワードを設定してください。
ここで入力するパスワードは、このスクリプトの第二引数に指定したものと同じものにしてください。

Remove anonymous users? [Y/n]

「Y」を入力してDBのanonymousユーザーは削除しておきましょう。

Disallow root login remotely? [Y/n]

「Y」を入力してDBのリモートアクセスを無効にしましょう。

Remove test database and access to it? [Y/n]

「Y」を入力してtestDBを削除しておきましょう。

Reload privilege tables now? [Y/n]

「Y」を入力して情報をリロードしておきましょう。

Enter pass phrase for <変数SSL_CRT_BASENAMEの値>.key:

SSL通信のための秘密鍵パスフレーズです。
任意の文字列を入力してください。

Country Name (2 letter code) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:

Country Nameには「JP」、Stateには「Tokyo」や「Kanagawa」など都道府県を、
Locality Nameには「Yokohama」など市や区を入力してください。

Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:

何も入力せずEnterしてください。

Common Name (eg, your name or your server's hostname) []:

実際にhttpsでサーバーにアクセスするアドレスを記載します。
IPアドレスでアクセスするなら、IPアドレスを、
ドメイン名でアクセスするならドメイン名を入力します。

Email Address []:
A challenge password []:
An optional company name []:

何も入力せずEnterしてください。

Please provide the prefix of Imagemagick installation [autodetect] :

何も入力せずEnterしてください。

スクリプトが最後まで実行されると以下が表示されるはずです。
ブラウザでアクセスしてください。(e.g. http://192.168.1.2/myphoto/)

Please contact http://<yoursever>/<変数PHOTO_DIRNAMEの値>/ and setup.
(2)ブラウザで初期設定する

(1)で最後に表示されたURLにアクセスしましょう(の部分は適宜置き換えてください)

まずは以下の画像を参考にして、DBの情報を入力した後、[保存]ボタンを押してください。

データベースエンジン MySQL
データベースユーザ スクリプトの変数PHOTO_DBUSERNAMEで指定したもの
データベースパスワード スクリプトの第二引数に指定したもの
データベース名 スクリプトの変数PHOTO_DBNAMEで指定したもの

次に以下の警告が出ている場合は、「適用」を押下して文字コードUTF-8に変更します。

上の適用ボタンを押すと以下が表示されることがあります。
その場合は「実行してください」の部分のリンクをクリックしてください。

URLオプションUTF8画像URIを有効にすべきです。 実行してください

また、以下の警告が出ることもあるのですがおそらく無視しても大丈夫だと思いますので、
ここまできたら画面下部の[実行]ボタンを押下して、zenphotoのセットアップを開始してください。

警告!

Zenphotoは所有者のみがアクセスできる(パーミッションは0600)zp-dataフォルダーの機密ファイルを作成することをおすすめします。setup.logのファイルのパーミッションは未承認アクセスを許可できる0644である必要があります。
警告!

恐らくアップロードで問題があります。以下のファイルをチェックしてください:
zp-core/zp-extensions/tinymce4/themes/inlite/src/test/.eslintrc

zenphotoのセットアップが完了した後は、[管理ユーザ名とパスワードを設定する]のリンクをクリックして
zenphotoの管理ユーザーと一般ユーザーを作成してください。

管理ユーザ名とパスワードを設定する必要があります。

次に管理ユーザーでログインして、いま上で色々いじっていた
セットアップ画面が外部から見られないように設定を変えましょう。

ログイン後に「Overview」タグをクリック、「Utility functions」グループの中から
「Setup > protect script」をクリックしましょう。

これで完了です!
アルバムを作ったり、写真をアップロードしてみたり色々と試してください。

おまけ

PHPの設定で、デフォルトでは一度にアップロードできるファイル容量が2MBになっているかもしれません。
またファイルを直接配置(デフォルトでは/var/www/html/myphoto/albums/<作成したアルバム名)>してもOKです。

インストールされるパッケージ一覧

スクリプトを実行すると、以下のパッケージがインストールされます。

  • gcc
  • unzip (zenphotoのzip展開用)
  • mariadb, mariadb-server (DBサーバー)
  • httpd (Webサーバー)
  • mod_ssl (httpdSSL通信モジュール)
  • php周りの色々なパッケージ (zenphoto用)
  • imagick (zenphoto用)
  • ImageMagick (zenphoto用)
  • zenphoto
  • zenphotoのiOS用アドイン(オプション)

設定一覧

上記パッケージの設定ファイルなどを自動で編集します。

  • /etc/php.iniにextension=imagick.soを追加
  • スクリプト内の変数PHOTO_DBNAMEのデータベースが作成
  • スクリプト内の変数PHOTO_DBUSERNAMEのデータベース用ユーザー作成
  • mariadbのセキュリティ確保用スクリプトmysql_secure_installationを実行
  • /etc/httpd/confに変数SSL_CRT_BASENAMEのファイル名の秘密鍵・証明書を作成。
  • /etc/httpd/conf.d/ssl.confの証明書・秘密鍵のファイル名を↑のパスに変更
  • zenphotoを/var/www/htmlに展開。所有者・所有グループをapache:apacheに変更
  • /tmp/zenphoto-iOS-plugin-master.zipが存在すればzenphoto
  • httpdのセキュア設定(ServerTokensをProdに変更、TraceEnableをOffに設定等)

スクリプトの解説

やる気があったら書きます。
(でも読めばわかる内容だと思います。読んでみてください。)

プライバシーポリシー お問い合わせ