Wie man Invoice Ninja auf CentOS 7 installiert

Invoice Ninja ist eine kostenlose und quelloffene webbasierte Software für die Rechnungsstellung, Zahlungen, Zeiterfassung und vieles mehr. Sie können Rechnungen in Sekundenschnelle online erstellen und mit Zahlungsgateways wie Stripe, PayPal und WePay integrieren. Invoice Ninja kann Ihnen die Rechnung live als PDF-Datei anzeigen, Sie können Ihr eigenes Firmenlogo einrichten und individuelle Rechnungsvorlagen verwenden. Invoice Ninja basiert auf PHP, wurde mit dem Laravel Framework erstellt und kann auf Linux, Windows und Mac installiert werden.

In diesem Tutorial zeige ich Ihnen, wie Sie Invoice Ninja auf einem CentOS 7 Server installieren und konfigurieren. Ich werde Nginx als Webserver und MariaDB als Datenbanksystem verwenden.

Voraussetzung

  • CentOS 7 Server
  • Root-Privilegien

Schritt 1 – Nginx installieren

In diesem Schritt installieren wir den Nginx Webserver. Verbinden Sie sich mit Ihrem ssh rot-Account mit Ihrem Server.

ssh root@192.168.33.15

Bevor Sie Nginx installieren, müssen Sie das Epel-Repository auf Ihrem CentOS-System installieren.

yum -y install epel-release

Jetzt können Sie Nginx mit dem untenstehenden yum-Befehl aus dem epel-Repository installieren:

yum -y install nginx

Wenn die Installation abgeschlossen ist, starten Sie Nginx und aktivieren Sie es, um zum Zeitpunkt des Bootens zu starten.

systemctl start nginx
systemctl enable nginx

Stellen Sie sicher, dass Nginx läuft, indem Sie den von Nginx verwendeten Port (Port 80) überprüfen.

netstat -plntu

Nginx auf CentOS 7 installieren

Anmerkung:

Wenn Sie den Befehl netstat nicht finden, können Sie net-tools wie folgt installieren:

yum -y install net-tools

Schritt 2 – Installieren und Konfigurieren von MariaDB Server

Nachdem wir Nginx installiert haben, müssen wir den mariadb-Server auf dem System installieren. Es ist im CentOS-Repository verfügbar. Installieren Sie mariadb-server und alle für MariaDB benötigten Pakete mit dem folgenden Befehl.

yum install -y mariadb-server

Starten Sie den mariadb-Dienst und aktivieren Sie ihn mit dem systemctl-Kommando zum Startzeitpunkt.

systemctl start mariadb
systemctl enable mariadb

MariaDB wird gestartet, nun können Sie das Root-Passwort für MariaDB mit dem ‚mysql_secure_installation‘ Befehl setzen.

mysql_secure_installation

Setzen Sie Ihr MariaDB Root-Passwort.

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

Wenn alles erledigt ist, können Sie versuchen, sich mit der MySQL-Shell und dem Benutzer root zu verbinden.

mysql -u root -p
TYPE YOUR ROOT PASSWORD

Sie werden die MySQL-Shell sehen.

Als nächstes müssen wir eine neue Datenbank und einen neuen Benutzer für Invoice Ninja in der MySQL-Shell, die wir geöffnet haben, erstellen. Wir werden eine neue Datenbank namens ’ninjadb‚ erstellen, einen neuen Benutzer ’ninja‚ mit dem Passwort ‚aqwe123‚. Bitte wählen Sie ein anderes sicheres Passwort für Ihre Installation.

Erstellen Sie alles mit den unten stehenden MySQL-Abfragen: Erstellen Sie eine neue Datenbank, erstellen Sie einen neuen Benutzer und ein neues Passwort, gewähren Sie dem neuen Benutzer mit Passwort den Datenbankzugriff.

create database ninjadb;
create user ninja@localhost identified by 'aqwe123';
grant all privileges on ninjadb.* to ninja@localhost identified by 'aqwe123';
flush privileges;

MySQL für Rechnungs-Ninja auf CentOS 7 konfigurieren

MariaDB wurde installiert und eine neue Datenbank und ein neuer Benutzer für Invoice Ninja wurde erstellt.

Schritt 3 – Installieren und Konfigurieren von PHP7.0-FPM

Invoice Ninja basiert auf PHP, daher müssen wir es auf dem System installieren. Ich werde PHP7.0-FPM für die Installation von Invoice Ninja verwenden.

Es gibt kein PHP7.0 im CentOS-Standard-Repository, daher müssen wir ein neues PHP7.0-Repository zum System hinzufügen. Ich werde das Webtatic-Repository verwenden.

Fügen Sie das PHP7.0-Repository zum System hinzu.

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Jetzt können Sie PHP7.0-FPM und andere von Invoice Ninja benötigte PHP-Erweiterungen aus dem Webtatic-Repository installieren.

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

Wenn die Installation beendet ist, editieren Sie die Konfigurationsdatei php.ini mit vim.

vim /etc/php.ini

Entkomme die Zeile cgi.fix_pathinfo darunter und ändere den Wert auf 0.

cgi.fix_pathinfo=0

