Вступление
Invoice Ninja - это бесплатное веб-приложение с открытым исходным кодом, которое можно использовать для выставления счетов, платежей, отслеживания времени и многого другого. Это лучшее решение для выставления счетов и выставления счетов клиентам. Вы можете легко создавать и отправлять счета онлайн в считанные секунды. Счет-ниндзя позволяет создавать собственные счета-фактуры и отображать фактические счета-фактуры в виде файла PDF.
В этом уроке я объясню, как установить Invoice Ninja на сервер Ubuntu 16.04.
Предпосылки
- Экземпляр сервера Ubuntu 16.04 с 2 ГБ ОЗУ.
- Пользователь sudo с правами root.
- Вам нужно будет знать основной IP-адрес вашего экземпляра сервера. В этом уроке я буду использовать
192.168.0.227
.
Шаг 1: Обновите систему
Перед установкой любых пакетов на экземпляр сервера Ubuntu рекомендуется обновить систему. Войдите на свой сервер через SSH как пользователь sudo и выполните следующую команду:
sudo apt-get update -y
sudo apt-get upgrade -y
sudo shutdown -r now
Шаг 2: Установите стек LEMP
Перед началом вам необходимо настроить стек LEMP (Nginx, MariaDB и PHP) на вашем сервере.
Сначала установите Nginx и MariaDB с помощью следующей команды:
sudo apt-get install nginx mariadb-server -y
После завершения установки запустите службы Nginx и MariaDB и включите их при загрузке:
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl start mysql
sudo systemctl enable mysql
Далее вам потребуется PHP 7 и PHP-FPM для установки Invoice Ninja.
Вы можете установить PHP-FPM и другие необходимые расширения PHP с помощью следующей команды:
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
После завершения установки вам нужно будет изменить php.ini
файл конфигурации:
sudo nano /etc/php/7.0/fpm/php.ini
Измените следующую строку:
cgi.fix_pathinfo=0
Сохраните и закройте файл.
По умолчанию установка MariaDB не была защищена. Вам нужно будет обеспечить его. Вы можете сделать это, запустив mysql_secure_installation script
.
sudo mysql_secure_installation
Ответьте на все вопросы, как показано ниже:
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 с помощью следующей команды:
mysql -u root -p
Введите пароль пользователя root и нажмите «enter», вы увидите оболочку MySQL (MariaDB).
Создайте новую базу данных и нового пользователя для 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
Сконфигурируйте пул PHP-FPM для пользователя Nginx:
sudo nano /etc/php/7.0/fpm/pool.d/www-data.conf
Добавьте следующие строки:
[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 = /
После завершения сохраните и закройте файл, затем перезапустите PHP-FPM, чтобы применить эти изменения.
systemctl restart php7.0-fpm
Вы можете загрузить последнюю стабильную версию Invoice Ninja из репозитория GitHub с помощью следующей команды:
cd /var/www/html/
sudo git clone https://github.com/hillelcoren/invoice-ninja.git ninja
Вам также необходимо установить Composer, менеджер зависимостей для PHP. Вы можете установить его с помощью следующей команды:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/bin --filename=composer
Затем установите все зависимости Invoice Ninja, используя composer
команду, как показано ниже:
cd /var/www/html/ninja
sudo composer install --no-dev -o
После завершения установки переименуйте .env
файл и внесите некоторые изменения.
sudo mv .env.example .env
sudo nano .env
Измените строки, как показано ниже:
DB_DATABASE=ninja_db
DB_USERNAME=ninja
DB_PASSWORD=password
Сохраните файл, когда вы закончите, затем выполните следующую команду, чтобы подготовить базу данных:
sudo php artisan migrate
Вам будет предложено запустить команду, введите «да» и нажмите «ввод».
Затем заполните базу данных записями, как показано ниже:
sudo php artisan db:seed
Введите «да» и нажмите «ввод».
Далее, измените владельца /var/www/html/ninja
каталога:
sudo chown -R www-data:www-data /var/www/html/ninja/
Затем вам нужно будет создать сертификат SSL и создать новую конфигурацию виртуального хоста для Invoice Ninja.
Сначала создайте каталог для SSL:
sudo mkdir -p /etc/nginx/cert/
Затем создайте сертификат SSL с помощью следующей команды:
sudo openssl req -new -x509 -days 365 -nodes -out /etc/nginx/cert/ninja.crt -keyout /etc/nginx/cert/ninja.key
Дайте соответствующие разрешения на файл сертификата.
sudo chmod 600 /etc/nginx/cert/*
Создайте новый файл конфигурации виртуального хоста внутри /etc/nginx/
каталога.
sudo nano /etc/nginx/conf.d/ninja.conf
Добавьте следующие строки:
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;
}
}
Сохраните и закройте файл. Затем включите виртуальный хост с помощью следующей команды.
sudo ln -s /etc/nginx/sites-available/ninja /etc/nginx/sites-enabled/
Наконец, перезапустите веб-сервер Nginx.
sudo systemctl restart nginx
Шаг 7: Доступ к счет-фактуре ниндзя
Прежде чем получить доступ к веб-интерфейсу Invoice Ninja, вам необходимо разрешить службы HTTP и HTTPS через брандмауэр UFW. Выполните следующие команды, чтобы открыть эти порты:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Наконец, откройте ваш веб-браузер и получите доступ к URL https://192.168.0.227
. Затем вы можете выполнить необходимые шаги для завершения установки.
Поздравляем! Мы успешно установили Invoice Ninja с Nginx и MariaDB на сервере Ubuntu 16.04.