Статьи

Бесплатное приложение для выставления счетов — FusionInvoice

Обратите внимание, что примерно к моменту публикации этой статьи FusionInvoice 2 был выпущен как коммерческое программное обеспечение и основан на Laravel вместо CodeIgniter, как и в предыдущих версиях. Это, по сути, совершенно другое приложение. Эта статья посвящена более старой, но все еще полностью функциональной версии 1.3.4.


В качестве фрилансера или малого бизнеса ваше время лучше потратить на создание следующего крупного проекта или на удовлетворение требований клиента, чем на отслеживание счетов.

FusionInvoice — это веб-приложение для выставления счетов с открытым исходным кодом, предназначенное для фрилансеров и малого бизнеса. Хотя существует довольно много бесплатных онлайн-приложений для выставления счетов, ни одно из них не дает вам конфиденциальности или гибкости, которые предоставляет FusionInvoice. Управление клиентами, панель инструментов и отчеты, повторяющиеся счета и история счетов — это лишь некоторые из его функций.

FusionInvoice, являющийся проектом с открытым исходным кодом, означает, что вы всегда можете изменить или добавить его функциональные возможности по мере необходимости или даже установить его в частной системе, тем самым ограничивая количество пользователей, имеющих доступ к вашим конфиденциальным данным.

Хотя это приложение с открытым исходным кодом, разработчики посчитали, что сообщество может лучше помочь проекту, предоставив только свой вклад и предложения для функций и улучшений, которые они, как сообщество, хотели бы видеть в проекте, но разработка должна оставаться закрытой. командная работа.

Это может показаться странным подходом к открытому исходному коду проекта, но похоже, что это позволяет команде сосредоточиться на постоянном темпе разработки новых функций и исправления ошибок.

Требования к программному обеспечению

Поскольку FusionInvoice версии 1.3.4 является проектом на основе CodeIgniter, основные требования довольно просты:
— PHP 5.3 или новее
— MySQL 5.0 или новее
— сервер Apache или Nginx

Давайте проверим, соответствует ли ваша система этим требованиям.
Выполните следующую команду в своем терминале, чтобы проверить установленную версию PHP:

$ php -v

Если PHP установлен правильно, вы должны получить вывод, похожий на этот:

 PHP 5.5.3-1ubuntu2.1 (cli) (built: Dec 12 2013 04:24:35) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2013 Zend Technologies
    with Zend OPcache v7.0.3-dev, Copyright (c) 1999-2013, by Zend Technologies
    with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

Теперь давайте проверим версию MySQL, выполнив следующую команду в командной строке MySQL:

 mysql> SHOW VARIABLES LIKE "%version%";

Если сервер MySQL правильно установлен и работает, вы должны увидеть вывод, аналогичный приведенному ниже.

 +-------------------------+-------------------------+
| Variable_name           | Value                   |
+-------------------------+-------------------------+
| innodb_version          | 5.5.34                  |
| protocol_version        | 10                      |
| slave_type_conversions  |                         |
| version                 | 5.5.34-0ubuntu0.13.10.1 |
| version_comment         | (Ubuntu)                |
| version_compile_machine | x86_64                  |
| version_compile_os      | debian-linux-gnu        |
+-------------------------+-------------------------+

В зависимости от настроек вашего сервера номера версий могут отличаться, но выходные данные должны быть одинаковыми.

Хорошо, поскольку требования к этой виртуальной машине выполнены, перейдем к следующему разделу.

Загрузите приложение FusionInvoice

Сначала давайте создадим папку, в которую мы хотели бы установить FusionInvoice, выполнив команду ниже:

 $ cd /var/www/
$ sudo mkdir -m 755 fusioninvoice

Примечание. Я предполагаю, что вы работаете на платформе * nix (если в Windows используйте Vagrant для настройки рабочей среды) и используете конфигурацию Apache / Nginx по умолчанию и в качестве корневой папки базового документа /var/www В противном случае измените путь на тот, который вы используете.

Вы можете скачать версию 1.3.4 с Github . После того, как вы это сделаете, разархивируйте его в папку вашего сайта (www, как упоминалось выше).

Создать базу данных

Теперь нам нужно создать базу данных, в которой FusionInvoice будет хранить свои данные.
Есть два способа сделать это: командная строка или phpMyAdmin.
Я лично рекомендую командную строку, если вы устанавливаете FusionInvoice на производственном или общедоступном сервере.

а) В командной строке mysql выполните следующие команды:

 mysql> CREATE DATABASE `fusion_invoice`;
mysql> CREATE USER 'fusion_invoice'@'localhost' IDENTIFIED BY 'fusion_pass';
mysql> GRANT ALL PRIVILEGES ON `fusion_invoice`.* TO 'fusion_invoice'@'localhost' IDENTIFIED BY 'fusion_pass';

б) Используя phpMyAdmin, перейдите на вкладку USERSAdd user В новой пользовательской форме заполните все поля и убедитесь, что вы отметили флажок Create database with same name and grant all privileges

** Примечание. Обязательно примите ВСЕ необходимые меры предосторожности и измените разрешения нового пользователя соответствующим образом, если вы устанавливаете приложение FusionInvoice на всемирно доступном сервере.

Это оно! Теперь мы готовы запустить модуль установки FusionInvoice.

Начальная настройка FusionInvoice

Чтобы начать процесс установки, нам нужно получить доступ к модулю /setup

 http://[domain-name]/[fusioninvoice]/index.php/setup

** Примечание: в зависимости от конфигурации вашего сервера, URL может быть немного другим. Идея состоит в том, что вам нужно отправить все ваши запросы, которые не отображаются в физический файл, на index.php Если вы не знаете, как создать виртуальный хост или перенаправить ваши запросы в index.php

