Поиск по сайту:

Как установить Invoice Ninja на CentOS 7


На этой странице

  1. Шаг 1. Установите Nginx
  2. Шаг 2. Установка и настройка сервера MariaDB
  3. Шаг 3. Установка и настройка PHP7.0-FPM
  4. Шаг 4. Установите и настройте Invoice Ninja
  5. Шаг 5. Настройка SSL и виртуального хоста
  6. Шаг 6. Настройка SELinux и Firewalld
  7. Шаг 7. Тестирование
  8. Ссылки

Invoice Ninja — это бесплатное веб-приложение с открытым исходным кодом для выставления счетов, платежей, отслеживания рабочего времени и многого другого. Вы можете создавать счета онлайн за считанные секунды, интегрироваться с платежными шлюзами, такими как Stripe, PayPal и WePay. Invoice Ninja может показать вам счет в реальном времени в виде файла PDF, вы можете настроить собственный логотип компании и использовать пользовательские шаблоны счетов. Invoice Ninja основан на PHP, построен с помощью Laravel Framework и может быть установлен на Linux, Windows и Mac.

В этом руководстве я покажу вам, как установить и настроить Invoice Ninja на сервере CentOS 7. Я буду использовать Nginx в качестве веб-сервера и MariaDB в качестве системы базы данных.

Предпосылка

  • Сервер CentOS 7
  • Привилегии root

Шаг 1 — Установите Nginx

На этом этапе мы установим веб-сервер Nginx. Подключитесь к вашему серверу с вашей учетной записью ssh rot.

ssh 

Перед установкой Nginx вы должны установить репозиторий Epel в своей системе CentOS.

yum -y install epel-release

Теперь вы можете установить Nginx с помощью приведенной ниже команды yum из репозитория epel:

yum -y install nginx

Когда установка будет завершена, запустите Nginx и включите его во время загрузки.

systemctl start nginx
systemctl enable nginx

Убедитесь, что Nginx работает, проверив порт, используемый Nginx (порт 80).

netstat -plntu

Примечание:

Если команда netstat не найдена, вы можете установить net-tools следующим образом:

yum -y install net-tools

Шаг 2 — Установите и настройте сервер MariaDB

После установки Nginx нам нужно установить mariadb-сервер в системе. Он доступен в репозитории CentOS. Установите mariadb-server и все пакеты, необходимые для MariaDB, с помощью приведенной ниже команды.

yum install -y mariadb-server

Запустите службу mariadb и включите ее запуск во время загрузки с помощью команды systemctl.

systemctl start mariadb
systemctl enable mariadb

MariaDB запущена, теперь вы можете установить пароль root для MariaDB с помощью команды mysql_secure_installation.

mysql_secure_installation

Установите корневой пароль 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

Если все сделано, вы можете попробовать подключиться к оболочке MySQL и пользователю root.

mysql -u root -p
TYPE YOUR ROOT PASSWORD

Вы увидите оболочку MySQL.

Далее нам нужно создать новую базу данных и нового пользователя для Invoice Ninja в открытой оболочке MySQL. Мы создадим новую базу данных с именем ninjadb, нового пользователя ninja с паролем aqwe123. Выберите другой безопасный пароль для установки.

Создайте все с помощью запросов MySQL ниже: создайте новую базу данных, создайте нового пользователя и пароль, предоставьте доступ к базе данных новому пользователю с паролем.

create database ninjadb;
create user identified by 'aqwe123';
flush privileges;

Установили MariaDB и создали новую базу данных и пользователя для Invoice Ninja.

Шаг 3 — Установите и настройте PHP7.0-FPM

Invoice Ninja основан на PHP, поэтому нам нужно установить его в системе. Я буду использовать PHP7.0-FPM для установки Invoice Ninja.

В репозитории CentOS по умолчанию нет PHP7.0, поэтому нам нужно добавить в систему новый репозиторий PHP7.0. Я буду использовать репозиторий webtatic.

Добавьте репозиторий PHP7.0 в систему.

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

Теперь вы можете установить PHP7.0-FPM и другие расширения PHP, необходимые Invoice Ninja, из репозитория 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

Когда установка будет завершена, отредактируйте файл конфигурации php.ini с помощью vim.

vim /etc/php.ini

Раскомментируйте строку cgi.fix_pathinfo ниже и измените значение на 0.

cgi.fix_pathinfo=0

Сохраните файл и выйдите из vim.

Затем отредактируйте файл конфигурации PHP-FPM.

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

Измените пользователя и группу в строках 8 и 10 на группу nginx.

user = nginx
group = nginx

Вместо порта мы будем использовать файл сокета для php-fpm. Измените строку прослушивания на /var/run/php/php-fpm.sock.

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

Раскомментируйте конфигурацию файла сокета, владельца, группу и разрешение.

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

Раскомментируйте переменные среды php-fpm в строке 366-370.

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

Сохраните файл и выйдите из редактора.

Теперь нам нужно создать новый каталог сеанса PHP и изменить владельца на пользователя и группу nginx.

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

Создайте новый каталог для файла сокета и измените разрешение на пользователя и группу nginx.

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

Затем запустите PHP7.0-FPM и добавьте его для запуска во время загрузки.

systemctl start php-fpm
systemctl enable php-fpm

PHP-FPM запущен. Теперь вы можете проверить это с помощью приведенной ниже команды, и вы увидите файл сокета PHP.

