Invoice Ninja è un software gratuito e open source basato sul Web per fatturazione, pagamenti, monitoraggio del tempo e molto altro. Puoi creare fatture online in pochi secondi, integrarle con gateway di pagamento come Stripe, PayPal e WePay. Invoice Ninja può mostrarti la fattura in tempo reale come file PDF, puoi impostare il tuo logo aziendale e utilizzare modelli di fattura personalizzati. Invoice Ninja è basato su PHP, costruito con Laravel Framework e può essere installato su Linux, Windows e Mac.
In questo tutorial, ti mostrerò come installare e configurare Invoice Ninja su un server CentOS 7. Userò Nginx come server web e MariaDB come sistema di database.
Prerequisito
- Server CentOS 7
- Privilegi di root
Passaggio 1:installa Nginx
In questo passaggio, installeremo il server web Nginx. Collegati al tuo server con il tuo account ssh rot.
ssh [email protected]
Prima di installare Nginx, devi installare il repository Epel sul tuo sistema CentOS.
yum -y install epel-release
Ora puoi installare Nginx con il comando yum di seguito dal repository epel:
yum -y install nginx
Al termine dell'installazione, avvia Nginx e abilita l'avvio all'avvio.
systemctl start nginx
systemctl enable nginx
Assicurati che Nginx sia in esecuzione controllando la porta utilizzata da Nginx (porta 80).
netstat -plntu
Nota:
Se il comando netstat non viene trovato, puoi installare net-tools in questo modo:
yum -y install net-tools
Passaggio 2:installazione e configurazione del server MariaDB
Dopo aver installato Nginx, dobbiamo installare mariadb-server sul sistema. È disponibile nel repository CentOS. Installa mariadb-server e tutti i pacchetti necessari per MariaDB con il comando seguente.
yum install -y mariadb-server
Avvia il servizio mariadb e abilitalo all'avvio all'avvio con il comando systemctl.
systemctl start mariadb
systemctl enable mariadb
MariaDB è stato avviato, ora puoi impostare la password di root per MariaDB con il comando 'mysql_secure_installation'.
mysql_secure_installation
Imposta la tua password di root 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
Se tutto è fatto, puoi provare a connetterti con la shell MySQL e l'utente root.
mysql -u root -p
TYPE YOUR ROOT PASSWORD
Vedrai la shell MySQL.
Successivamente, dobbiamo creare un nuovo database e un nuovo utente per Invoice Ninja nella shell MySQL che abbiamo aperto. Creeremo un nuovo database chiamato 'ninjadb ', un nuovo utente 'ninja ' con password 'aqwe123 '. Scegli una password sicura diversa per la tua installazione.
Crea tutto con le query MySQL di seguito:crea un nuovo database, crea un nuovo utente e password, concedi l'accesso al database al nuovo utente con password.
create database ninjadb;
create user [email protected] identified by 'aqwe123';
grant all privileges on ninjadb.* to [email protected] identified by 'aqwe123';
flush privileges;
MariaDB è stata installata e sono stati creati un nuovo database e utente per Invoice Ninja.
Fase 3 - Installa e configura PHP7.0-FPM
Invoice Ninja è basato su PHP, quindi è necessario installarlo sul sistema. Userò PHP7.0-FPM per l'installazione di Invoice Ninja.
Non è presente PHP7.0 nel repository predefinito di CentOS, quindi è necessario aggiungere un nuovo repository PHP7.0 al sistema. Userò il repository webtatic.
Aggiungi il repository PHP7.0 al sistema.
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Ora puoi installare PHP7.0-FPM e altre estensioni PHP necessarie per Invoice Ninja dal repository webtatic.
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
Al termine dell'installazione, modificare il file di configurazione php.ini con vim.
vim /etc/php.ini
Decommenta la riga cgi.fix_pathinfo sottostante e cambia il valore in 0.
cgi.fix_pathinfo=0
Salva il file ed esci da vim.
Quindi modifica il file di configurazione PHP-FPM.
vim /etc/php-fpm.d/www.conf
Cambia utente e gruppo alle righe 8 e 10 in 'nginx ' gruppo.
user = nginx
group = nginx
Invece di una porta, useremo un file socket per php-fpm. Cambia la riga di ascolto in '/var/run/php/php-fpm.sock '.
listen = /var/run/php/php-fpm.sock
Decommenta la configurazione del file socket, il proprietario, il gruppo e l'autorizzazione.
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Decommenta le variabili di ambiente php-fpm nella riga 366-370.
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Salva il file ed esci dall'editor.
Ora dobbiamo creare una nuova directory di sessione PHP e cambiare il proprietario nell'utente e nel gruppo nginx.
mkdir -p /var/lib/php/session
chown -R nginx:nginx /var/lib/php/session/
Crea una nuova directory per il file socket e cambia l'autorizzazione per l'utente e il gruppo nginx.
mkdir -p /var/run/php/
chown -R nginx:nginx /var/run/php/
Quindi, avvia PHP7.0-FPM e aggiungilo all'avvio all'avvio.
systemctl start php-fpm
systemctl enable php-fpm
PHP-FPM è stato avviato. Ora puoi verificarlo con il comando seguente e vedrai il file socket PHP.
netstat -pl
PHP7.0-FPM e tutte le estensioni necessarie per Invoice Ninja sono installate.
Fase 4 - Installa e configura Invoice Ninja
In questo passaggio, scaricheremo e configureremo Invoice Ninja. Innanzitutto, installa unzip sul tuo sistema.
yum -y install unzip
Crea una nuova directory per i file webroot di Invoice Ninja.
mkdir -p /var/www/
cd /var/www/
Scarica Invoice Ninja con il comando wget.
wget https://download.invoiceninja.com/ninja-v3.1.0.zip
Estrai il file zip di Invoice Ninja e vai su 'ninja ' directory.
unzip ninja-v3.1.0.zip
cd ninja/
Per il progetto Laravel, abbiamo bisogno di installare composer, un Dependency Manager per PHP.
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer
Ora puoi usare il comando del compositore.
Quindi, installa le dipendenze di Invoice Ninja con il comando di composizione riportato di seguito.
composer install --no-dev -o
- --no-dev: Disabilita l'installazione dei pacchetti require-dev.
- -o: Ottimizza il caricatore automatico durante il dump del caricatore automatico.
Al termine dell'installazione delle dipendenze, copia il file .env e modificalo con vim.
cp .env.example .env
vim .env
Modifica il valore delle impostazioni del database di seguito.
DB_DATABASE=ninjadb
DB_USERNAME=ninja
DB_PASSWORD=aqwe123
Salva ed esci.
Quindi, modifica la configurazione del database nella directory config.
vim config/database.php
Stiamo usando il database MariaDB/MySQL, vai alle impostazioni di MySQL alla riga 55.
'database' => env('DB_DATABASE', 'ninjadb'),
'username' => env('DB_USERNAME', 'ninja'),
'password' => env('DB_PASSWORD', 'aqwe123'),
Salva ed esci.
Tutti i file di configurazione vengono modificati, quindi prepara il database con il comando seguente.
php artisan migrate
Ti verrà chiesto di eseguire il comando, digita "yes" e premi Invio.
Quindi, semina il database con tutti i record.
php artisan db:seed
Digita 'sì' e premi Invio per confermare.
Genera la chiave dell'applicazione.
php artisan key:generate
Vedrai la chiave dell'applicazione.
Modifica il file app.php con vim.
vim config/app.php
Vai alla riga APP_KEY 85 e incolla la chiave generata (la chiave sotto è un esempio, usa invece la chiave che hai ottenuto dal comando sopra).
'key' => env('APP_KEY', 'base64:0o5QLWbNeDCNer064+600Hl8oJ20OPCIymadKJQ1RGo='),
Salva ed esci.
Infine, cambia il proprietario della directory '/var/www/ninja' con l'utente e il gruppo 'nginx'.
cd /var/www/
chown -R nginx:nginx ninja/
La fattura Ninja è stata configurata ed è pronta per l'installazione.
Passaggio 5 - Configura SSL e l'host virtuale
In questo passaggio, genereremo un file di certificato SSL con il comando openssl e creeremo una nuova configurazione di host virtuale per Invoice Ninja. Se sei su un server live, puoi utilizzare un SSL gratuito anche da Let's Encrypt.
Crea una nuova directory 'cert' per i file SSL.
mkdir -p /etc/nginx/cert/
Esegui il comando OpenSSL di seguito per generare i file del certificato.
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/cert/ninja.crt -keyout /etc/nginx/cert/ninja.key
Modifica l'autorizzazione dei file del certificato in "600".
chmod 600 /etc/nginx/cert/*
Quindi, vai alla directory Nginx e crea un nuovo file di configurazione dell'host virtuale chiamato 'ninja.conf '.
cd /etc/nginx/
vim conf.d/ninja.conf
Incolla la configurazione dell'host virtuale di seguito.
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;
}
}
Salva ed esci.
Ora prova la configurazione di Nginx e assicurati che non ci siano errori.
nginx -t
Riavvia il server web Nginx.
systemctl restart nginx
La configurazione dell'host virtuale Invoice Ninja è stata creata.
Passaggio 6 - Configura SELinux e Firewalld
Se il tuo SELinux è spento, puoi saltare questo passaggio e iniziare a configurare Firewalld. In questo passaggio, configureremo SELinux e Firewalld per Invoice Ninja. Controlla lo stato di SELinux e assicurati che firewalld sia installato.
Verifica lo stato di SELinux con il comando seguente.
getenforce
Se il tuo SELinux è attivo, vedrai i risultati "Applicazione" o "Permissiva".
Ora installa gli strumenti di gestione di SELinux dal repository.
yum -y install policycoreutils-python
Ed esegui i comandi seguenti per consentire a Invoice Ninja di funzionare in SELinux in modalità Enforcing.
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/'
Successivamente, dobbiamo aprire la porta del server in modo da poter accedere a Invoice Ninja dall'esterno.
Assicurati che firewalld sia installato sul tuo sistema, oppure puoi installarlo con il comando yum.
yum -y install firewalld
Avvia firewalld e abilita l'avvio all'avvio.
systemctl start firewalld
systemctl enable firewalld
Ora dobbiamo aprire le porte HTTP e HTTPS per Invoice Ninja. Esegui i comandi seguenti per aprire le porte.
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
SELinux e Firewalld sono configurati.
Fase 7 - Test
Apri il tuo browser web e digita l'URL di Invoice Ninja, nel mio caso:ninja.co.
Verrai reindirizzato a una connessione https e alla pagina di configurazione.
Inserisci i dettagli di configurazione richiesti, Impostazioni dell'applicazione, Connessione al database, Impostazioni e-mail, Dettagli utente e controlla i Termini di servizio di Invoice Ninja.
Fai clic su 'Invia ' e verrai reindirizzato alla pagina di accesso di Invoice Ninja.
Digita e-mail e password, quindi premi 'ACCEDI '.
Vedrai la dashboard di Invoice Ninja.
Pagina Impostazioni Fattura Ninja.
Invoice Ninja è stato installato con Nginx e MariaDB su CentOS 7.
Riferimenti
- https://calyrium.org/post/install-invoiceninja-archlinux-nginx/
- https://github.com/Lykegenes/vps-toolkit/blob/master/apps/invoice-ninja-nginx