Speichern Sie die Datei und beenden Sie vim.

Bearbeiten Sie dann die PHP-FPM-Konfigurationsdatei.

vim /etc/php-fpm.d/www.conf

Ändern Sie Benutzer und Gruppe auf Zeile 8 und 10 in die Gruppe ’nginx‚.

user = nginx
group = nginx

Anstelle eines Ports werden wir eine Socket-Datei für php-fpm verwenden. Ändern Sie die Listen-Zeile auf ‚/var/run/php/php-fpm.sock‚.

listen = /var/run/php/php-fpm.sock

Entkommentieren Sie die Socket-Datei Konfiguration, Besitzer, Gruppe und Berechtigung.

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

Entkommentieren Sie die php-fpm Umgebungsvariablen in Zeile 366-370.

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

Speichern Sie die Datei und verlassen Sie den Editor.

Jetzt müssen wir ein neues PHP-Session-Verzeichnis erstellen und den Besitzer auf den nginx-Benutzer und die Gruppe ändern.

mkdir -p /var/lib/php/session
chown -R nginx:nginx /var/lib/php/session/

Legen Sie ein neues Verzeichnis für die Socket-Datei an und ändern Sie die Berechtigungen für den Benutzer und die Gruppe nginx.

mkdir -p /var/run/php/
chown -R nginx:nginx /var/run/php/

Als nächstes starten Sie PHP7.0-FPM und fügen es hinzu, um es beim Booten zu starten.

systemctl start php-fpm
systemctl enable php-fpm

Installieren und Konfigurieren von PHP-FPM 7 unter CentOS 7

PHP-FPM wurde gestartet. Jetzt können Sie es mit dem untenstehenden Befehl überprüfen und Sie werden die PHP-Socket-Datei sehen.

netstat -pl

PHP7.0-FPM und alle von Invoice Ninja benötigten Erweiterungen sind installiert.

Schritt 4 – Installieren und Konfigurieren von Invoice Ninja

In diesem Schritt werden wir Invoice Ninja herunterladen und konfigurieren. Installieren Sie zunächst die Entpackung auf Ihrem System.

yum -y install unzip

Erstellen Sie ein neues Verzeichnis für die Webroot-Dateien von Invoice Ninja.

mkdir -p /var/www/
cd /var/www/

Downloaden Sie Invoice Ninja mit dem wget Befehl.

wget https://download.invoiceninja.com/ninja-v3.1.0.zip

Entpacken Sie die Invoice Ninja Zip-Datei und gehen Sie in das ’ninja‚-Verzeichnis.

unzip ninja-v3.1.0.zip
cd ninja/

Für das Laravel-Projekt müssen wir den composer, einen Dependency Manager für PHP, installieren.

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer

Composer unter CentOS 7 installieren

Jetzt können Sie den composer-Befehl verwenden.

Als nächstes installieren Sie die Invoice Ninja-Abhängigkeiten mit dem untenstehenden composer-Befehl.

composer install --no-dev -o
  • –no-dev: Deaktiviert die Installation von require-dev-Paketen.
  • -o: Optimieren Sie den Autoloader während des Autoloader-Dumps.

Wenn die Installation der Abhängigkeit abgeschlossen ist, kopieren Sie die .env-Datei und editieren sie mit vim.

cp .env.example .env
vim .env

Ändern Sie den Wert der Datenbankeinstellungen unten.

DB_DATABASE=ninjadb
DB_USERNAME=ninja
DB_PASSWORD=aqwe123

Umgebungskonfiguration für Invoice Ninja

Speichern und beenden.

Als nächstes bearbeiten Sie die Datenbankkonfiguration im config-Verzeichnis.

vim config/database.php

Wir verwenden die MariaDB/MySQL Datenbank, gehen Sie zu den MySQL Einstellungen in Zeile 55.

'database'  => env('DB_DATABASE', 'ninjadb'),
'username'  => env('DB_USERNAME', 'ninja'),
'password'  => env('DB_PASSWORD', 'aqwe123'),

Datenbank-Konfiguration Rechnung Ninja

Speichern und beenden.

Alle Konfigurationsdateien werden bearbeitet, als nächstes wird die Datenbank mit dem folgenden Befehl vorbereitet.

php artisan migrate

Sie werden aufgefordert, den Befehl auszuführen, geben Sie ‚ja‘ ein und drücken Sie die Eingabetaste.

Migrieren Datenbank Rechnung Ninja

Als nächstes wird die Datenbank mit allen Datensätzen gefüllt.

php artisan db:seed

Geben Sie ‚ja‘ ein und drücken Sie die Eingabetaste zur Bestätigung.

Datenbank Saatgut-Rechnung Ninja

Generieren Sie den Anwendungsschlüssel.

php artisan key:generate

Sie sehen den Anwendungsschlüssel.

Bearbeiten Sie die app.php-Datei mit vim.

vim config/app.php

Gehen Sie zur APP_KEY Zeile 85 und fügen Sie den generierten Schlüssel ein (der Schlüssel unten ist ein Beispiel, verwenden Sie stattdessen den Schlüssel, den Sie aus dem Befehl oben erhalten haben).

