本文介绍使用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了。
相关主题