2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

続・パスワード管理ツール「Passbolt」を導入してみた

Posted at

いざ!passbolt!!の前のnginxの.confファイルの設定

nginxのバーチャルホストの設定をするだけでしょ?と思ったらつまづいた…ので一から丁寧に設定してみた。

導入環境

EC2
CentOS7
PHP7
MariaDB
Nginx

参考

passbotl How to install passbolt on your own server
URLリライティング

手順

  1. nginx上でPHPが動いているのか確認する。
  2. CakePHPのindex.phpに接続する。

だけのはずなのに…

1. nginx上でPHPが動いているのか確認する。

パスワード管理ツール「Passbolt」を導入してみた
でpassboltのインストールが終わっているところからの手順です。

まず/var/www/index.php を作成し表示させてみる。中身は何でもよい。
続いてnginxの*.confファイルをコピーして作成する。default.confはじゃまなのでdefault.conf.ORGなどリネームしておいた。

cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/passbolt.conf

passbolt.conf を編集する。

  • rootのパスをindex.phpを置いているパスに変更する。
  • location ~ .php$ のコメントアウトを外す
  • fastcgi_paramもindex.phpを置いているパスに変更する。
    location / {
        root   /var/www;
        index  index.php;
    }

    location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www$fastcgi_script_name;
        include        fastcgi_params;
    }    

ブラウザから接続してみるとPHPがnginx上で動作していることとバーチャルホスト設定がうまくいっていることが確認できる。
今回はechoで「testtest」と表示されれば設定がうまくいったことになる。

testtest

2. CakePHPのindex.phpに接続する。

CackPHPのrootは /passboltをインストールしたディレクトリ/passbolt/app/webroot の中の index.php なのでそのように設定をする。
パスをpassboltように変更しただけではCakePHPは表示できないようなので、公式ページを参考に書き直す。
公式ページ
ついでにlogのファイル設定もする。

  root   /passboltがあるところのパス/app/webroot;
  index  index.php;
    
    location / {
         try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include        fastcgi_params;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /passboltがあるところのパス/app/webroot$fastcgi_script_name;
    }

nginxを再起動する。

systemctl restart nginx

ブラウザから確認したら真っ白だったので app/Config/core.php を編集してエラーが出るようにした。1がエラーが表示されるデバッグモード。

Configure::write('debug', 1);

もう一度確認するとエラーが大量にでた。

Warning: _cake_core_ cache was unable to write 'cake_dev_ja' to File cache in /.../passbolt/lib/Cake/Cache/Cache.php on line 327

Warning: /.../passbolt/app/tmp/cache/persistent/ is not writable in /.../passbolt/lib/Cake/Cache/Engine/FileEngine.php on line 385

Fatal error: Uncaught CacheException: Cache engine "_cake_core_" is not properly configured. Ensure required extensions are installed, and credentials/permissions are correct in /.../passbolt/lib/Cake/Cache/Cache.php:186 Stack trace: #0 /.../passbolt/lib/Cake/Cache/Cache.php(151): Cache::_buildEngine('_cake_core_') #1 /.../passbolt/app/Config/core.php(400): Cache::config('_cake_core_', Array) #2 /.../passbolt/lib/Cake/Core/Configure.php(72): include('/.../p...') #3 /.../passbolt/lib/Cake/bootstrap.php(432): Configure::bootstrap(true) #4 /.../passbolt/app/webroot/index.php(95): include('/.../p...') #5 {main} thrown in /.../passbolt/lib/Cake/Cache/Cache.php on line 186

このエラーが表示された時の原因は主に3つ。

  1. Permissionがrootになっている。
  2. Permissionに書き込み権限がない。
  3. SELinuxが有効になっている。

Permissionの変更

app/tmp/cache以下にいつのまにか作られていたフォルダが作られていた。

  • models
  • persistent

app/tmp/cache/ 以下の権限を変更し、変更されたことを確認する。

chown -R nginx:nginx app/tmp/cache/
chmod -R 766 app/tmp/cache/

SELinuxを無効にする

今回はEC2上にインストールしている。EC2はデフォルトでSELinuxがenforcingになっていて、それが原因でアクセスできないらしい。
まずはサーバーのSELinuxの状態を確認する。

getenforce

このコマンドでEnforcingと表示されればSELinuxが有効になっている。

Enforcing

/etc/selinux/config を編集して無効の状態にする。
permissiveは警告はするけど無効という状態。

SELINUX=permissive

SELinuxの変更を反映させるためにサーバーを再起動させる。

reboot

nginx、mariadb、php-fpmをstartさせる。

systemctl start nginx
service mariadb start
service php-fpm start

もう一度ブラウザから接続すると別のエラーがでた。

The GPG Server key defined in the config is not found in the gpg keyring

Error: An Internal Error Has Occurred.

Stack Trace

APP/Controller/Component/Auth/GpgAuthenticate.php line 49 → GpgAuthenticate->_initKeyring()
CORE/Cake/Controller/Component/AuthComponent.php line 770 → GpgAuthenticate->authenticate(CakeRequest, CakeResponse)
CORE/Cake/Controller/Component/AuthComponent.php line 611 → AuthComponent->identify(CakeRequest, CakeResponse)
APP/Controller/AuthController.php line 35 → AuthComponent->login()
[internal function] → AuthController->login()
CORE/Cake/Controller/Controller.php line 491 → ReflectionMethod->invokeArgs(AuthController, array)
CORE/Cake/Routing/Dispatcher.php line 193 → Controller->invokeAction(CakeRequest)
CORE/Cake/Routing/Dispatcher.php line 167 → Dispatcher->_invoke(AuthController, CakeRequest)
APP/webroot/index.php line 110 → Dispatcher->dispatch(CakeRequest, CakeResponse)

調べてみると、前回設定したはずの /opt/passbolt/.gnupg のPermissionが不足していた。

chmod -R 777 /opt/passbolt/.gnupg/

これでやっとつながった…が、「ユーザーが一人も作成されていませんよ?」的な警告を受けたのでそちらの手順も残しておくことにした。
管理者を作成する前にメールの設定も行っておくと、登録時のメールアドレスにpassboltからメールが送信されるのでそちらもしておく。

cp app/Config/email.php.default app/Config/email.php
vim app/Config/email.php

passboltの公式サイトを参考に設定する。

public $default = array(
	'transport' => 'Smtp',
	'from' => array('passbolt@yourdomain.com' => 'Passbolt'),
	'host' => 'メールを送信するサーバーのホスト名',
	'port' => 587,
	'timeout' => 30,
	'username' => 'ユーザー名',
	'password' => 'パスワード名',
);

cronで送信を実行するコマンドも設定してあげる。

* * * * * /passboltまでのパス/app/Console/cake EmailQueue.sender > /passboltまでのパス/app/log/sendmail.log

メール送信の設定がうまく行われていれば、次のコマンドで管理者を作成後に指定したメールアドレスにpassboltからメールが届く。

app/Console/cake passbolt register_user -u 登録する人のメールアドレス -f myFirtsname -l myLastname -r admin

あとはメールに記載されているリンクからpassboltに接続をして完了。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?