netstat -pl

PHP7.0-FPM и все расширения, необходимые для Invoice Ninja, установлены.

Шаг 4 — Установите и настройте Invoice Ninja

На этом этапе мы загрузим и настроим Invoice Ninja. Во-первых, установите unzip в вашей системе.

yum -y install unzip

Создайте новый каталог для веб-файлов Invoice Ninja.

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

Загрузите Invoice Ninja с помощью команды wget.

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

Извлеките ZIP-файл Invoice Ninja и перейдите в каталог ninja.

unzip ninja-v3.1.0.zip
cd ninja/

Для проекта Laravel нам нужно установить composer, менеджер зависимостей для PHP.

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

Теперь вы можете использовать команду composer.

Затем установите зависимости Invoice Ninja с помощью команды композитора ниже.

composer install --no-dev -o

  • --no-dev: отключает установку пакетов require-dev.
  • -o: оптимизировать автозагрузчик во время дампа автозагрузчика.

Когда установка зависимости завершена, скопируйте файл .env и отредактируйте его с помощью vim.

cp .env.example .env
vim .env

Измените значение параметров базы данных ниже.

DB_DATABASE=ninjadb
DB_USERNAME=ninja
DB_PASSWORD=aqwe123

Сохранить и выйти.

Затем отредактируйте конфигурацию базы данных в каталоге config.

vim config/database.php

Мы используем базу данных MariaDB/MySQL, перейдите к настройкам MySQL в строке 55.

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

Сохранить и выйти.

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

php artisan migrate

Вам будет предложено запустить команду, введите yes и нажмите Enter.

Затем заполните базу данных всеми записями.

php artisan db:seed

Введите yes и нажмите Enter для подтверждения.

Сгенерируйте ключ приложения.

php artisan key:generate

Вы увидите ключ приложения.

Отредактируйте файл app.php с помощью vim.

vim config/app.php

Перейдите к строке APP_KEY 85 и вставьте сгенерированный ключ (приведенный ниже ключ является примером, вместо этого используйте ключ, полученный из приведенной выше команды).

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

Сохранить и выйти.

Наконец, измените владельца каталога /var/www/ninja на пользователя и группу nginx.

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

Invoice Ninja настроен и готов к установке.

Шаг 5. Настройте SSL и виртуальный хост

На этом этапе мы создадим файл SSL-сертификата с помощью команды openssl и создадим новую конфигурацию виртуального хоста для Invoice Ninja. Если вы находитесь на действующем сервере, вы также можете использовать бесплатный SSL от Lets Encrypt.

Создайте новый каталог сертификатов для файлов SSL.

mkdir -p /etc/nginx/cert/

Запустите команду OpenSSL ниже, чтобы сгенерировать файлы сертификатов.

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

Измените разрешение файлов сертификатов на 600.

chmod 600 /etc/nginx/cert/*

Затем перейдите в каталог Nginx и создайте новый файл конфигурации виртуального хоста с именем ninja.conf.

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

Вставьте конфигурацию виртуального хоста ниже.

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

Сохранить и выйти.

Теперь протестируйте конфигурацию Nginx и убедитесь в отсутствии ошибок.

nginx -t

Перезапустите веб-сервер Nginx.

systemctl restart nginx

Создана конфигурация виртуального хоста Invoice Ninja.

Шаг 6 — Настройте SELinux и Firewalld

Если ваш SELinux выключен, вы можете пропустить этот шаг и приступить к настройке Firewalld. На этом этапе мы настроим SELinux и Firewalld для Invoice Ninja. Проверьте свой статус SELinux и убедитесь, что firewalld установлен.

Проверьте статус SELinux с помощью приведенной ниже команды.

getenforce

Если ваш SELinux включен, вы увидите результаты Enforcing или Permissive.

Теперь установите инструменты управления SELinux из репозитория.

yum -y install policycoreutils-python

И выполните приведенные ниже команды, чтобы Invoice Ninja работал под SELinux в принудительном режиме.

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

Затем нам нужно открыть порт сервера, чтобы Invoice Ninja мог быть доступен извне.

Убедитесь, что firewalld установлен в вашей системе, или вы можете установить его с помощью команды yum.

yum -y install firewalld

Запустите firewalld и включите его во время загрузки.

systemctl start firewalld
systemctl enable firewalld

Теперь нам нужно открыть порты HTTP и HTTPS для Invoice Ninja. Запустите приведенные ниже команды, чтобы открыть порты.

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

SELinux и Firewalld настроены.

Шаг 7 — Тестирование

Откройте веб-браузер и введите URL-адрес Invoice Ninja, в моем случае: ninja.co.

Вы будете перенаправлены на https-соединение и страницу настройки.

Введите запрошенные данные конфигурации, настройки приложения, подключение к базе данных, настройки электронной почты, сведения о пользователе и проверьте TOS Invoice Ninja.

Нажмите «Отправить», и вы будете перенаправлены на страницу входа в Invoice Ninja.

Введите адрес электронной почты и пароль, затем нажмите ВХОД.

Вы увидите панель инструментов Invoice Ninja.

Страница настроек счета-фактуры Ninja.

Invoice Ninja был установлен с Nginx и MariaDB на CentOS 7.

использованная литература

  • https://github.com/Lykegenes/vps-toolkit/blob/master/apps/invoice-ninja-nginx