云网牛站
所在位置:首页 > Linux云服务器 > 使用Apache/Nginx在Ubuntu 18.04上安装InvoiceNinja的方法

使用Apache/Nginx在Ubuntu 18.04上安装InvoiceNinja的方法

2019-04-24 21:30:53作者:乐肖肖稿源:云网牛站

本文介绍使用Apache/Nginx在Ubuntu 18.04 Server上安装InvoiceNinja的方法,你需要一台至少具有512MB RAM的Linux服务器,同时要搭载PHP和MySQL/MariaDB。

 

设置LAMP或LEMP的参考文章

在Ubuntu 18.04服务器上安装LAMP Stack的方法[Apache、MySQL、PHP]

在Ubuntu 18.04 Server中安装LEMP的方法[Nginx、MariaDB、PHP7.2]

 

一、在Ubuntu 18.04上下载InvoiceNinja的Zip文件

通过SSH登录你的Ubuntu 18.04服务器,然后运行以下命令将最新版本的InvoiceNinja zip文件下载到你的服务器上:

wget -O invoice-ninja.zip https://download.invoiceninja.com/

下载后,进行解压缩文件:

sudo apt install unzip

sudo unzip invoice-ninja.zip -d /var/www/

-d选项指定目标目录,InvoiceNinja网络文件将被解压缩到/var/www/ninja,为了更好地识别每个目录,可以将其重命名为invoice-ninja:

sudo mv /var/www/ninja /var/www/invoice-ninja

然后我们需要将此目录的所有者更改为www-data,以便Web服务器可以写入此目录:

sudo chown www-data:www-data /var/www/invoice-ninja/ -R

我们还需要更改存储目录的权限:

sudo chmod 755 /var/www/invoice-ninja/storage/ -R

 

二、在MariaDB中创建数据库和用户

使用以下命令登录MariaDB数据库,由于MariaDB现在使用unix_socket插件来验证用户登录,因此无需输入MariaDB root密码(参考:快速重置MariaDB或是MySQL的root密码),我们只需要在mysql命令前加上sudo:

sudo mysql

然后为Invoice Ninja创建一个数据库,本教程将数据库命名为invoiceninja,你可以自定义名称:

create database invoiceninja;

创建数据库用户,同样可以为此用户使用你的首选名称,用你的首选密码替换密码,注意替换ninja和your-password:

create user ninja@localhost identified by 'your-password';

授予此用户invoiceninja数据库的所有权限:

grant all privileges on invoiceninja.* to ninja@localhost;

刷新权限并退出:

flush privileges;

exit;

 

三、设置Web服务器

我们可以使用Apache或Nginx Web服务器。

1、Apache

如果使用Apache,请为Invoice Ninja创建一个主机文件:

sudo nano /etc/apache2/sites-available/invoice-ninja.conf

将以下文本放入文件中,将invoice.yourdomain.com替换为实际数据,不要忘记为域名设置A记录(请注意,Web根目录设置为/var/www/invoice-ninja/public/,而不是/var/www/invoice-ninja/):

<VirtualHost *:80>

ServerName invoice.yourdomain.com

DocumentRoot /var/www/invoice-ninja/public

<Directory /var/www/invoice-ninja/public>

DirectoryIndex index.php

Options +FollowSymLinks

AllowOverride All

Require all granted

</Directory>

ErrorLog ${APACHE_LOG_DIR}/invoice-ninja.error.log

CustomLog ${APACHE_LOG_DIR}/invoice-ninja.access.log combined

</VirtualHost>

保存并关闭文件,然后启用此主机:

sudo a2ensite invoice-ninja.conf

我们需要启用重写模块:

sudo a2enmod rewrite

重新启动Apache以使更改生效:

sudo systemctl restart apache2

现在访问invoice.yourdomain.com,将被重定向到Invoice Ninja设置向导页面(invoice.yourdomain.com/setup),如果看到默认的Apache页面而不是安装向导,则需要禁用默认的主机:

