installation.rst 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  1. Installation
  2. ============
  3. - `Basic Setup <#basic-setup>`_
  4. - `Configuration <#configuration>`_
  5. - `Deplyoing <#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 simply 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. Optional Dependencies
  33. ~~~~~~~~~~~~~~~~~~~~~~
  34. We have one optional dependency, redis (the python package is installed automatically).
  35. If you want to use it, be sure that a redis-server is running. If you decide
  36. to use redis, the `online guests` and `online users` are being tracked by redis,
  37. else it will only track the `online users` via a simple SQL query.
  38. **On Archlinux**
  39. ::
  40. # Install redis
  41. $ sudo pacman -S redis
  42. # Check if redis is already running.
  43. $ systemctl status redis
  44. # If not, start it.
  45. $ sudo systemctl start redis
  46. # Optional: Start redis everytime you boot your machine
  47. $ sudo systemctl enable redis
  48. **On Debian 7.0 (Wheezy)**
  49. ::
  50. # Install redis
  51. $ sudo apt-get install redis-server
  52. # Check if redis is already running.
  53. $ service redis-server status
  54. # If not, start it
  55. $ sudo service redis-server start
  56. # Optional: Start redis everytime you boot your machine
  57. # I can't remember if this is done automatically..
  58. $ sudo update-rc.d redis-server defaults
  59. Configuration
  60. -------------
  61. Before you can start, you need to configure `FlaskBB`.
  62. Development
  63. ~~~~~~~~~~~
  64. For development, you need to copy ``flaskbb/configs/development.py.example`` to
  65. ``flaskbb/configs/development.py``.
  66. ::
  67. cp flaskbb/configs/development.py.example flaskbb/configs/development.py
  68. The reCAPTCHA keys should work fine on localhost.
  69. Production
  70. ~~~~~~~~~~
  71. If you plan, to use `FlaskBB` in a production environment (not recommended at
  72. the moment, because it's still in development), you need to copy
  73. ``flaskbb/configs/production.py.example`` to ``flaskbb/configs/production.py``.
  74. ::
  75. cp flaskbb/configs/production.py.example flaskbb/configs/production.py
  76. Now open ``flaskbb/configs/production.py`` with your favourite editor and adjust
  77. the config variables to your needs.
  78. Mail Examples
  79. ~~~~~~~~~~~~~
  80. Both methods are included in the example configs.
  81. **Google Mail**
  82. ::
  83. MAIL_SERVER = "smtp.gmail.com"
  84. MAIL_PORT = 465
  85. MAIL_USE_SSL = True
  86. MAIL_USERNAME = "your_username@gmail.com"
  87. MAIL_PASSWORD = "your_password"
  88. MAIL_DEFAULT_SENDER = ("Your Name", "your_username@gmail.com")
  89. **Local SMTP Server**
  90. ::
  91. MAIL_SERVER = "localhost"
  92. MAIL_PORT = 25
  93. MAIL_USE_SSL = False
  94. MAIL_USERNAME = ""
  95. MAIL_PASSWORD = ""
  96. MAIL_DEFAULT_SENDER = "noreply@example.org"
  97. Installation
  98. ------------
  99. Development
  100. ~~~~~~~~~~~
  101. For development you can create the database with the command below. This will
  102. additional to the database also create a few users with some example content.
  103. ::
  104. python manage.py createall
  105. To test if everything has worked, run the development server with
  106. ``python manage.py runserver``.
  107. Production
  108. ~~~~~~~~~~
  109. Now, you should be able to install `FlaskBB` and can run therefore
  110. ::
  111. python manage.py initflaskbb
  112. There you are going to be asked about your username, your email adress
  113. and which password you want to use for your admin user
  114. (please choose a secure one).
  115. Upgrading
  116. ---------
  117. `A upgrade guide will be written when first stable version is released.`
  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-plugins-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/``.