This tutorial covers the installation of Invoice Ninja onto Centos 7 VPS with Apache, PHP and MariaDB. Invoice Ninja is free and self-hosted platform for invoicing, billing and payment management based on Laravel. It is very easy to use and it can be integrated with most of the popular payment gateways, including PayPal, 2CheckOut, Stripe, WePay, and many more… which makes it a perfect solution for freelancers and small or medium sized businesses.
– Create invoices and quotations in no time
– Easy time tracking & task creation.
– Send invoices and accept online payments
– Integrate with 30+ gateways including: Stripe, PayPal, Authorize and Dwolla
– Easily create quotes and invoices online
– Custom invoice URL’s Company.InvoiceNinja.com
– iOS and Android apps
– CentOS 7 VPS with 2GB of RAM
– SSH access with root privileges
– PHP version 5.5.9 or newer
– MySQL/MariaDB database server
– Apache/Nginx web server
Login via SSH and update the server
We will install Invoice Ninja through the command line interface, so first we need to login to the CentOS 7 VPS via SSH as user root
ssh root@IP_Address -p Port_Number
Once you are logged in, don’t forget to update all packages installed on the server
yum -y update
Install Apache web server
Apache can be easily installed from the official CentoOS 7 repositories using the following command
yum -y install httpd
After the installation manager complete the installation, start the web server and enable it to start automatically after a restart
systemctl start httpd systemctl enable httpd
Install PHP 7
CentOS 7 by default comes with PHP 5.4 which has reached the end of life and it is no longer supported. So, in this tutorial we will install PHP 7 instead. For this purpose we have to add the Webtatic EL yum repository.
yum -y install epel-release rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Once the repository is added, we can proceed to install PHP and several PHP modules
yum install php70w php70w-common php70w-curl php70w-mysql php70w-mbstring php70w-mcrypt php70w-xml php70w-cli php70w
verify that PHP 7 is installed
php -v PHP 7.0.31 (cli) (built: Jul 20 2018 08:55:22) ( NTS ) Copyright (c) 1997-2017 The PHP Group
Install MariaDB database server
Invoice Ninja stores its information in a database. So, we will install MariaDB database server and create a new database along with a user able to access it. Run the following command to install MariaDB server
yum -y install mariadb
Start the server and enable it to start upon reboot
systemctl start mariadb systemctl enable mariadb
Run the ‘mysql_secure_installation’ post installation script to secure your MariaDB server and set a password for the MySQL ‘root’ user.
Next, login to the database server as user root,
mysql -u root -p MariaDB [(none)]> CREATE DATABASE ninja; MariaDB [(none)]> CREATE USER 'user'@'localhost' IDENTIFIED BY 'PASSWORD'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON ninja.* TO 'user'@'localhost'; MariaDB [(none)]> FLUSH PRIVILEGES MariaDB [(none)]> exit
Replace ‘PASSWORD’ with an actual strong password.
Install and Configure Invoice Ninja
Download the latest stable of Invoice Ninja to your server. At the moment of writing this article it is version 4.5.3
curl -L https://download.invoiceninja.com/ -o invoiceninja.zip
unpack the downloaded ZIP file to the document root the directory of your server. The ZIP file includes all necessary third party libraries.
unzip invoiceninja.zip -d /var/www/html
The content of Invoice Ninja will be stored in a new ‘ninja’ directory.
Configure Invoice Ninja to use the newly created MariaDB database
cd /var/www/html/ninja/ cp -v .env.example .env
Open the .env file and find and modify the following lines
DB_DATABASE=ninja DB_USERNAME=user DB_PASSWORD=PASSWORD
Save the changes and run the following commands necessary to prepare the MariaDB database
php artisan migrate php artisan db:seed
Set the correct ownership to the Invoice Ninja directory
chown -R apache:apache /var/www/html/ninja
Create Apache virtual host
In order to be able to access Invoice Ninja with your domain name, we will create Apche virtual host for the domain.
Create a new virtual host directive with the following content
vi /etc/httpd/conf.d/invoiceninja.conf ServerAdmin firstname.lastname@example.org DocumentRoot /var/www/html/ninja/public ServerName your-domain.com ServerAlias www.your-domain.com Options +FollowSymlinks AllowOverride Al ErrorLog /var/log/httpd/invoiceninja-error_log CustomLog /var/log/httpd/invoiceninja-access_log common
Save the file and restart the web server for the changes to take effect
systemctl restart httpd
If you closely followed the tutorial, with this step the installation of Invoice Ninja is completed and you can start using it. Open your web browser and navigate it to http://your-domain.com and follow the web-based installation wizard to finalize the installation.
Of course, you don’t have to install Invoice Ninja on CentOS 7 if you use one of our Managed CentOS Hosting plans, in which case you can simply ask our expert Linux admins to install Invoice Ninja on CentOS 7 for you. They are available 24×7 and will take care of your request immediately.
PS. If you liked this post on how to install Invoice Ninja on CentOS 7, please share it with your friends on the social networks using the buttons on the left or simply leave a reply below. Thanks