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回程度コマンドの検証を行い、上記通りコマンドを打ち込めば構築は出来るはずです。
ぜひやってみてくださいね!!
実際に、構築出来た時にはtwitterで超棒読みなtweetをしてしまいした... (笑)
じゃ、次はGitlabかな