Invoice Ninjaは、請求、支払い、時間追跡などを行うための無料のオープンソースWebベースのソフトウェアです。オンラインで数秒で請求書を作成し、ストライプ、PayPal、WePayなどの支払いゲートウェイと統合できます。請求書忍者は、ライブの請求書をPDFファイルとして表示したり、独自の会社のロゴを設定したり、カスタムの請求書テンプレートを使用したりできます。 Invoice NinjaはPHPに基づいており、Laravel Frameworkでビルドされ、Linux、Windows、Macにインストールできます。
このチュートリアルでは、CentOS7サーバーにInvoiceNinjaをインストールして構成する方法を説明します。 WebサーバーとしてNginxを使用し、データベースシステムとしてMariaDBを使用します。
前提条件
- CentOS7サーバー
- root権限
このステップでは、NginxWebサーバーをインストールします。 sshrotアカウントでサーバーに接続します。
ssh [email protected]
Nginxをインストールする前に、CentOSシステムにEpelリポジトリをインストールする必要があります。
yum -y install epel-release
これで、epelリポジトリから以下のyumコマンドを使用してNginxをインストールできます。
yum -y install nginx
インストールが完了したら、Nginxを起動し、起動時に起動できるようにします。
systemctl start nginx
systemctl enable nginx
Nginxが使用するポート(ポート80)をチェックして、Nginxが実行されていることを確認します。
netstat -plntu
注:
netstatコマンドが見つからない場合は、次のようなnet-toolsをインストールできます。
yum -y install net-tools
Nginxをインストールした後、システムにmariadb-serverをインストールする必要があります。 CentOSリポジトリで利用できます。以下のコマンドを使用して、mariadb-serverとMariaDBに必要なすべてのパッケージをインストールします。
yum install -y mariadb-server
mariadbサービスを開始し、systemctlコマンドを使用して起動時に開始できるようにします。
systemctl start mariadb
systemctl enable mariadb
MariaDBが起動し、「mysql_secure_installation」コマンドを使用してMariaDBのルートパスワードを設定できるようになりました。
mysql_secure_installation
MariaDBのルートパスワードを設定します。
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
すべてが完了したら、MySQLシェルおよびrootユーザーとの接続を試みることができます。
mysql -u root -p
TYPE YOUR ROOT PASSWORD
MySQLシェルが表示されます。
次に、開いたMySQLシェルでInvoiceNinjaの新しいデータベースと新しいユーザーを作成する必要があります。 ' ninjadbという名前の新しいデータベースを作成します '、新規ユーザー'忍者 'パスワード付き'aqwe123 '。 yurのインストールには別の安全なパスワードを選択してください。
以下のMySQLクエリを使用してすべてを作成します。新しいデータベースを作成し、新しいユーザーとパスワードを作成し、パスワードを使用して新しいユーザーにデータベースアクセスを許可します。
create database ninjadb;
create user [email protected] identified by 'aqwe123';
grant all privileges on ninjadb.* to [email protected] identified by 'aqwe123';
flush privileges;
MariaDBがインストールされ、InvoiceNinjaの新しいデータベースとユーザーが作成されました。
Invoice NinjaはPHPに基づいているため、システムにインストールする必要があります。 InvoiceNinjaのインストールにはPHP7.0-FPMを使用します。
CentOSのデフォルトリポジトリにはPHP7.0がないため、システムに新しいPHP7.0リポジトリを追加する必要があります。 webtaticリポジトリを使用します。
PHP7.0リポジトリをシステムに追加します。
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
これで、WebtaticリポジトリからInvoiceNinjaに必要なPHP7.0-FPMおよびその他のPHP拡張機能をインストールできます。
yum -y install php70w-fpm php70w-cli php70w-pear php70w-gd php70w-xml php70w-mysql php70w-zip php70w-mbstring php70w-mcrypt php70w-curl php70w-gmp php70w-pdo
インストールが完了したら、vimでphp.ini構成ファイルを編集します。
vim /etc/php.ini
以下のcgi.fix_pathinfo行のコメントを外し、値を0に変更します。
cgi.fix_pathinfo=0
ファイルを保存してvimを終了します。
次に、PHP-FPM構成ファイルを編集します。
vim /etc/php-fpm.d/www.conf
8行目と10行目のユーザーとグループを「nginx」に変更します 'グループ。
user = nginx
group = nginx
ポートの代わりに、php-fpm用のソケットファイルを使用します。リッスン行を「/var/run/php/php-fpm.sock」に変更します '。
listen = /var/run/php/php-fpm.sock
ソケットファイルの構成、所有者、グループ、およびアクセス許可のコメントを解除します。
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
366〜370行目のphp-fpm環境変数のコメントを解除します。
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
ファイルを保存してエディタを終了します。
次に、新しいPHPセッションディレクトリを作成し、所有者をnginxユーザーとグループに変更する必要があります。
mkdir -p /var/lib/php/session
chown -R nginx:nginx /var/lib/php/session/
ソケットファイル用の新しいディレクトリを作成し、nginxユーザーとグループへのアクセス許可を変更します。
mkdir -p /var/run/php/
chown -R nginx:nginx /var/run/php/
次に、PHP7.0-FPMを起動し、起動時に開始するように追加します。
systemctl start php-fpm
systemctl enable php-fpm
PHP-FPMが開始されました。これで、以下のコマンドで確認でき、PHPソケットファイルが表示されます。
netstat -pl
PHP7.0-FPMおよびInvoiceNinjaに必要なすべての拡張機能がインストールされています。
このステップでは、InvoiceNinjaをダウンロードして構成します。まず、unzipをシステムにインストールします。
yum -y install unzip
InvoiceNinjawebrootファイル用の新しいディレクトリを作成します。
mkdir -p /var/www/
cd /var/www/
wgetコマンドで請求書忍者をダウンロードします。
wget https://download.invoiceninja.com/ninja-v3.1.0.zip
請求書忍者zipファイルを抽出し、「忍者」に移動します 'ディレクトリ。
unzip ninja-v3.1.0.zip
cd ninja/
Laravelプロジェクトでは、PHP用の依存関係マネージャーであるcomposerをインストールする必要があります。
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer
これで、composerコマンドを使用できます。
次に、以下のcomposerコマンドを使用してInvoiceNinjaの依存関係をインストールします。
composer install --no-dev -o
- -no-dev: require-devパッケージのインストールを無効にします。
- -o: オートローダーダンプ中にオートローダーを最適化します。
依存関係のインストールが完了したら、.envファイルをコピーしてvimで編集します。
cp .env.example .env
vim .env
以下のデータベース設定の値を変更してください。
DB_DATABASE=ninjadb
DB_USERNAME=ninja
DB_PASSWORD=aqwe123
保存して終了します。
次に、configディレクトリのデータベース構成を編集します。
vim config/database.php
MariaDB /MySQLデータベースを使用しています。55行目のMySQL設定に移動します。
'database' => env('DB_DATABASE', 'ninjadb'),
'username' => env('DB_USERNAME', 'ninja'),
'password' => env('DB_PASSWORD', 'aqwe123'),
保存して終了します。
すべての構成ファイルが編集されます。次に、以下のコマンドを使用してデータベースを準備します。
php artisan migrate
コマンドを実行するように求められます。「yes」と入力してEnterキーを押します。
次に、すべてのレコードをデータベースにシードします。
php artisan db:seed
「yes」と入力し、Enterキーを押して確認します。
アプリケーションキーを生成します。
php artisan key:generate
アプリケーションキーが表示されます。
app.phpファイルをvimで編集します。
vim config/app.php
APP_KEYの85行目に移動し、生成されたキーを貼り付けます(以下のキーは例です。代わりに、上記のコマンドから取得したキーを使用してください)。
'key' => env('APP_KEY', 'base64:0o5QLWbNeDCNer064+600Hl8oJ20OPCIymadKJQ1RGo='),
保存して終了します。
最後に、「/ var / www/ninja」ディレクトリの所有者を「nginx」ユーザーとグループに変更します。
cd /var/www/
chown -R nginx:nginx ninja/
Invoice Ninjaが構成され、インストールの準備が整いました。
このステップでは、opensslコマンドを使用してSSL証明書ファイルを生成し、InvoiceNinjaの新しい仮想ホスト構成を作成します。ライブサーバーを使用している場合は、Let'sEncryptの無料のSSLを使用することもできます。
SSLファイル用の新しい「cert」ディレクトリを作成します。
mkdir -p /etc/nginx/cert/
以下のOpenSSLコマンドを実行して、証明書ファイルを生成します。
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/cert/ninja.crt -keyout /etc/nginx/cert/ninja.key
証明書ファイルのアクセス許可を「600」に変更します。
chmod 600 /etc/nginx/cert/*
次に、Nginxディレクトリに移動し、「 ninja.conf」という名前の新しい仮想ホスト構成ファイルを作成します。 '。
cd /etc/nginx/
vim conf.d/ninja.conf
以下に仮想ホスト構成を貼り付けます。
server {
# Your Domain Name - hakase-labs.co
listen 80;
server_name ninja.co www.ninja.co;
# Rewrite redirect to https
add_header Strict-Transport-Security max-age=2592000;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
# Your Domain Name - hakase-labs.co
listen 443 default;
server_name ninja.co www.ninja.co;
# Enable SSL for Invoice Ninja
ssl on;
ssl_certificate /etc/nginx/cert/ninja.crt;
ssl_certificate_key /etc/nginx/cert/ninja.key;
ssl_session_timeout 5m;
ssl_ciphers 'AES128+EECDH:AES128+EDH:!aNULL';
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
# Invoice Ninja web root files
root /var/www/ninja/public;
index index.html index.htm 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 and Error Log for Invoice Ninja
access_log /var/log/nginx/ininja.access.log;
error_log /var/log/nginx/ininja.error.log;
sendfile off;
# Handle PHP Applications
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php-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;
}
}
保存して終了します。
次に、Nginx構成をテストし、エラーがないことを確認します。
nginx -t
NginxWebサーバーを再起動します。
systemctl restart nginx
InvoiceNinja仮想ホスト構成が作成されました。
SELinuxがオフの場合は、この手順をスキップして、Firewalldの構成を開始できます。このステップでは、請求書忍者用にSELinuxとFirewalldを構成します。 SELinuxのステータスを確認し、firewalldがインストールされていることを確認してください。
以下のコマンドでSELinuxのステータスを確認してください。
getenforce
SELinuxがオンの場合、「Enforcing」または「Permissive」の結果が表示されます。
次に、リポジトリからSELinux管理ツールをインストールします。
yum -y install policycoreutils-python
そして、以下のコマンドを実行して、強制モードのSELinuxでInvoiceNinjaを実行できるようにします。
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ninja(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ninja/public(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ninja/storage(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ninja/app(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ninja/bootstrap(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ninja/config(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ninja/database(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ninja/resources(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ninja/vendor(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/ninja/tests(/.*)?'
restorecon -Rv '/var/www/ninja/'
次に、サーバーポートを開いて、外部からInvoiceNinjaにアクセスできるようにする必要があります。
システムにfirewalldがインストールされていることを確認してください。そうでない場合は、yumコマンドを使用してインストールできます。
yum -y install firewalld
Firewalldを起動し、起動時に起動できるようにします。
systemctl start firewalld
systemctl enable firewalld
次に、InvoiceNinjaのHTTPポートとHTTPSポートを開く必要があります。以下のコマンドを実行して、ポートを開きます。
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
SELinuxとFirewalldが構成されています。
Webブラウザーを開き、請求書忍者のURL(私の場合はninja.co)を入力します。
https接続とセットアップページにリダイレクトされます。
要求された構成の詳細、アプリケーション設定、データベース接続、電子メール設定、ユーザーの詳細を入力し、請求書NinjaTOSを確認します。
[送信]をクリックします 'そして、請求書忍者のログインページにリダイレクトされます。
メールアドレスとパスワードを入力し、[ログイン]を押します '。
請求書忍者ダッシュボードが表示されます。
請求書忍者設定ページ。
Invoice Ninjaは、CentOS7のNginxおよびMariaDBとともにインストールされています。
- https://calyrium.org/post/install-invoiceninja-archlinux-nginx/
- https://github.com/Lykegenes/vps-toolkit/blob/master/apps/invoice-ninja-nginx