Fireflyiii OSS財務マネージャー

Fireflyiii OSS財務マネージャー

皆さん、あけおめです。
今年も弊学のnull2xをどうぞよろしくお願い致します。
今回は、新年早々家計簿をOSSパッケージで始めてみようと思いVMで構築してみた記事になります。

Contents

なんで家計簿なんて付けようと思ったのさ..

ま、何かきっかけが無ければ家計簿なんて付けようとも思わないですよねぇ..
きっかけとしては、欲しいものがありすぎなのと就職してからiDeco や NISAなどの投資関係、保険、クレジットカードの利用など収入と支出の額が今までに比べて桁違いに大きくなるためOSSパッケージで管理できれば一元管理しちゃおうという意気込みで導入を検討しました。

じゃ、とりあえず構築していきますか。

CentOS 8はインストール済みということを想定します。
まぁ、毎回CentOS8のインストール方法書くのも面倒なので是非こちらもご覧ください。
https://www.server-world.info/query?os=CentOS_8&p=install

まずは、一旦firewalld と SELinuxを停止させます。
加えて、今回使うcomposerというものがIPv6に対応していないみたいでIPv6を有効化した状態だとエラーを吐いてしまうので無効化しておきます。

root@localhost ~# setenforce 0

root@localhost ~# systemctl stop firewalld

root@localhost ~# vi /etc/sysctl.conf

----追記----
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

root@localhost ~# nmcli c mod ens33 ipv6.method ignore

ens33は私が構築しているCentOS8のネットワークデバイス名です。
個々人によってens○○の部分が変わりますので任意で変更してください。

root@localhost~# vi /etc/yum.repos.d/nginx.repo  

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

root@localhost~# dnf -y --disablerepo=AppStream install nginx  

root@localhost~# vi /etc/yum.repos.d/mariadb.repo 

#MariaDB 10.4 CentOS repository list - created 2020-01-05 02:18 UTC
#http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos8-amd64 
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB 
gpgcheck=1
root@localhost~# dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm  

root@localhost~# dnf -y module install php:remi-7.4  

root@localhost~# dnf -y install php php-fpm php-gd php-mbstring php-mysqlnd php-bcmath php-intl php-zip php-opcache php-ldap  

root@localhost~# dnf -y --disablerepo=AppStream install MariaDB-server MariaDB-client  

注意
2020/01/25 現在、nginx.repoを導入しても何故かnginxがインストールされない事象を確認しています。
拡張モジュールはあるのに、nginx本体がインストール出来なければ意味が無いので

root@localhost ~# rpm -ivh http://nginx.org/packages/centos/8/x86_64/RPMS/nginx-1.16.1-1.el8.ngx.x86_64.rpm

でnginx本体をインストールしてください。

もし、nginx.repoから正常にnginx本体をインストール出来るようであればrpmからのインストールは不要です。

続いて、場合にもよるみたいですが
libboost_program_options.so.1.66.0()(64bit) というライブラリが足りないことがあるようです。
これも、rpmでインストールしたほうが早そうです。
ちなみに、これはMariaDB-Serverの依存関係らしいです...

root@localhost ~# rpm -ivh http://mirror.centos.org/centos/8/AppStream/x86_64/os/Packages/boost-program-options-1.66.0-6.el8.x86_64.rpm  

もし、上記のlibboostに関するrpmの取得が必要なくMariaDBのインストールが出来る場合は下記通りのコマンドでインストール出来ると思われます。

root@localhost ~# dnf -y --disablerepo=AppStream install MariaDB-server MariaDB-client

続いて、Firefly iii のパッケージ取得に移っていきます。

root@localhost~# curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer  

root@localhost~# cd /usr/share/nginx/html/  

root@localhost~# composer create-project grumpydictator/firefly-iii --no-dev --prefer-dist firefly-iii x.x.x  

(x.x.x はFireflyiii のGitHub releaseを確認してバージョンを打ち込みましょう)

root@localhost~# vi /etc/php-fpm.d/www.conf  

    user = nginx
    group = nginx

    ;listen = 127.0.0.1:9000
    listen = /var/run/php-fpm/php-fpm.sock

    listen.owner = nginx
    listen.group = nginx
    listen.mode = 0660

default.conf丸々書き換え

root@localhost~# rm -rf /etc/nginx/conf.d/default.conf  

root@localhost~# vi /etc/nginx/conf.d/default.conf  

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html/firefly-iii/public;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        location ~ \.php$ {
              try_files $uri =404;
              fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
              fastcgi_index index.php;
              fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
              include fastcgi_params;

        }

        index index.php index.htm index.html;

        location / {
          try_files $uri $uri/ /index.php?$query_string;
          autoindex on;
          sendfile off;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
root@localhost~# systemctl start mariadb  

root@localhost~# mysql -u root -e "CREATE DATABASE firefly;"  

root@localhost~# mysql -u root -e "GRANT ALL ON firefly.* TO firefly@localhost IDENTIFIED BY 'password';"  
root@localhost~# vi /usr/share/nginx/html/firefly-iii/.env  

DB_CONNECTION=mysql
DB_DATABASE=firefly
DB_USERNAME=firefly
DB_PASSWORD=your_password

root@localhost~# vi /usr/share/nginx/html/firefly-iii/config/database.php  

(↑mysql.sockの場所: /var/lib/mysql/mysql.sock)

【追記】

'unix_socket' => '/var/lib/mysql/mysql.sock',
root@localhost~# cd /usr/share/nginx/html/firefly-iii  

root@localhost~# php artisan migrate:refresh --seed  

root@localhost~# php artisan passport:install  

root@localhost~# chown -R nginx:nginx /usr/share/nginx/html/firefly-iii/  

【Firewalld , SELinux 無効化する場合】

root@localhost~ # systemctl disable firewalld  

Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.  
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
root@localhost~ # vi /etc/sysconfig/selinux  

SELINUX=disabled

一応10回程度コマンドの検証を行い、上記通りコマンドを打ち込めば構築は出来るはずです。

ぜひやってみてくださいね!!

image

実際に、構築出来た時にはtwitterで超棒読みなtweetをしてしまいした... (笑)

じゃ、次はGitlabかな