108 lines
3.2 KiB
Markdown
108 lines
3.2 KiB
Markdown
![]() |
---
|
||
|
date: 2013-04-29
|
||
|
title: Bamboo Invoice on Centos with Nginx
|
||
|
category: linux
|
||
|
---
|
||
|
|
||
|
[BambooInvoice](https://www.bambooinvoice.org/) is free Open Source
|
||
|
invoicing software intended for small businesses and independent
|
||
|
contractors. It is easy to use and creates pretty good looking invoices.
|
||
|
|
||
|
It is a simple PHP application that is based on the CodeIgniter
|
||
|
framework. This means it is really simple to install on a typically LAMP
|
||
|
stack. I however use Nginx and could not find any notes on how to
|
||
|
configure it. It is pretty typical you can get most of the way by
|
||
|
reading any of the Nginx howto documents on the web. Personally, for PHP
|
||
|
apps, I use PHP-FPM, so you could use [this on
|
||
|
Howtoforge](https://www.howtoforge.com/installing-nginx-with-php5-and-php-fpm-and-mysql-support-on-centos-6.4)
|
||
|
to get most of the way. That will get you a working Nginx, PHP and MySQL
|
||
|
system.
|
||
|
|
||
|
Download the install file from \[<https://bambooinvoice.org/>\] an unzip
|
||
|
is in your www folder:
|
||
|
|
||
|
```
|
||
|
cd /var/www
|
||
|
wget https://bambooinvoice.org/img/bambooinvoice_089.zip
|
||
|
unzip bambooinvoice_089.zip
|
||
|
```
|
||
|
|
||
|
You next step is to create a database for it along with a user:
|
||
|
|
||
|
```
|
||
|
CREATE DATABASE bambooinvoice DEFAULT CHARACTER SET utf8;
|
||
|
GRANT ALL ON bambooinvoice.* TO 'bambooinvoice'@'localhost' IDENTIFIED BY 'bambooinvoice';
|
||
|
FLUSH PRIVILEGES;
|
||
|
exit
|
||
|
```
|
||
|
|
||
|
Now you can edit the config files to point at the database:
|
||
|
|
||
|
```
|
||
|
/var/www/bambooinvoices/bamboo\_system\_files/application/config/database.php
|
||
|
```
|
||
|
|
||
|
Next you need set the base\_url in
|
||
|
`/var/www/bambooinvoices/bamboo_system_files/application/config/config.php`.
|
||
|
Nothing else is essential in that file, but read the docs in the ZIP
|
||
|
file to see what else you want to change.
|
||
|
|
||
|
Now the all important bit (`/et/nginx/conf.d/bamboo.conf`).
|
||
|
|
||
|
```
|
||
|
server {
|
||
|
listen 80;
|
||
|
|
||
|
server_name bamboo.example;
|
||
|
root /var/www/bambooinvoice/;
|
||
|
index index.php index.html;
|
||
|
access_log /var/log/nginx/bamboo_access.log;
|
||
|
error_log /var/log/nginx/bamboo_error.log;
|
||
|
|
||
|
location = /robots.txt {
|
||
|
allow all;
|
||
|
log_not_found off;
|
||
|
access_log off;
|
||
|
}
|
||
|
|
||
|
|
||
|
# Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac).
|
||
|
location ~ /\. {
|
||
|
deny all;
|
||
|
access_log off;
|
||
|
log_not_found off;
|
||
|
}
|
||
|
location / {
|
||
|
try_files $uri $uri/ /index.php$request_uri /index.php;
|
||
|
}
|
||
|
|
||
|
|
||
|
location ~ \.php($|/) {
|
||
|
try_files $uri =404;
|
||
|
fastcgi_pass 127.0.0.1:9000;
|
||
|
include /etc/nginx/fastcgi_params;
|
||
|
fastcgi_index index.php;
|
||
|
set $script $uri;
|
||
|
set $path_info "";
|
||
|
if ($uri ~ "^(.+\.php)(/.+)") {
|
||
|
set $script $1;
|
||
|
set $path_info $2;
|
||
|
}
|
||
|
fastcgi_param URI $uri;
|
||
|
# Next two lines are fix the 502 (Bad gateway) error
|
||
|
fastcgi_buffers 8 16k;
|
||
|
fastcgi_buffer_size 32k;
|
||
|
|
||
|
fastcgi_param PATH_INFO $path_info;
|
||
|
fastcgi_param SCRIPT_NAME $script;
|
||
|
fastcgi_param SCRIPT_FILENAME $document_root$script;
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
```
|
||
|
|
||
|
At first glance, there is nothing out of the ordinary. This is pretty
|
||
|
much what Howtoforge gives you. Look more closely and I have added the 3
|
||
|
lines 39-41. This solves a gateway problem I had when creating a client.
|