'key' => env('APP_KEY', 'base64:0o5QLWbNeDCNer064+600Hl8oJ20OPCIymadKJQ1RGo='),

Speichern und beenden.

Schließlich ändern Sie den Besitzer des Verzeichnisses ‚/var/www/ninja‘ in den Benutzer und die Gruppe ’nginx‘.

cd /var/www/
chown -R nginx:nginx ninja/

Anwendungsschlüssel für Invoice Ninja generieren

Invoice Ninja wurde konfiguriert und ist bereit für die Installation.

Schritt 5 – Konfigurieren von SSL und des virtuellen Hosts

In diesem Schritt werden wir eine SSL-Zertifikatsdatei mit dem Befehl openssl generieren und eine neue virtuelle Hostkonfiguration für Invoice Ninja erstellen. Wenn Sie sich auf einem Live-Server befinden, können Sie auch ein kostenloses SSL von Let’s Encrypt verwenden.

Erstellen Sie ein neues ‚cert‘-Verzeichnis für die SSL-Dateien.

mkdir -p /etc/nginx/cert/

Führen Sie den folgenden OpenSSL-Befehl aus, um die Zertifikatsdateien zu erzeugen.

openssl req -new -x509 -days 365 -nodes -out /etc/nginx/cert/ninja.crt -keyout /etc/nginx/cert/ninja.key

Ändern Sie die Berechtigung der Zertifikatsdateien auf ‚600‘.

chmod 600 /etc/nginx/cert/*

Neue SSL-Zertifikate für Invoice Ninja generieren

Als nächstes gehen Sie in das Nginx-Verzeichnis und erstellen eine neue Konfigurationsdatei für den virtuellen Host mit dem Namen ’ninja.conf‚.

cd /etc/nginx/
vim conf.d/ninja.conf

Fügen Sie die Konfiguration des virtuellen Hosts unten ein.

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;
}
}

Speichern und beenden.

Testen Sie nun die Nginx-Konfiguration und stellen Sie sicher, dass keine Fehler auftreten.

nginx -t

Starten Sie den Nginx-Webserver neu.

systemctl restart nginx

Nginx Virtual Host für Invoice Ninja konfigurieren

Die Konfiguration des virtuellen Hosts von Invoice Ninja wurde erstellt.

Schritt 6 – SELinux und Firewalld konfigurieren

Wenn Ihr SELinux ausgeschaltet ist, können Sie diesen Schritt überspringen und mit der Konfiguration von Firewalld beginnen. In diesem Schritt werden wir SELinux und Firewalld für Invoice Ninja konfigurieren. Überprüfen Sie Ihren SELinux-Status und stellen Sie sicher, dass Firewalld installiert ist.

Überprüfen Sie den SELinux-Status mit dem folgenden Befehl.

getenforce

Wenn Ihr SELinux eingeschaltet ist, sehen Sie die Ergebnisse ‚Erzwingen‘ oder ‚Permissive‘.

Installieren Sie nun die SELinux-Verwaltungswerkzeuge aus dem Repository.

yum -y install policycoreutils-python

Und führen Sie die folgenden Befehle aus, um Invoice Ninja unter SELinux im Enforcing-Modus laufen zu lassen.

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/'

Als nächstes müssen wir den Serverport öffnen, damit Invoice Ninja von außen zugänglich ist.

Stellen Sie sicher, dass firewalld auf Ihrem System installiert ist, oder Sie können es mit dem yum Befehl installieren.

yum -y install firewalld

Starten Sie Firewalld und aktivieren Sie die Bootzeit.

systemctl start firewalld
systemctl enable firewalld

Jetzt müssen wir die HTTP- und HTTPS-Ports für Invoice Ninja öffnen. Führen Sie die folgenden Befehle aus, um die Ports zu öffnen.

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

SELinux und Firewalld sind konfiguriert.

Schritt 7 – Prüfung

Öffnen Sie Ihren Webbrowser und geben Sie die Invoice Ninja URL ein, in meinem Fall: ninja.co.

Sie werden auf eine https-Verbindung und die Setup-Seite weitergeleitet.

Rechnung Ninja Installation Konfiguration

Geben Sie die angeforderten Konfigurationsdetails, Anwendungseinstellungen, Datenbankverbindung, E-Mail-Einstellungen, Benutzerdetails ein und überprüfen Sie die Invoice Ninja TOS.

Datenbankeinstellungen und Anwendungseinstellungen Rechnung Ninja

Klicken Sie auf ‚Absenden‚ und Sie werden auf die Login-Seite von Invoice Ninja weitergeleitet.

Installieren Sie Invoice Ninja auf CentOS 7

Geben Sie Ihre E-Mail und Ihr Passwort ein und drücken Sie dann ‚LOGIN‚.

Rechnung Ninja Login-Seite

Sie sehen dann das Invoice Ninja Dashboard.

Rechnung Ninja Dashboard

Rechnung Ninja-Einstellungen Seite.

Rechnung Ninja-Einstellungen

Invoice Ninja wurde mit Nginx und MariaDB auf CentOS 7 installiert.

Referenzen

Das könnte Dich auch interessieren …