installation.rst 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330
  1. Installation
  2. ============
  3. - `Basic Setup <#basic-setup>`_
  4. - `Configuration <#configuration>`_
  5. - `Deploying <#deploying>`_
  6. Basic Setup
  7. -----------
  8. Virtualenv Setup
  9. ~~~~~~~~~~~~~~~~
  10. Before you can start, you need to create a `virtualenv`.
  11. You can install the virtualenvwrapper with your package manager or via pip.
  12. Be sure that pip is installed. If you don't know how to install pip, have a
  13. look at their `documentation <http://www.pip-installer.org/en/latest/installing.html>`_.
  14. For example, on archlinux you can install it with
  15. ::
  16. $ sudo pacman -S python2-virtualenvwrapper
  17. or, if you own a Mac, you can install it with
  18. ::
  19. $ sudo pip install virtualenvwrapper
  20. For more information checkout the `virtualenvwrapper <http://virtualenvwrapper.readthedocs.org/en/latest/install.html#basic-installation>`_ installation.
  21. After that, you can create your virtualenv with
  22. ::
  23. $ mkvirtualenv -a /path/to/flaskbb -p $(which python2) flaskbb
  24. and you should be switched automatically to your newly created virtualenv.
  25. To deactivate it you just have to type ``deactivate`` and if you want to work
  26. on it again, you need to type ``workon flaskbb``.
  27. Required Dependencies
  28. ~~~~~~~~~~~~~~~~~~~~~
  29. Now you can install the required dependencies.
  30. ::
  31. $ pip install -r requirements.txt
  32. Alternatively, you can use the `make` command to install the dependencies.
  33. ::
  34. $ make dependencies
  35. Optional Dependencies
  36. ~~~~~~~~~~~~~~~~~~~~~~
  37. We have one optional dependency, redis (the python package is installed automatically).
  38. If you want to use it, be sure that a redis-server is running. If you decide
  39. to use redis, the `online guests` and `online users` are being tracked by redis,
  40. else it will only track the `online users` via a simple SQL query.
  41. **On Archlinux**
  42. ::
  43. # Install redis
  44. $ sudo pacman -S redis
  45. # Check if redis is already running.
  46. $ systemctl status redis
  47. # If not, start it.
  48. $ sudo systemctl start redis
  49. # Optional: Start redis everytime you boot your machine
  50. $ sudo systemctl enable redis
  51. **On Debian 7.0 (Wheezy)**
  52. ::
  53. # Install redis
  54. $ sudo apt-get install redis-server
  55. # Check if redis is already running.
  56. $ service redis-server status
  57. # If not, start it
  58. $ sudo service redis-server start
  59. # Optional: Start redis everytime you boot your machine
  60. # I can't remember if this is done automatically..
  61. $ sudo update-rc.d redis-server defaults
  62. Configuration
  63. -------------
  64. Before you can start, you need to configure `FlaskBB`.
  65. Development
  66. ~~~~~~~~~~~
  67. For development, you need to copy ``flaskbb/configs/development.py.example`` to
  68. ``flaskbb/configs/development.py``.
  69. ::
  70. cp flaskbb/configs/development.py.example flaskbb/configs/development.py
  71. The reCAPTCHA keys should work fine on localhost.
  72. Production
  73. ~~~~~~~~~~
  74. If you plan, to use `FlaskBB` in a production environment (not recommended at
  75. the moment, because it's still in development), you need to copy
  76. ``flaskbb/configs/production.py.example`` to ``flaskbb/configs/production.py``.
  77. ::
  78. cp flaskbb/configs/production.py.example flaskbb/configs/production.py
  79. Now open ``flaskbb/configs/production.py`` with your favourite editor and adjust
  80. the config variables to your needs.
  81. Mail Examples
  82. ~~~~~~~~~~~~~
  83. Both methods are included in the example configs.
  84. **Google Mail**
  85. ::
  86. MAIL_SERVER = "smtp.gmail.com"
  87. MAIL_PORT = 465
  88. MAIL_USE_SSL = True
  89. MAIL_USERNAME = "your_username@gmail.com"
  90. MAIL_PASSWORD = "your_password"
  91. MAIL_DEFAULT_SENDER = ("Your Name", "your_username@gmail.com")
  92. **Local SMTP Server**
  93. ::
  94. MAIL_SERVER = "localhost"
  95. MAIL_PORT = 25
  96. MAIL_USE_SSL = False
  97. MAIL_USERNAME = ""
  98. MAIL_PASSWORD = ""
  99. MAIL_DEFAULT_SENDER = "noreply@example.org"
  100. Installation
  101. ------------
  102. For a guided install, run
  103. ::
  104. $ make install
  105. or
  106. ::
  107. flaskbb install
  108. During the installation process you are asked about your username,
  109. your email address and the password for your administrator user. Using the
  110. `make install` command is recommended as it checks that the dependencies are also
  111. installed.
  112. Upgrading
  113. ---------
  114. If the database models changed after a release, you have to run the ``upgrade``
  115. command
  116. ::
  117. flaskbb db upgrade
  118. Deploying
  119. ---------
  120. I prefer to use supervisor, uWSGI and nginx to deploy my apps, but if you have
  121. figured out how to deploy it in another way, please let me know, so I
  122. (or you if you create a pull request) can add it to the documentation.
  123. **NOTE:** I have only used Debian to deploy it, if someone is using a other
  124. distribution, could you let me know if that works too? `Also, if you have better
  125. configurations for uWSGI, supervisor or nginx let me know that too.`
  126. Supervisor
  127. ~~~~~~~~~~
  128. `Supervisor is a client/server system that allows its users to monitor and
  129. control a number of processes on UNIX-like operating systems.`
  130. To install `supervisor` on Debian, you need to fire up this command:
  131. ::
  132. $ sudo apt-get install supervisor
  133. There are two ways to configure supervisor. The first one is, you just put
  134. the configuration to the end in the ``/etc/supervisor/supervisord.conf`` file.
  135. The second way would be to create a new file in the ``/etc/supervisor/conf.d/``
  136. directory. For example, such a file could be named ``uwsgi.conf``.
  137. After you have choosen the you way you like, simply put the snippet below in the
  138. configuration file.
  139. ::
  140. [program:uwsgi]
  141. command=/usr/bin/uwsgi --emperor /etc/uwsgi/apps-enabled
  142. user=apps
  143. stopsignal=QUIT
  144. autostart=true
  145. autorestart=true
  146. redirect_stderr=true
  147. uWSGI
  148. ~~~~~
  149. `uWSGI is a web application solution with batteries included.`
  150. To get started with uWSGI, you need to install it first.
  151. You'll also need the python plugin to serve python apps.
  152. This can be done with:
  153. ::
  154. $ sudo apt-get install uwsgi uwsgi-plugin-python
  155. For the configuration, you need to create a file in the
  156. ``/etc/uwsgi/apps-available`` directory. In this example, I will call the
  157. file ``flaskbb.ini``. After that, you can start with configuring it.
  158. My config looks like this for `flaskbb.org` (see below). As you might have noticed, I'm
  159. using a own user for my apps whose home directory is located at `/var/apps/`.
  160. In this directory there are living all my Flask apps.
  161. ::
  162. [uwsgi]
  163. base = /var/apps/flaskbb
  164. home = /var/apps/.virtualenvs/flaskbb/
  165. pythonpath = %(base)
  166. socket = 127.0.0.1:30002
  167. module = wsgi
  168. callable = flaskbb
  169. uid = apps
  170. gid = apps
  171. logto = /var/apps/flaskbb/logs/uwsgi.log
  172. plugins = python
  173. =============== ========================== ===============
  174. **base** /path/to/flaskbb The folder where your flaskbb application lives
  175. **home** /path/to/virtualenv/folder The virtualenv folder for your flaskbb application
  176. **pythonpath** /path/to/flaskbb The same as base
  177. **socket** socket This can be either a ip or the path to a socket (don't forget to change that in your nginx config)
  178. **module** wsgi.py This is the file located in the root directory from flaskbb (where manage.py lives).
  179. **callable** flaskbb The callable is application you have created in the ``wsgi.py`` file
  180. **uid** your_user The user who should be used. **NEVER** use root!
  181. **gid** your_group The group who should be used.
  182. **logto** /path/to/log/file The path to your uwsgi logfile
  183. **plugins** python We need the python plugin
  184. =============== ========================== ===============
  185. Don't forget to create a symlink to ``/etc/uwsgi/apps-enabled``.
  186. ::
  187. ln -s /etc/uwsgi/apps-available/flaskbb /etc/uwsgi/apps-enabled/flaskbb
  188. nginx
  189. ~~~~~
  190. `nginx [engine x] is an HTTP and reverse proxy server,
  191. as well as a mail proxy server, written by Igor Sysoev.`
  192. The nginx config is pretty straightforward. Again, this is how I use it for
  193. `FlaskBB`. Just copy the snippet below and paste it to, for example
  194. ``/etc/nginx/sites-available/flaskbb``.
  195. The only thing left is, that you need to adjust the ``server_name`` to your
  196. domain and the paths in ``access_log``, ``error_log``. Also, don't forget to
  197. adjust the paths in the ``alias`` es, as well as the socket adress in ``uwsgi_pass``.
  198. ::
  199. server {
  200. listen 80;
  201. server_name forums.flaskbb.org;
  202. access_log /var/log/nginx/access.forums.flaskbb.log;
  203. error_log /var/log/nginx/error.forums.flaskbb.log;
  204. location / {
  205. try_files $uri @flaskbb;
  206. }
  207. # Static files
  208. location /static {
  209. alias /var/apps/flaskbb/flaskbb/static/;
  210. }
  211. location ~ ^/_themes/([^/]+)/(.*)$ {
  212. alias /var/apps/flaskbb/flaskbb/themes/$1/static/$2;
  213. }
  214. # robots.txt
  215. location /robots.txt {
  216. alias /var/apps/flaskbb/flaskbb/static/robots.txt;
  217. }
  218. location @flaskbb {
  219. uwsgi_pass 127.0.0.1:30002;
  220. include uwsgi_params;
  221. }
  222. }
  223. Like in the `uWSGI <#uwsgi>`_ chapter, don't forget to create a symlink to
  224. ``/etc/nginx/sites-enabled/``.