.. highlight:: sh Installing Manually =================== See also :doc:`/quickstart`, as it automates many of the steps below. More general details and background may be found in the Rattail Manual; see :doc:`rattail-manual:base/index` for that. Here of course we will focus on Theo, so will be less generic. The initial setup below will *not* include any POS integration, but that may optionally be added, and is described in another section. Prerequisites ------------- * Python 3.6+ * PostgreSQL Note that PostgreSQL need not run on the same machine as the Theo app, it just needs to be accessible over the network by Theo. These docs assume Linux for the Theo machine, but it is believed that with minimal tweaks this should work on Windows as well. However it should be noted that Windows does pose some issues, and this all likely will work "better" on Linux at this point. Windows "support" should be considered experimental. (In any case PostgreSQL can run on a Windows machine if you prefer that.) Virtual Environment ------------------- These docs will assume ``/srv/envs`` for the "home folder" of your virtual environments. Create a virtual environment for Theo:: mkdir -p /srv/envs python3 -m venv /srv/envs/theo Now activate it with:: source /srv/envs/theo/bin/activate Remember you can deactivate the virtual environment with:: deactivate But your environment should be *active* for all commands below. Install Packages ---------------- In a production environment you probably would want to install "official" released packages for Theo etc. That can be done for instance like:: pip install tailbone-theo[app] That is just an example and would not install any POS integration packages, only Theo proper. However in practice you may want to clone the source packages and install those in "editable" mode instead. In a true development environment we would suggest keeping the source code *outside* of the virtual environment, so that is what we'll describe here. First make and/or move to the parent folder for your source code, e.g.:: mkdir -p ~/src cd ~/src Then clone any packages you don't yet have, e.g.:: git clone https://kallithea.rattailproject.org/rattail-project/rattail git clone https://kallithea.rattailproject.org/rattail-project/tailbone git clone https://kallithea.rattailproject.org/rattail-project/theo Finally install all packages to your virtual environment, e.g.:: pip install -e ~/src/rattail pip install -e ~/src/tailbone pip install -e ~/src/theo But just to be sure no dependencies are missed, you still should run the same command as would be used in production, e.g.:: pip install tailbone-theo[app] Note that this command should always be ran *last* after you have installed all your source packages. Make Config Files ----------------- The ``dev/bootstrap.py`` script referenced by :doc:`/quickstart` will install four different config files, but we'll only install three here. First create the "app" folder (will be at ``/srv/envs/theo/app``):: cd /srv/envs/theo bin/rattail make-appdir One of the config files is quite simple and can be copied "as-is" from elsewhere, but two of them will require some modification depending on your setup etc. Starting point examples are available for the latter two, but cannot be used "as-is" due to their nature. Note that all config files will go directly in the "app" folder we just made above. We'll do the more complicated ones first. You can grab copies of them from Theo source code: * `rattail.conf `_ * `web.conf `_ Put each copy in your Theo "app" folder and edit as needed, in particular replacing ```` and similar strings (e.g. ```` should be either ``/`` on Linux or ``\`` on Windows). And now for the easy one, you can do this:: cd /srv/envs/theo bin/rattail -c app/rattail.conf make-config -T quiet -O app Initialize Database ------------------- On your PostgreSQL server, if you haven't already, create the user with which Theo should connect. We suggest "rattail" for the username:: sudo -u postgres createuser -P rattail Also create the database for Theo:: sudo -u postgres createdb -O rattail theo Now back on the Theo server (if different), install the schema to the database (NB. this assumes your ``rattail.conf`` file correctly points to the PostgreSQL DB):: cd /srv/envs/theo bin/alembic -c app/rattail.conf upgrade heads You also should create your admin user in Theo, named whatever you like:: bin/rattail -c app/quiet.conf make-user myusername --admin --full-name "My Actual Name" Run Web App ----------- With all the above in place you can run the web app:: cd /srv/envs/theo bin/pserve --reload file+ini:app/web.conf And then browse the app at http://localhost:9080/ Note that this is a basic setup and does not cause the web app to run in the background or after reboot etc. This type of setup is most useful for development.