На шаге 2 система установки FusionInvoice предоставляет нам список файлов и папок, которые должны быть доступны для записи.

Давайте исправим это, выполнив следующие команды из терминала:

 $ cd /var/www/fusioninvoice
$ chmod 777 -R uploads/
$ chmod 777 application/config/database.php 
$ chmod 777 -R application/helpers/mpdf/tmp/

Если вы обновите страницу, вы должны увидеть все необходимые условия для правильной настройки.

На шаге 3 мы должны предоставить FusionInvoice подробности соединения с сервером базы данных.

Если соединение установится успешно на следующих 2 страницах, FusionInvoice сообщит вам, что таблицы базы данных были правильно установлены и обновлены.

На последнем этапе вам будет предложено создать базового пользователя, учетную запись администратора.

После завершения этого шага вы успешно установили FusionInvoice в вашей системе.

Теперь вы можете войти в систему и начать создавать эти счета 🙂

Создайте виртуальный хост на вашем сервере

Этот необязательный шаг проведет вас через процесс создания базового виртуального хоста на Apache или Nginx.

** Важное примечание. Хотя многие параметры виртуального хоста, представленные в этой статье, также используются в рабочей среде, они являются лишь отправной точкой и никоим образом не должны рассматриваться как достаточные с точки зрения безопасности для рабочего сервера. Пожалуйста, убедитесь, что вы приняли все необходимые меры предосторожности для защиты вашего сервера.

а) Настройка виртуального хоста Apache

Во-первых, давайте удостоверимся, что в Apache активен модуль mod_rewrite Вы можете проверить это, выполнив следующую команду:

 $ apache2ctl -t -M

Приведенная выше команда выведет список всех модулей, загруженных сервером Apache2. Если модуль mod_rewrite
rewrite_module (shared)

Если вышеуказанной строки нет, выполните следующую команду в своем терминале, чтобы включить модуль:

 $ sudo a2enmod rewrite

Теперь, когда модуль mod_rewrite активен, нам нужно создать файл конфигурации для нашего нового хоста. Вы можете сделать это, выполнив следующую команду в своем терминале:

 $ sudo vim /etc/apache2/sites-available/fusion_invoice.dev.conf

Теперь скопируйте приведенный ниже код в ваш конфигурационный файл и отредактируйте пути в соответствии с вашими:

     <VirtualHost *:80>
            ServerAdmin webmaster@localhost
            DocumentRoot /var/www/fusioninvoice

            ServerName fusion.invoice.dev #change this setting according to your domain name

            DirectoryIndex index.php

            <Directory /var/www/fusioninvoice>
                RewriteEngine On
                RewriteBase /

                RewriteCond %{REQUEST_FILENAME} !-f
                RewriteCond %{REQUEST_FILENAME} !-d
                RewriteRule ^(.*)$ index.php [QSA,L]
            </Directory>

            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>

Теперь сохраните и закройте редактор и выполните следующую команду в своем терминале:

 $ sudo a2ensite fusion_invoice.dev.conf
$ sudo service apache2 restart

Это все. Теперь вы можете использовать новый URL-адрес fusion.invoice.dev вместо localhost или IP-адрес виртуальной машины.

б) Настройка виртуального хоста Nginx

Давайте создадим файл конфигурации для нашего нового виртуального хоста, выполнив следующую команду в вашем терминале:

 $ sudo vim /etc/nginx/sites-available/fusion_invoice.dev.conf

Теперь скопируйте приведенный ниже код в ваш конфигурационный файл и отредактируйте пути в соответствии с вашими:

 server {
    listen        80;

    server_name   fusion.invoice.dev; #change this setting according to your domain name

    root          /var/www/fusioninvoice; # path to fusioninvoice's install directory

    error_log     /var/log/nginx/fusion.error.log debug;

    access_log    /var/log/nginx/fusion.access.log;

    index         index.php;

    location ~ ^(.+\.php)(.*)$ {
      fastcgi_split_path_info  ^(.+\.php)(.*)$;
      fastcgi_pass       unix:/var/run/php5-fpm.sock;
      include            fastcgi_params;
      fastcgi_param      HTTPS off; #this is required for development mode
      fastcgi_param      PATH_INFO $fastcgi_path_info;
      fastcgi_param      SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    }

    location / {
      try_files          $uri $uri/ /index.php?$args;
    }
}

Теперь, когда мы создали конфигурацию, в * nix системах вам нужно создать символическую ссылку из текущего местоположения файла в папку /etc/nginx/sites-enabled

Вы можете создать символическую ссылку, выполнив следующую команду в своем терминале:

 $ sudo ln -s /etc/nginx/sites-available/fusion_invoice.dev.conf  /etc/nginx/sites-enabled/fusion_invoice.dev.conf

Опять же, измените все пути, чтобы соответствовать вашему. Теперь давайте перезапустим сервер Nginx для загрузки нашей новой конфигурации виртуального хоста.

 $ sudo service nginx restart

Если все прошло хорошо, теперь вы сможете получить доступ к вашему новому виртуальному хосту, используя имя сервера вместо IP-адреса машины или локального хоста.

Удалите запись «index.php» из URL

Теперь, когда мы создали виртуальный хост, давайте также удалим index.php
Для этого нам просто нужно открыть файл config.php/var/www/fusioninvoice/application/config/

 $config['index_page'] = 'index.php';

Теперь просто удалите значение index.php

Вывод

Обилие функций, относительно низкий уровень технических знаний, необходимых для настройки и управления приложением, а также активное сообщество, готовое помочь, делают FusionInvoice отличным инструментом для любого фрилансера или владельца малого бизнеса, который хочет потратить время на проект, а не на отслеживание счетов.