ubuntu20.04.1に「Invoice Ninja」をインストールする

ubuntu20.04.1に「Invoice Ninja」をインストールする

ubuntu20.04.1にオープンソースの請求管理用ツール「Invoice Ninja」をインストールする手順を記述してます。webサーバーにはnginxを使用します。

環境

  • OS ubuntu 20.04.1
  • ninja 4.5.19
  • nginx 1.18.0
  • mysql 8.0.21
  • php 7.3

必要パッケージインストール

php7.4だと以下のエラーが発生するので、

Trying to access array offset on value of type int

php7.3をインストールするため以下のリポジトリを追加します。

sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php

※ubuntu20.04.1 phpのバージョンを切り替える手順はこちら

sudo apt install nginx mysql-server php7.3-fpm php7.3-cli php7.3-common php7.3-curl php7.3-gd php7.3-mysql php7.3-xml php7.3-mbstring

Mysql設定

mysqlの初期設定を行います。

sudo mysql_secure_installation

rootのパスワードだけ設定すれば後は、全て「y」で問題ないです。

Press y|Y for Yes, any other key for No: n
Please set the password for root here.

New password:

Re-enter new password:

mysqlにログインしてDBとユーザーを作成します。
※mysql8ではroot以外のユーザーでrootでログインしようとすると「ERROR 1698 (28000): Access denied for user ‘root’@’localhost’」が発生します。
詳しくはこちら

ログインします。

sudo mysql -u root -p

DBやユーザーを作成します。

//DB作成
mysql> CREATE SCHEMA `ninja` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

//ユーザー作成
mysql> CREATE USER 'ninja'@'%' IDENTIFIED BY 'password';

//認証方式をmysql_native_passwordに変更
mysql> ALTER USER 'ninja'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

//DBへのアクセス権を設定
mysql> GRANT ALL PRIVILEGES ON ninja.* TO 'ninja'@'%' WITH GRANT OPTION;

//GRANTテーブルから再読込
mysql> FLUSH PRIVILEGES;

//抜ける
mysql> \q

※mysql8でユーザーに権限を付与する手順はこちら

Invoice Ninjaダウンロード

wgetでダウンロードします。

wget https://download.invoiceninja.com/ -O /tmp/invoice-ninja.zip

「/var/www/html」に解凍します。

sudo unzip /tmp/invoice-ninja.zip -d /var/www/html/

権限を設定しておきます。

sudo chown -R www-data: /var/www/html/ninja

Nginx設定

nginxの設定ファイルを作成します。

sudo nano /etc/nginx/sites-available/ip_or_domain.conf

自分の環境では以下の内容で記述してます。
※「10.10.10.100」はサーバーのプライベートIPとなります。

server {
    listen 80 default_server;
    server_name 10.10.10.100;

    root /var/www/html/ninja/public;

    index index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log  /var/log/nginx/10.10.10.100.access.log;
    error_log   /var/log/nginx/10.10.10.100.error.log;

    sendfile off;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
    }

    location ~ /\.ht {
       deny all;
    }
}

ポート80番を使用するので「default」の方を変更しておきます。

sudo nano /etc/nginx/sites-available/default

<編集>
server {
        listen 81 default_server; → 81番に変更

シンボリックリンクを作成してアクティブにします。

sudo ln -s /etc/nginx/sites-available/ip_or_domain.conf /etc/nginx/sites-enabled/ip_or_domain.conf

nginxを再起動します。

sudo service nginx restart

Invoice Ninjaインストール

ブラウザから http://プライベートIP or サーバーアドレス にアクセスします。

URLを設定します。自分はIPアドレスにしてます。

DBの設定です。キャプチャはありませんが、メールの設定もあります。

userの作成です。入力が終われば、チェックボックスに2つチェックを入れて「Submit」をクリックします。

作成したアカウントでログインします。

以下の画面が表示されれば構築は完了です。