diff --git a/docs/admin/logs.md b/docs/admin/logs.md index 7e85668..95564cd 100644 --- a/docs/admin/logs.md +++ b/docs/admin/logs.md @@ -12,7 +12,7 @@ In the admin interface, select the "Errors" view: {% include 'img.html' %} {% endwith %} -!!! note "URL" +!!! info "URL" Alternatively, navigate to the error list view at /admin/error_report/error/ A list of error logs is presented. @@ -21,7 +21,7 @@ A list of error logs is presented. {% include 'img.html' %} {% endwith %} -!!! note "Deleting Logs" +!!! info "Deleting Logs" Error logs should be deleted periodically ## Reporting Errors diff --git a/docs/companies/manufacturer.md b/docs/companies/manufacturer.md index 86008b2..5dd4b75 100644 --- a/docs/companies/manufacturer.md +++ b/docs/companies/manufacturer.md @@ -15,7 +15,7 @@ To access the manufacturer page, click on the "Buy" navigation tab and click on Once the manufacturer page is loaded, click on the " New Manufacturer" button: the "Create new Manufacturer" form opens. Fill-in the manufacturer informations (`Company name` and `Company description` are required) then click on the "Submit" button. -!!! note "Manufacturer vs Supplier" +!!! info "Manufacturer vs Supplier" In the case the manufacturer sells directly to customers, you may want to enable the checkbox `is supplier` before submitting the form (you can also enable it later on). Purchase orders rely exclusively on [supplier parts](../supplier#supplier-parts), therefore the manufacturer will need to be set as a supplier too. ### Edit Manufacturer diff --git a/docs/companies/supplier.md b/docs/companies/supplier.md index b5d1565..f5208d1 100644 --- a/docs/companies/supplier.md +++ b/docs/companies/supplier.md @@ -15,7 +15,7 @@ To access the supplier page, click on the "Buy" navigation tab and click on "Sup Once the supplier page is loaded, click on the " New Supplier" button: the "Create new Supplier" form opens. Fill-in the supplier informations (`Company name` and `Company description` are required) then click on the "Submit" button. -!!! note "Supplier vs Manufacturer" +!!! info "Supplier vs Manufacturer" In the case the supplier is a manufacturer who sells directly to customers, you may want to enable the checkbox `is manufacturer` before submitting the form (you can also enable it later on). ### Edit Supplier diff --git a/docs/part/parameter.md b/docs/part/parameter.md index d8d1d2c..1af842b 100644 --- a/docs/part/parameter.md +++ b/docs/part/parameter.md @@ -42,5 +42,5 @@ Select the parameter `Template` you would like to use for this parameter, fill-o ### Parametric Tables -!!! note "Future Feature Proposal" +!!! info "Future Feature Proposal" Allow parts to be filtered using parameters. Narrow down the list of parameters to the parts found in each category. diff --git a/docs/start/development.md b/docs/start/development.md index f1eca59..2cf611e 100644 --- a/docs/start/development.md +++ b/docs/start/development.md @@ -7,10 +7,10 @@ title: Development Server !!! warning "Installation" Before continuing, ensure that the [installation steps](../install) have been completed. -The following installation instructions can be used to launch a simple development server. +InvenTree includes a simple server application, suitable for use in a development environment. !!! warning "Deployment" - Refer to the [deployment instructions](../deploy) to implement a much more robust server setup. + Refer to the [production server instructions](../production) to implement a much more robust server setup. ### Running on a Local Machine diff --git a/docs/start/install.md b/docs/start/install.md index d086a52..349b51a 100644 --- a/docs/start/install.md +++ b/docs/start/install.md @@ -4,13 +4,24 @@ title: Deploy InvenTree ## Initial Setup +Follow the instructions below to install the requried system packages, python modules, and InvenTree source code. + ### Install System Packages -Install required system packages (as superuser). +Install required system packages (as superuser): -First, install required system packages as per the [OS requirements](../intro#os-requirements). +!!! warning "OS Specific Requirements" + The following packages are required on a debian system. A different distribution may require a slightly different set of packages + +``` +sudo apt-get update +sudo apt-get install python3 python3-dev +sudo apt-get install python3-pip python3-invoke python3-venv +``` + +!!! warning "Weasyprint" + On some systems, the dependencies for the `weasyprint` package might not be installed. Consider running through the [weasyprint installation steps](https://weasyprint.readthedocs.io/en/stable/install.html) before moving forward. -Next, install the system packages [required for your particular database](../intro#database-requirements). ### Create InvenTree User @@ -20,7 +31,7 @@ Next, install the system packages [required for your particular database](../int Create a user account from which we will run the server: ``` -sudo useradd --create-home inventree +sudo useradd -m -d /home/inventree -s /bin/bash inventree ``` InvenTree source code, log files, etc will be located under the `/home/inventree/` directory. @@ -35,22 +46,20 @@ sudo su inventree ``` cd /home/inventree -mkdir log static media backup +mkdir log static data ``` This step creates directories required by InvenTree: -* **log** - Store InvenTree log files -* **static** - Location of static files for the web server -* **media** - Location of uploaded media files -* **backup** - Location of database backup files +* `/home/inventree/log` - Store InvenTree log files +* `/home/inventree/static` - Location of static files for the web server +* `/home/inventre/data` - Location of stored media and backup files ### Download Source Code Download InvenTree source code, into the `./src` directory: ``` -cd /home/inventree git clone https://github.com/inventree/inventree src ``` @@ -63,22 +72,19 @@ python3 -m venv env source ./env/bin/activate ``` -The shell prompt should now display the `(env)` prefix. +!!! info "(env) prefix" + The shell prompt should now display the `(env)` prefix, showing that you are operating within the context of the python virtual environment ### Install InvenTree Packages The Python packages required by the InvenTree server must be installed into the virtual environment. -Run the `invoke install` command (from within the src directory): - ``` -(env) cd src -(env) invoke install +pip install -U -r src/requirements.txt ``` This installs all required Python packages using pip package manager. It also creates a (default) database configuration file which needs to be edited to meet user needs before proceeding (see next step below). - ## Create Database As part of the initial setup, an empty database needs to be created. Follow the instructions below particular to your database engine of choice: @@ -89,6 +95,9 @@ SQLite uses a simple portable database file which is easy to use for debug and t Install required packages as follows: +!!! info "Sudo Actions" + Perform sudo actions from a separate shell, as 'inventree' user does not have sudo access + ``` sudo apt-get install sqlite3 ``` @@ -97,82 +106,72 @@ A `.sqlite3` database file will be automatically created, at the location specif ### PostgreSQL +#### Install PostgreSQL + Install required system packages: +!!! info "Sudo Actions" + Perform sudo actions from a separate shell, as 'inventree' user does not have sudo access + ``` sudo apt-get install postgresql postgresql-contrib libpq-dev ``` +And start the postgresql service: + +``` +sudo service postgresql start +``` + +#### Create Database and User + +We need to create new database, and a postgres user to allow database access. + +``` +sudo -u postgres psql +``` + +You should now be in an interactive database shell: + +``` +create database inventree; +create user myuser with encrypted password 'mypass'; +grant all privileges on database inventree to myuser; +``` + +!!! info "Username / Password" + You should change the username and password from the values specified above. This username and password will also be for the InvenTree database connection configuration. + +#### Install Python Bindings + The PostgreSQL python binding must also be installed (into your virtual environment): ``` -(env) pip3 install psycopg2 pgcli -``` - -Assuming the postgresql server is installed and running, switch to the `postgres` user and create a new database: - -``` -sudo su - postgres -``` - -You should now be in a shell session for the `postgres` user. Login to the database server as follows: - -``` -psql -``` - -Create a new database: - -``` -CREATE DATABASE inventree; -``` - -*Note: The name of the database will be required in the configuration section* - -Create a user account associated with the new database. - -``` -CREATE USER inventreeuser WITH PASSWORD "password"; -``` - -*Note: Choose different username and password values, and remember them for the configuration section*. - -Set the following database configuration options: - -``` -ALTER ROLE inventreeuser SET client_encoding TO 'utf8'; -ALTER ROLE inventreeuser SET default_transaction_isolation TO 'read committed'; -ALTER ROLE inventreeuser SET timezone TO 'UTC'; - -GRANT ALL PRIVILEGES ON DATABASE inventree TO inventreeuser; -``` - -Exit the postgresql shell: - -``` -\q -``` - -Exit out of the `postgres` user's shell: - -``` -exit +pip3 install psycopg2 pgcli ``` ### MySQL / MariaDB +#### Install Backend + To run InvenTree with the MySQL or MariaDB backends, a number of extra packages need to be installed: +!!! info "Sudo Actions" + Perform sudo actions from a separate shell, as 'inventree' user does not have sudo access + ``` sudo apt-get install mysql-server libmysqlclient-dev ``` -Install the python bindings for MySQL: +#### Install Python Bindings + +Install the python bindings for MySQL (into the python virtual environment). ``` -(env) pip3 install mysqlclient mariadb +pip3 install mysqlclient mariadb ``` +#### Create Database Assuming the MySQL server is installed and running, login to the MySQL server as follows: @@ -189,7 +188,7 @@ mysql> CREATE DATABASE inventree; Create a new user with complete access to the database: ``` -mysql> CREATE USER 'inventreeuser'@'%' IDENTIFIED WITH mysql_native_password BY 'inventree'; +mysql> CREATE USER 'myuser'@'%' IDENTIFIED WITH mysql_native_password BY 'mypass'; mysql> GRANT ALL ON blog_data.* TO 'djangouser'@'%'; mysql> FLUSH PRIVILEGES; ``` @@ -200,6 +199,9 @@ Exit the mysql shell: mysql> EXIT; ``` +!!! info "Username / Password" + You should change the username and password from the values specified above. This username and password will also be for the InvenTree database connection configuration. + ## Configure InvenTree Options Once the required software packages are installed and the database has been created, the InvenTree server options must be configured. @@ -212,7 +214,7 @@ Edit the configuration file at `/home/inventree/src/InvenTree/config.yaml`. Refer to the [configuration guidelines](../config) for full details. !!! warning "Configure Database" - Ensure database settings are correctly configured before proceeding to the next step! + Ensure database settings are correctly configured before proceeding to the next step! In particular, check that the database connection settings match the database you have created in the previous step. ## Initialize Database @@ -223,7 +225,8 @@ The database has been configured above, but is currently empty. Run the following command to initialize the database with the required tables. ``` -(env) invoke update +cd /home/inventree/src +invoke update ``` ### Create Admin Account @@ -231,7 +234,7 @@ Run the following command to initialize the database with the required tables. Create a superuser (admin) account for the InvenTree installation: ``` -(env) invoke superuser +invoke superuser ``` !!! success "Ready to Serve" @@ -252,32 +255,3 @@ Refer to the [development server instructions](../development) for further infor In a production environment, a more robust server setup is required. Refer to the [production server instructions](../production) for further information. - -## Install Gunicorn - -Gunicorn can be installed using PIP: - -``` -pip3 install gunicorn -``` - -!!! warning "Python Environment" - Ensure that gunicorn is installed within the same python environment context as the InvenTree install - otherwise gunicorn will not be able to import the correct python modules. - - -### Configure Gunicorn - -The Gunicorn server can be configured with a simple configuration file (e.g. python script). An example configuration file is provided in ``InvenTree/gunicorn.conf.py`` - -``` python -{% include 'gunicorn.conf.py' %} -``` - -This file can be used to configure the Gunicorn server to match particular requirements. - -### Run Gunicorn - -``` -cd InvenTree -gunicorn -c gunicorn.conf.py InvenTree.wsgi -``` diff --git a/docs/start/intro.md b/docs/start/intro.md index cc02582..6ec6603 100644 --- a/docs/start/intro.md +++ b/docs/start/intro.md @@ -44,28 +44,6 @@ The InvenTree documentation assumes that the operating system is a debian based !!! warning "Installing on Windows" Installation on Windows is *not guaranteed* to work (at all). To install on a Windows system, it is highly recommended that you [install WSL](https://docs.microsoft.com/en-us/windows/wsl/install-win10#manual-installation-steps), and then follow installation procedure from within the WSL environment. -!!! warning "Weasyprint" - On some systems, the dependencies for the `weasyprint` package might not be installed. Consider running through the [weasyprint installation steps](https://weasyprint.readthedocs.io/en/stable/install.html) before moving forward. - -The following minimum packages are required to be installed on a system level: - -### Debian - -``` -sudo apt-get update -sudo apt-get install python3 python3-dev -sudo apt-get install python3-pip python3-invoke python3-venv -``` - -### FreeBSD - -``` -pkg install python -pkg install py37-pip -pkg install py37-wheel -pkg install py37-invoke -``` - ## Python Requirements InvenTree runs on [Python](https://python.org). @@ -92,7 +70,7 @@ Installing the required Python packages inside a virtual environment allows a lo You can read more about Python virtual environments [here](https://docs.python.org/3/tutorial/venv.html). -!!! note "Virtual Environment" +!!! info "Virtual Environment" The installation intstruction assume that a virtual environment is configured `cd` into the InvenTree directory, and create a virtual environment with the following command: @@ -111,7 +89,7 @@ To configure Inventree inside a virtual environment, ``cd`` into the inventree b source env/bin/activate ``` -!!! note "Activate Virtual Environment" +!!! info "Activate Virtual Environment" if ``` source env/bin/activate @@ -134,7 +112,7 @@ git clone https://github.com/inventree/inventree/ Alternatively, the source can be downloaded as a [.zip archive](https://github.com/inventree/InvenTree/archive/master.zip). -!!! note "Updating via Git" +!!! info "Updating via Git" Downloading the source code using Git is recommended, as it allows for simple updates when a new version of InvenTree is released. ## Installation Guides diff --git a/docs/start/production.md b/docs/start/production.md index 2c18e54..b3c4d20 100644 --- a/docs/start/production.md +++ b/docs/start/production.md @@ -21,6 +21,74 @@ The InvenTree web server is hosted using [Gunicorn](https://gunicorn.org/). Guni [Supervisor](http://supervisord.org/) is a process control system which monitors and controls multiple background processes. It is used in the InvenTree production setup to ensure that the server and background worker processes are always running. -## Setup +## Gunicorn -## Start Supervisor \ No newline at end of file +Gunicorn should have already been installed (within the python virtual environment) as part of the installation procedure. + +A simple gunicorn configuration file is also provided. This configuration file can be edited if different server settings are required + +### Test Gunicorn Server + +First, let's confirm that the gunicorn server is operational. + +!!! info "Virtual Environment" + Don't forget to activate the python virtual environment + +``` +cd /home/InvenTree +source ./env/bin/activate + +cd src/InvenTree +/home/inventree/env/bin/gunicorn -c gunicorn.conf.py InvenTree.wsgi -b 127.0.0.1:8000 +``` + +This should start the gunicorn server as a foreground process. + +Check that you can access the InvenTree web server [in your browser](http://127.0.0.1:8000): + +### Stop Gunicorn Server + +Once the gunicorn server is operational, kill the server with Ctrl+c + +## Supervisor + +We will use [supervisor](http://supervisord.org/) as a process monitor, to ensure the web server and background worker processes are automatically started, and restarted if something goes wrong. + +### Install Supervisor + +!!! info "Sudo Actions" + Perform sudo actions from a separate shell, as 'inventree' user does not have sudo access + +``` +sudo apt-get install supervisor +``` + +### Configure Supervisor + +!!! warning "Configuration Override" + If you already have supervisor installed on your system, you will not want to override your existing configuration file. + In this case, edit the existing configuration file at `/etc/supervisord.conf` to integrate the InvenTree processes + +Copy the supervisor configuration file: + +``` +sudo cp /home/inventree/src/deploy/supervisord.conf /etc/supervisord.conf +``` + +### Start Supervisor Daemon + +``` +sudo supervisord +``` + +### Check Server + +Check that the InvenTree [web server is running](http://localhost:8000). + +### View Process Status + +The process status can be viewed [in your web browser](http://localhost:9001). + +## Production Ready + +The InvenTree server (and background task manager) should now be running! diff --git a/docs/stock/owner.md b/docs/stock/owner.md index ded2fc6..b37f68b 100644 --- a/docs/stock/owner.md +++ b/docs/stock/owner.md @@ -46,7 +46,7 @@ Setting the owner of stock location will automatically: * Set the owner of all children locations to the same owner. * Set the owner of all stock items at this location to the same owner. -!!! note +!!! info If the owner of a children location or a stock item is a subset of the specified owner (eg. a user linked to the specified group), the owner won't be updated. ### Set Stock Item Owner diff --git a/mkdocs.yml b/mkdocs.yml index 14ed132..27a368a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -44,9 +44,11 @@ nav: - Contribute: contribute.md - Installation: - Introduction: start/intro.md + - Configuration: start/config.md - Docker Installation: start/docker.md - Manual Installation: start/install.md - - Configuration: start/config.md + - Development Server: start/development.md + - Production Server: start/production.md - Updating: start/update.md - Migrating: start/migrate.md - Parts: