在带有 NGINX 和 MariaDB 的 CentOS 7 上安装 Invoice Ninja – 第 2 部分

介绍

在本教程的第一部分中,我们配置了一个 CentOS 7 服务器,其中包含 发票忍者. 现在,让我们来看看安装、配置和测试这个开票软件的过程。

安装作曲家

Invoice Ninja 需要 Composer 才能运行。 所以,让我们安装它:

# curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
All settings correct for using Composer
Downloading...

Composer (version 1.4.1) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

下载发票忍者

/ 无功 / 万维网

,下载该软件的最新版本,目前版本为 3.1.0:

# cd /var/www
# wget https://download.invoiceninja.com/ninja-v3.1.0.zip

解压存档:

# unzip ninja-v3.1.0.zip
# cd ninja/

使用 Composer 安装:

# composer install --no-dev -o

在里面

忍者

目录,在此安装后一个名为的文件

.env。example

会出现。 重命名和编辑:

# mv .env.example .env
# $EDITOR .env

将第 7-12 行更改如下:

DB_TYPE=mysql
DB_STRICT=false
DB_HOST=localhost
DB_DATABASE=ininjadb
DB_USERNAME=ininjausr
DB_PASSWORD=usr_strong_password

这些是在 MariaDB 中配置的值。

Save,退出,并在

配置/数据库.php

       'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'ininjadb'),
            'username'  => env('DB_USERNAME', 'ininjausr'),
            'password'  => env('DB_PASSWORD', 'usr_strong_password'),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => env('DB_STRICT', false),
        ],

Save,退出并迁移:

# php artisan migrate

下一个:

# php artisan db:seed
# php artisan key:generate

最后一个函数将打印出一个应用程序密钥。 复制它。

为了 example:

Application key [base64:PS4zpjJgREp2INBr+hHHTLotLvBxnPk3IxmwvfIZtmc=] set successfully.

接下来,编辑

配置/app.php

文件:

# $EDITOR config/app.php

在里面

加密密钥

部分编辑该行如下:

'key' => env('APP_KEY', 'base64:PS4zpjJgREp2INBr+hHHTLotLvBxnPk3IxmwvfIZtmc='),

Save, 退出并更改所有者

/ var / www / 忍者

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

配置虚拟主机

要配置虚拟主机,首先要生成一个 SSL 证书(如果公司已经有,则不需要此步骤):

# mkdir -p /etc/nginx/certs
# openssl req -new -x509 -days 365 -nodes -out /etc/nginx/certs/ininja.crt -keyout /etc/nginx/certs/ininja.key
# chmod 600 /etc/nginx/certs/*

为 Invoice Ninja 创建一个新的虚拟主机文件:

# $EDITOR /etc/nginx/conf.d/ininja.conf

在那里,粘贴以下配置:

server {
    listen      443 default;
    server_name mydomain.com www.mydomain.com;

    ssl on;
    ssl_certificate     /etc/nginx/certs/ininja.crt;
    ssl_certificate_key /etc/nginx/certs/ininja.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/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_log  /var/log/nginx/ininja.access.log;
    error_log   /var/log/nginx/ininja.error.log;

    sendfile off;

    location ~ .php$ {
        fastcgi_split_path_info ^(.+.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm-ninja.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;
    }
}

server {
    listen      80;
    server_name mydomain.com www.mydomain.com;

    add_header Strict-Transport-Security max-age=2592000;
    rewrite ^ https://$server_name$request_uri? permanent;
}

Save, 退出并使用以下代码测试配置:

# nginx -t

然后,重新启动 NGINX:

# systemctl restart nginx

配置 SELinux

首先,使用以下命令检查 SELinux 状态:

# getenforce

如果输出是

强制执行

或者

宽容的

,表示启用了 SELinux。

安装它的管理工具,在存储库中可用:

# yum install policycoreutils-python

接下来,让 Invoice Ninja 运行

强制执行

模式,执行以下命令:

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

现在,配置防火墙。 为此,请使用

防火墙

# yum install firewalld
# systemctl start firewalld
# systemctl enable firewalld

现在,使用它为 Invoice Ninja 打开端口:

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

这样,SELinux 和 firewalld 就正确配置了。

结论

最后一步是转到 https://mydomain.com(用您的域更改它)并“以图形方式”完成 Invoice Ninja 配置。 Enter 数据库、电子邮件和其他用户信息。 最后,发票忍者将出现,您就可以开始管理您的发票系统了!

相关阅读:

Posted in: LinuxTags: ,