Как установить Invoice Ninja на CentOS 7
На этой странице
- Шаг 1. Установите Nginx
- Шаг 2. Установка и настройка сервера MariaDB
- Шаг 3. Установка и настройка PHP7.0-FPM
- Шаг 4. Установите и настройте Invoice Ninja
- Шаг 5. Настройка SSL и виртуального хоста
- Шаг 6. Настройка SELinux и Firewalld
- Шаг 7. Тестирование
- Ссылки
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