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

设置LAMP或LEMP的参考文章

一、在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/):

ServerName invoice.yourdomain.com

DocumentRoot /var/www/invoice-ninja/public

DirectoryIndex index.php

Options +FollowSymLinks

AllowOverride All

Require all granted

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

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

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

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。

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

五、安装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

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

sudo systemctl restart apache2

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

Whoops, looks like something went wrong.

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

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

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

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

相关主题

ubuntu系统配置nijia_使用Apache/Nginx在Ubuntu 18.04上安装InvoiceNinja的方法相关推荐

  1. 在Ubuntu 18.04上安装Nginx

    NGINX pronounced as engine-x is an open source and popular HTTP server and can be configured to act ...

  2. 如何在Ubuntu 18.04上安装Apache Kafka

    介绍 (Introduction) Apache Kafka is a popular distributed message broker designed to efficiently handl ...

  3. 如何在Ubuntu 18.04上安装Elasticsearch Logstash Kibana(Elastic Stack)

    In this guide, you will learn to install Elastic stack on Ubuntu 18.04. Elastic stack, formerly know ...

  4. 如何在Ubuntu 18.04上安装OpenCV

    本教程介绍了如何在Ubuntu 18.04上安装OpenCV. OpenCV(开源计算机视觉库)是一个开源计算机视觉库,具有C ++,Python和Java的绑定.它的用途非常广泛,包括医学图像分析, ...

  5. php7安装flarum,如何在Ubuntu 18.04上安装Flarum社区软件

    如何在Ubuntu 18.04上安装Flarum社区软件 Flarum是一款用PHP和Mithril.js编写的免费开源软件. 它是一款简单,快速,美观且反应灵敏的软件,专门设计用于跨平台的一致性和直 ...

  6. joomla linux 安装教程,如何在Ubuntu 18.04上安装Joomla内容管理系统

    在创建网站时,使网站正常运行的最简单方法之一是使用CMS(内容管理系统),该软件通常附带捆绑的PHP代码以及所需的所有主题和插件. 除WordPress外,另一个受欢迎的CMS是Joomla. Joo ...

  7. 如何在Ubuntu 18.04上安装ERPNext堆栈

    The author selected Software in the Public Interest to receive a donation as part of the Write for D ...

  8. skype linux 安装,如何在Ubuntu 18.04上安装Skype

    Skype是世界上最流行的通信应用程序之一,它使您可以拨打免费的在线音频和视频电话,以及可负担得起的拨打全球移动电话和固定电话的国际电话. Skype不是开源应用程序,也不包含在Ubuntu存储库中. ...

  9. 在Ubuntu 18.04上安装和使用Tesseract 4

    量子指南 (QUANTRIUM GUIDES) Today, the extraction of information from scanned documents such as letters, ...

最新文章

  1. redirect_uri参数错误解决方法
  2. 成功解决AttributeError: 'collections.defaultdict' object has no attribute 'iteritems'
  3. mips汇编计算开方_清华考研辅导班-2020清华大学912计算机专业基础综合考研经验真题参考书目...
  4. 2019/Province_C_C++_A/D/迷宫
  5. 关于计算机的英语作文九年级,实用的九年级英语作文合集6篇
  6. HTTP 错误 404.2 - Not Found 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面 详细错误:HTTP 错误...
  7. iPhone 12 Pro系列终于不怕弯了!
  8. 科技驰援背后:技术没有假期!
  9. 数据结构上机实践第五周项目3 - 括号的匹配
  10. Repast HPC Tutorial学习操作中出现的问题及解决办法(更新ing)
  11. 「高并发秒杀」java使用教程第五版答案
  12. 硕士论文中期汇报ppt_做一场合格的中期汇报
  13. 电赛入坑----2017年电赛国赛真题滚球控制系统
  14. 利用信息差赚美金?对!你没看错!
  15. word图片居中, 实际没效果解决、行间距无效果
  16. 干货3分钟搞懂私募投以及技术面试
  17. Windows Kits(Windows 工具包)
  18. 压测⼯具本地快速安装Jmeter5.x以及基础功能组件介绍线程组和Sampler
  19. 物联网网关关键技术包括两个方面,物联网网关是智能家居发展的重要支撑
  20. python字符串换行的三种方式_Python:怎样拼装超长字符串和包含回车换行字符串...

热门文章

  1. 1 nrf51822简介
  2. 身份证15转18 API数据接口
  3. 再不上市,斗鱼可能真的就凉了!
  4. NLP-信息抽取-关系抽取-2016:Attention-BiLSTM实体关系分类器【基于双向LSTM及注意力机制的关系分类】【数据集:SemEval-2010 Task 8】
  5. 中国古代哲学的8000倍浓缩
  6. 浅谈 pipeline
  7. 线性代数学习笔记——第八十六讲——空间曲线(1)
  8. 一个关于C语言程序指针的用法(其中之一·)
  9. 大数据-kafka学习(一)——Kafka简介
  10. 物业管理系统app开发的解决方案