本文介绍使用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。 现在应该获取并自动安装证书了,如下图:
五、安装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设置并创建管理员用户:
创建管理员用户后,就能正常登录InvoiceNinja控制中心,如下图:
至此,你已成功在Ubuntu 18.04服务器上安装InvoiceNinja了。
相关主题 |