sudo a2dissite 000-default.conf

并重新启动Apache。

在设置向导中输入任何信息之前,我们需要启用HTTPS。

2、Nginx

如果使用Nginx,请在/etc/nginx/conf.d/目录中创建invoice-ninja.conf文件:

sudo nano /etc/nginx/conf.d/invoice-ninja.conf

将以下文本放入文件中,将invoice.yourdomain.com替换为实际数据,不要忘记为域名设置A记录(请注意,Web根目录设置为/var/www/invoice-ninja/public/,而不是/var/www/invoice-ninja/):

server {

listen      80;

server_name invoice.yourdomain.com;

root /var/www/invoice-ninja/public/;

index index.php index.html index.htm;

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/invoiceninja.access.log;

error_log   /var/log/nginx/invoiceninja.error.log;

location ~ \.php$ {

fastcgi_split_path_info ^(.+\.php)(/.+)$;

fastcgi_pass unix:/run/php/php7.2-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配置:

sudo nginx -t

如果测试成功,请重新加载Nginx以使更改生效:

sudo systemctl reload nginx

现在访问invoice.yourdomain.com,将被重定向到Invoice Ninja设置向导页面(invoice.yourdomain.com/setup),在设置向导中输入任何信息之前,我们需要启用HTTPS。

 

四、启用HTTPS

要加密HTTP流量,我们可以通过安装Let's Encrypt的免费TLS证书来启用HTTPS,运行以下命令在Ubuntu 18.04服务器上安装Let的加密客户端(certbot):

sudo apt install certbot

1、如果你使用Nginx,那么你还需要安装Certbot Nginx插件:

sudo apt install python3-certbot-nginx

接下来,运行以下命令以获取并安装TLS证书,请替换you@example.com和invoice.yourdomain.com:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d invoice.yourdomain.com

2、如果使用Apache,请安装Certbot Apache插件:

sudo apt install python3-certbot-apache

并运行此命令以获取并安装TLS证书,请替换you@example.com和invoice.yourdomain.com:

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d invoice.yourdomain.com

说明:

--nginx:使用nginx插件。

--apache:使用Apache插件。

--agree-tos:同意服务条款。

--redirect:通过301重定向强制HTTPS。

--hsts:将Strict-Transport-Security标头添加到每个HTTP响应中,强制浏览器始终对域使用TLS,防御SSL/TLS剥离。

--staple-ocsp:启用OCSP Stapling。

现在应该获取并自动安装证书了,如下图:

使用Apache/Nginx在Ubuntu 18.04上安装InvoiceNinja的方法

 

五、安装PHP模块

运行以下命令以安装InvoiceNinja所需或推荐的PHP模块:

sudo apt install php-imagick php7.2-common php7.2-gd php7.2-json php7.2-curl php7.2-zip php7.2-xml php7.2-mbstring php7.2-bz2 php7.2-intl php7.2-gmp

参考:在Ubuntu 18.04/16.04中安装PHP 7.3/7.2/7.1/7.0和PHP 7模块的方法

然后重启Apache(如果使用Nginx,则无需重新启动Nginx):

sudo systemctl restart apache2

如果未安装这些模块,则登录后将看到以下错误:

Whoops, looks like something went wrong.

 

六、使用安装向导完成安装

现在转到invoice.yourdomain.com并输入数据库信息,SMTP设置并创建管理员用户:

使用Apache/Nginx在Ubuntu 18.04上安装InvoiceNinja的方法

创建管理员用户后,就能正常登录InvoiceNinja控制中心,如下图:

使用Apache/Nginx在Ubuntu 18.04上安装InvoiceNinja的方法

至此,你已成功在Ubuntu 18.04服务器上安装InvoiceNinja了。

 

相关主题

网站从HTTP升级成HTTPS完全配置教程

精选文章
热门文章