Knowledgebase

Aveti intrebari? Sunteti in locul potrivit!

Cum sa instalati Invoice Ninja pe Ubuntu 16.04

Invoice Ninja este o aplicatie web open-source gratuita care poate fi folosita la facturare, plati, time tracking si multe altele. Este una din cele mai bune aplicatii de facturare cu ajutorul careia puteti genera si trimite facturi rapid. Invoice Ninja va permite sa generati proforme si facturi personalizate si sa le generati in format PDF.

In acest tutorial va prezentam procesul de instalare Invoice Ninja pe Ubuntu server 16.04

Necesar:

  • o instanta Ubuntu Server 16.04 cu 2GB RAM
  • un utilizator sudo cu drepturi de root
  • trebuie sa cunoasteti IP-ul instantei de server, in acest tutorial folosim ca exemplu IP-ul : 192.168.0.227

Pasul 1: Update-ul sistemului

Inainte de instalarea oricarui pachet pe instanta de server Ubuntu este recomandat sa efectuati un update al sistemului.

Autentificati-va la server prin SSH ca utilizator sudo si executati urmatoarele comenzi:

sudo apt-get update -y
sudo apt-get upgrade -y
sudo shutdown -r now

Pasul 2: Instalati stack-ul LEMP

Inainte de a incepe, este necesar sa configurati stack-ul LEMP(Nginx, MariaDB si PHP) pe serverul dvs.

Instalati Nginx si MariaDB executand urmatoarele comenzi :

sudo apt-get install nginx mariadb-server -y

Acum, este necesar sa instalati PHP 7 si PHP-FPM pentru instalarea Invoice Ninja.
Puteti instala PHP-FPM si alte extensii PHP executand urmatoarea comnada :
sudo apt-get install php7.0-fpm php7.0-gd php7.0-xml php7.0-mysql php7.0-zip php7.0-curl php7.0-gmp php7.0-mbstring php7.0-mcrypt

Dupa instalare, este necesar sa modificati fisierul php.ini
sudo nano /etc/php/7.0/fpm/php.ini

Modificati urmatoarea linie:
cgi.fix_pathinfo=0
Salvati si inchideti fisierul.

Pasul 3: Configurarea bazei de date
In mod implicit instalarea MariaDB nu este securizata. Este necesar sa o securizati. Puteti face acest lucru executand script-ul mysql_secure_installation script.

Rulati comanda:
sudo mysql_secure_installation

Raspundeti intrebarilor aparute in proces:

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

Dupa finalizarea instalarii, conectati-va utilizand shell-ul MySQL utilizand urmatoarea comanda:
mysql -u root -p

Introduceti parola de root si apasati „Enter”, acum sunteti in shell-ul MySQL

Creati o noua baza de date si un utilizator nou penru Invoice Ninja:

MariaDB [(none)]> CREATE DATABASE ninja_db;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON ninja_db.* TO 'ninja'@'localhost' IDENTIFIED BY 'password';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> q

Pasul 4: Configurarea PHP-FPM

Configurati pool-ul PHP-FPM pentru utilizatorul Nginx:
sudo nano /etc/php/7.0/fpm/pool.d/www-data.conf

Adaugati urmatoarele linii:

[www-data]
user = www-data
group = www-data
listen = /var/run/php-fpm-www-data.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0666
pm = ondemand
pm.max_children = 5
pm.process_idle_timeout = 10s
pm.max_requests = 200
chdir = /

Salvati si inchideti fisierul apoi restartati PHP-FPM pentru aplicarea modificarilor:

systemctl restart php7.0-fpm

Pasul 5: Downloadati si configurati Invoice Ninja

Puteti downloada ultima versiune stabila a Invoice Ninja din repository-ul GitHub executand urmatoarea comanda:

cd /var/www/html/
sudo git clone https://github.com/hillelcoren/invoice-ninja.git ninja

Este necesar sa instalati si Composer, un manager de dependinte pentru PHP. Acesta se instaleaza executand comanda :
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer

Apoi, instalati toate dependintele Invoice Ninja utilizand comanda composer :

cd /var/www/html/ninja
sudo composer install --no-dev -o

Dupa ce instalarea a fost efectuata, redenumiti fisierul .env si faceti cateva schimbari:

sudo mv .env.example .env
sudo nano .env

Modificati liniile dupa cum urmeaza:

DB_DATABASE=ninja_db
DB_USERNAME=ninja
DB_PASSWORD=password

Salvati fisierul cand ati terminat de modificat si executati urmatoarea comanda pentru a pregati baza de date:
sudo php artisan migrate

Pasul umator este sa faceti un seed la baza de date :
sudo php artisan db:seed

Tastati „yes” si apasati „enter”, apoi generati o cheie de aplicatie.
sudo php artisan key:generate
Adaugati cheia generata ca in exemplu de mai jos (inlocuiti cheia din exemplu cu cheia dvs.)
'key' => env('APP_KEY','jkF3IrELhHBoQ4XxMCsInhGxOIXYXc4gDAiU0HsNSD0='),

Pasul 6: Configurarea Nginx pentru Invoice Ninja

Trebuie sa creati un certificat SSL si o noua configurare in virtual host pentru Invoice Ninja.
Primul pas este sa creati un director pentru SSL:

sudo mkdir -p /etc/nginx/cert/

Apoi, generati certificatul SSL utilizand urmatoarea comanda:

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

Oferiti permisiuni pentru fisierul de certificat

sudo chmod 600 /etc/nginx/cert/*

Creati o noua configurare virtul host in directorul /etc/nginx/

sudo nano /etc/nginx/conf.d/ninja.conf

Adaugati urmatoarele linii:

server {
    listen  80;
    server_name 192.168.0.227;
    add_header Strict-Transport-Security max-age=2592000;
    rewrite ^ https://$server_name$request_uri? permanent;
}

server {
    listen  443 default;
    server_name 192.168.0.227;
    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;
    root /var/www/html/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-fpm-www-data.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;
       }
    }

Salvati si inchideti fisierul. Apoi activati virtual host executand urmatoarea comanda:
sudo ln -s /etc/nginx/sites-available/ninja /etc/nginx/sites-enabled/

Ca pas final, restartati serverul Nginx:

sudo systemctl restart nginx

Pasul 7: Accesati Invoice Ninja

Inainte de accesarea interfetei Invoice Ninja, este necesar sa permiteti serviciilor HTTP si HTTPS prin in firewall-ul UFW. Executati urmatoarele comenzi:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Pasul final este sa accesati intr-un browser IP-ul serverului https://192.168.0.227 (inlocuiti cu IP-ul dvs. aceasta adresa este data ca si exemplu) si finalizati procesul de instalare.