如何在CentOS 7上安装Invoice Ninja

发票忍者是免费和开源的基于网络的软件,用于发票,付款,时间跟踪等等。 您可以在几秒钟内在线创建发票,与付款网关(如条纹,PayPal和WePay)集成。 发票忍者可以将您的实时发票显示为PDF文件,您可以设置自己的公司徽标并使用自定义发票模板。 发票忍者基于PHP,使用Laravel Framework构建,可以安装在Linux,Windows和Mac上。

在本教程中,我将向您介绍如何在CentOS 7服务器上安装和配置Invoice Ninja。 我将使用Nginx作为Web服务器和MariaDB作为数据库系统。

前提条件

  • CentOS 7服务器
  • 根权限

第1步 - 安装Nginx

在这一步中,我们将安装Nginx Web服务器。 使用您的ssh rot帐户连接到您的服务器。

ssh root@192.168.33.15

在安装Nginx之前,您必须在CentOS系统上安装Epel存储库。

yum -y install epel-release

现在,您可以从epel存储库中下载yum命令来安装Nginx:

yum -y install nginx

安装完成后,启动Nginx并使其在启动时启动。

systemctl start nginx
systemctl enable nginx

通过检查Nginx(端口80)使用的端口,确保Nginx正在运行。

netstat -plntu

注意:

如果没有找到netstat命令,可以这样安装net-tools:

yum -y install net-tools

第2步 - 安装和配置MariaDB服务器

安装Nginx之后,我们需要在系统上安装mariadb-server。 它在CentOS存储库中可用。 使用以下命令安装MariaDB所需的mariadb-server和所有软件包。

yum install -y mariadb-server

启动mariadb服务并使其启动时使用systemctl命令启动。

systemctl start mariadb
systemctl enable mariadb

MariaDB已启动,现在您可以使用'mysql_secure_installation'命令设置MariaDB的根密码。

mysql_secure_installation

设置您的MariaDB root密码。

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 shell和root用户。

mysql -u root -p
TYPE YOUR ROOT PASSWORD

你会看到MySQL的shell。

接下来,我们需要在我们打开的MySQL shell中为Invoice Ninja创建一个新的数据库和一个新的用户。 我们将创建一个名为“ ninjadb ”的新数据库,一个新用户' ninja ',密码为' aqwe123 '。 请选择不同的安全密码进行安装。

使用下面的MySQL查询创建所有内容:创建一个新的数据库,创建一个新的用户和密码,使用密码为新用户授予数据库访问权限。

create database ninjadb;
create user ninja@localhost identified by 'aqwe123';
grant all privileges on ninjadb.* to ninja@localhost identified by 'aqwe123';
flush privileges;

已经安装了MariaDB,并且已经创建了一个用于Invoice Ninja的新数据库和用户。

第3步 - 安装和配置PHP7.0-FPM

发票忍者基于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

现在,您可以从webtatic存储库安装Invoice Ninja所需的PHP7.0-FPM和其他PHP扩展。

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

安装完成后,使用vim编辑php.ini配置文件。

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

而不是一个端口,我们将使用一个socket文件为php-fpm。 将聆听行更改为“ /var/run/php/php-fpm.sock ”。

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

取消注释套接字文件配置,所有者,组和权限。

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

取消注释第366-370行中的php-fpm环境变量。

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。 首先,在系统上安装解压缩。

yum -y install unzip

为Invoice Ninja webroot文件创建一个新目录。

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

用wget命令下载Invoice Ninja。

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

提取发票忍者zip文件并转到“ 忍者 ”目录。

unzip ninja-v3.1.0.zip
cd ninja/

对于Laravel项目,我们需要安装Composer,一个用于PHP的Dependency Manager。

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

现在可以使用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数据库,请转到第55行的MySQL设置。

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

保存并退出。

所有配置文件都被编辑,接下来使用下面的命令准备数据库。

php artisan migrate

系统会要求您运行命令,键入“yes”,然后按Enter键。

接下来,将数据库与所有记录进行种子。

php artisan db:seed

键入“是”,然后按Enter确认。

生成应用程序密钥。

php artisan key:generate

您将看到应用程序密钥。

用vim编辑app.php文件。

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/

发票忍者已经配置并准备好进行安装。

第5步 - 配置SSL和虚拟主机

在此步骤中,我们将使用openssl命令生成SSL证书文件,并为Invoice Ninja创建新的虚拟主机配置。 如果您在实时服务器上,您可以使用免费的SSL来加密。

为SSL文件创建一个新的“cert”目录。

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 Web服务器。

systemctl restart nginx

发票忍者虚拟主机配置已创建。

第6步 - 配置SELinux和Firewalld

如果您的SELinux已关闭,则可以跳过此步骤并开始配置Firewalld。 在此步骤中,我们将配置SELinux和Firewalld for Invoice Ninja。 检查您的SELinux状态,并确保安装防火墙。

使用以下命令检查SELinux状态。

getenforce

如果您的SELinux已启用,您将看到“执行”或“允许”的结果。

现在从存储库安装SELinux管理工具。

yum -y install policycoreutils-python

并执行下面的命令,允许在执行模式下在Ininux下运行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/'

接下来,我们需要打开服务器端口,因此可以从外部访问Invoice Ninja。

确保firewalld已安装在您的系统上,或者您可以使用yum命令进行安装。

yum -y install firewalld

启动firewalld并启用它启动引导时间。

systemctl start firewalld
systemctl enable firewalld

现在我们需要为Invoice Ninja打开HTTP和HTTPS端口。 运行以下命令打开端口。

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

配置了SELinux和Firewalld。

第7步 - 测试

打开您的网络浏览器并输入发票忍者URL,在我的情况下: ninja.co

您将被重定向到https连接和设置页面。

输入requestd配置详细信息,应用程序设置,数据库连接,电子邮件设置,用户详细信息,并检查发票忍者TOS。

点击“ 提交 ”,您将被重定向到发票忍者的登录页面。

输入您的电子邮件和密码,然后按“ 登录 ”。

您将看到发票忍者信息中心。

发票忍者设置页面。

Invoice Ninja已经在CentOS 7上安装了Nginx和MariaDB。

参考文献

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