isso/docs/docs/install.rst
2014-06-07 14:52:11 +02:00

188 lines
5.6 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Installation
============
Isso is a web application written in Python. If pip and virtualenv mean
anything to you, continue with :ref:`install-from-pypi`. If you are running
Debian/Ubuntu or Gentoo, you can use :ref:`prebuilt-package`. If not, read the
next section carefully.
.. contents::
:local:
:depth: 1
Interludium: Python is not PHP
------------------------------
If you think hosting a web application written in Python is as easy as one
written in PHP, you are wrong. Unlike for PHP, many Linux distribution use
Python for internal tools. Your package manager already ships several python
libraries, but most likely not all required by Isso (or in an up-to-date
version looking at you, Debian!).
That's why most Python developers use the `Python Package Index`_ to get their
dependencies. But the most important rule: never install *anything* from PyPi
as root. Not because of malicious software, but because you *will* break your
system.
``easy_install`` is one tool to mess up your system. Another package manager is
``pip``. If you ever searched for an issue with Python/pip and Stackoverflow is
suggesting your ``easy_install pip`` or ``pip install --upgrade pip`` (as root
of course!), you are doing it wrong. `Why you should not use Python's
easy_install carelessly on Debian`_ is worth the read.
Fortunately, Python has a way to install packages (both as root and as user)
without interfering with your globally installed packages: `virtualenv`. Use
this *always* if you are installing software unavailable in your favourite
package manager.
.. code-block:: sh
# for Debian/Ubuntu
~> sudo apt-get install python-setuptools python-virtualenv
# Fedora/Red Hat
~> sudo yum install python-setuptools python-virtualenv
The next steps should be done as regular user, not as root (although possible
but not recommended):
.. code-block:: sh
~> virtualenv /home/user/python/isso
~> source /home/user/python/isso/activate
After calling `source`, you can now install packages from PyPi locally into this
virtual environment. If you don't like Isso anymore, you just `rm -rf` the
folder. Inside this virtual environment, you may also execute the example
commands from above to upgrade your Python Package Manager (although it barely
makes sense), it is completely independent from your global system.
With a virtualenv active, you may now continue to :ref:`install-from-pypi`!
Of course you may not need a virtualenv when you are running dedicated virtual
machines or a shared host (e.g. Uberspace.de).
.. _Python Package Index: https://pypi.python.org/pypi
.. _Why you should not use Python's easy_install carelessly on Debian:
https://workaround.org/easy-install-debian
.. _install-from-pypi:
Install from PyPi
-----------------
Requirements:
- Python 2.6, 2.7 or 3.3+ (+ devel headers)
- SQLite 3.3.8 or later
- a working C compiler
Install Isso with `pip <http://www.pip-installer.org/en/latest/>`_:
.. code-block:: sh
~> pip install isso
`Don't have pip? <https://twitter.com/gardaud/status/357638468572151808>`_
.. code-block:: sh
~> easy_install isso # cross your fingers
For easier execution, you can symlink the executable to a location in your
PATH:
.. code-block:: sh
~> ln -s /path/to/isso-venv/bin/isso /usr/local/bin/isso
To upgrade Isso, activate your virtual environment again, and run
.. code-block:: sh
~> pip install --upgrade isso
.. _prebuilt-package:
Prebuilt Packages
-----------------
* Debian: https://packages.crapouillou.net/ built from PyPi. Includes
startup scripts and vhost configurations for Lighttpd, Apache and Nginx
[`source <https://github.com/jgraichen/debian-isso>`__].
`#729218 <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=729218>`_ is a
ITP for Debian. To be officially packages by Debian, `#51
<https://github.com/posativ/isso/issues/51>`_ needs to be done (contributions
are welcome).
* Gentoo: http://eroen.eu/cgit/cgit.cgi/eroen-overlay/tree/www-apps/isso?h=isso
not yet available in Portage, but you can use the ebuild to build Isso.
* Arch Linux: https://aur.archlinux.org/packages/isso/ built from PyPi.
Install from Source
-------------------
If you want to hack on Isso or track down issues, there's an alternate
way to set up Isso. It requires a lot more dependencies and effort:
- Python 2.6, 2.7 or 3.3+ (+ devel headers)
- Virtualenv
- SQLite 3.3.8 or later
- a working C compiler
- Node.js, `NPM <https://npmjs.org/>`__ and `Bower <http://bower.io/>`__
Get a fresh copy of Isso:
.. code-block:: sh
~> git clone https://github.com/posativ/isso.git
~> cd isso/
To create a virtual environment (recommended), run:
.. code-block:: sh
~> virtualenv .
~> source ./bin/activate
Install Isso and its dependencies:
.. code-block:: sh
~> python setup.py develop # or `install`
~> isso run
Install JavaScript modules:
.. code-block:: sh
~> make init
Integration without previous optimization:
.. code-block:: html
<script src="/js/config.js"></script>
<script data-main="/js/embed" src="/js/components/requirejs/require.js"></script>
Optimization:
.. code-block:: sh
~> npm install -g requirejs uglifyjs jade
~> make js
.. _init-scripts:
Init scripts
------------
Init scripts to run Isso as a service (check your distribution's documentation
for your init-system; e.g. Debian uses SysVinit, Fedora uses SystemD) if you
don't use FastCGi or uWSGI:
- SystemD: https://github.com/jgraichen/debian-isso/blob/master/debian/isso.service
- SysVinit: https://github.com/jgraichen/debian-isso/blob/master/debian/isso.init
- OpenBSD: https://gist.github.com/noqqe/7397719
- Supervisor: https://github.com/posativ/isso/issues/47