在ubuntu20.04服务器上, 如何使用Apache/Nginx安装InvoiceNinja

・8 分钟阅读

本教程将向您展示如何在具有Apache或Nginx Web服务器的Ubuntu 20.04上安装InvoiceNinja。

步骤1: 在Ubuntu 20.04 Server上下载InvoiceNinja安装Zip文件

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

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

下载后,使用/var/www/目录提取归档文件到unzip

sudo apt install unzip
sudo mkdir -p /var/www/
sudo unzip invoice-ninja.zip -d /var/www/

-d选项指定目标目录,InvoiceNinja web文件被提取到,为了更好地标识每个目录,可以将它重命名为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

我们还需要更改storage目录的权限。

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

步骤2:在MariaDB中创建数据库和用户

使用以下命令登录到MariaDB数据库服务器,由于MariaDB现在使用unix_socket插件来验证用户登录,因此不需要输入MariaDB root密码,我们只需要在mysql命令前面加上sudo

sudo mysql

然后为发票创建数据库Ninja,本教程将数据库命名为invoiceninja。

create database invoiceninja;

创建数据库用户,同样,你可以使用此用户的首选名称,

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

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

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

刷新权限,并退出。

flush privileges;
exit;

步骤3安装PHP模块

请注意,InvoiceNinja当前不支持PHP7.4。为了获得最佳兼容性,建议添加PHP7.2 PPA,并安装PHP7.2.

sudo add-apt-repository ppa:ondrej/php

然后运行以下命令来安装InvoiceNinja需要或推荐的PHP模块。

sudo apt install php-imagick php7.2-fpm php7.2-mysql 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 web服务器,那么你需要禁用Apache的PHP模块。

sudo a2dismod php7.4

你还需要禁用prefork MPM模块。

sudo a2dismod mpm_prefork
sudo a2enmod mpm_event proxy_fcgi setenvif

然后重启Apache。

sudo systemctl restart apache2

步骤4:设置Web服务器

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

Apache

如果你喜欢Apache,为Invoice Ninja创建一个虚拟主机文件。

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

将以下文本放入文件,不要忘记在DNS管理器中为域名设置记录。注意,web root设置为/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
 Include /etc/apache2/conf-available/php7.2-fpm.conf
</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。

Nginx

如果你喜欢Nginx,请在/etc/nginx/conf.d/目录中创建一个invoice-ninja.conf文件。

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

将以下文本放入文件,不要忘记在DNS管理器中为域名设置记录。注意,web root设置为/var/www/invoice-ninja/public/,而不是/var/www/invoice-ninja/)

server {
 listen 80;
 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)。

杨和超 profile image