installation.rst 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  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. ::
  41. # Install redis
  42. $ sudo pacman -S redis
  43. # Check if redis is already running.
  44. $ systemctl status redis
  45. # If not, start it.
  46. $ sudo systemctl start redis
  47. # Optional: Start redis everytime you boot your machine
  48. $ sudo systemctl enable redis
  49. On Debian 7.0 (Wheezy)
  50. ----------------------
  51. ::
  52. # Install redis
  53. $ sudo apt-get install redis-server
  54. # Check if redis is already running.
  55. $ service redis-server status
  56. # If not, start it
  57. $ sudo service redis-server start
  58. # Optional: Start redis everytime you boot your machine
  59. # I can't remember if this is done automatically..
  60. $ sudo update-rc.d redis-server defaults
  61. Configuration
  62. =============
  63. Before you can start, you need to configure `FlaskBB`.
  64. Development
  65. ~~~~~~~~~~~
  66. For development, you need to copy ``flaskbb/configs/development.py.example`` to
  67. ``flaskbb/configs/development.py``.
  68. ::
  69. cp flaskbb/configs/development.py.example flaskbb/configs/development.py
  70. The reCAPTCHA keys should work fine on localhost. If you don't want to use
  71. Google Mail, see `Mail Examples <#mail-examples>`_ for more options.
  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. If you don't want to use
  82. Google Mail, see `Mail Examples <#mail-examples>`_ for more options.
  83. Mail Examples
  84. ~~~~~~~~~~~~~
  85. Google Mail
  86. -----------
  87. ::
  88. MAIL_SERVER = "smtp.gmail.com"
  89. MAIL_PORT = 465
  90. MAIL_USE_SSL = True
  91. MAIL_USERNAME = "your_username@gmail.com"
  92. MAIL_PASSWORD = "your_password"
  93. MAIL_DEFAULT_SENDER = ("Your Name", "your_username@gmail.com")
  94. # The user who should recieve the error logs
  95. ADMINS = ["your_admin_user@gmail.com"]
  96. Local SMTP Server
  97. -----------------
  98. ::
  99. MAIL_SERVER = "localhost"
  100. MAIL_PORT = 25
  101. MAIL_USE_SSL = False
  102. MAIL_USERNAME = ""
  103. MAIL_PASSWORD = ""
  104. MAIL_DEFAULT_SENDER = "noreply@example.org"
  105. # The user who should recieve the error logs
  106. ADMINS = ["your_admin_user@example.org"]
  107. Installation
  108. ============
  109. Now, you should be able to install `FlaskBB` and can run therefore
  110. ::
  111. python manage.py initflaskbb
  112. Here you are asked about what your username is, which email adress you use
  113. and last but not least, which password your admin user has (please choose a secure one).
  114. To test if everything worked, run the development server with
  115. ``python manage.py runserver``.
  116. Deploying
  117. =========
  118. I prefer to use supervisor, uWSGI and nginx to deploy my apps, but if you have
  119. figured out how to deploy it in another way, please let me know, so I
  120. (or you if you create a pull request) can add it to the documentation.
  121. **NOTE:** I have only used Debian to deploy it, if someone is using a other
  122. distribution, could you let me know if that works too? Thanks!
  123. Supervisor
  124. ~~~~~~~~~~
  125. `Supervisor is a client/server system that allows its users to monitor and
  126. control a number of processes on UNIX-like operating systems.`
  127. To install `supervisor` on Debian, you need to install it with
  128. ::
  129. $ sudo apt-get install supervisor
  130. There are two ways to configure supervisor. The first one is, you just put
  131. the configuration to the end of the ``/etc/supervisor/supervisord.conf`` file.
  132. The second way would be to create a new file in the ``/etc/supervisor/conf.d/``
  133. directory. For example, such a file could be named "uwsgi.conf".
  134. After you have choosen the you way you like, simply put this snippet in the
  135. configuration file.
  136. ::
  137. [program:uwsgi]
  138. command=/usr/bin/uwsgi --emperor /etc/uwsgi/apps-enabled
  139. user=apps
  140. stopsignal=QUIT
  141. autostart=true
  142. autorestart=true
  143. redirect_stderr=true
  144. uWSGI
  145. ~~~~~
  146. `uWSGI is a web application solution with batteries included.`
  147. To get started with uWSGI, you need to install it first.
  148. You'll also need the python plugin to serve python apps.
  149. This can be done with:
  150. ::
  151. $ sudo apt-get install uwsgi uwsgi-plugins-python
  152. For the configuration, you need to create a file in the
  153. ``/etc/uwsgi/apps-available`` directory. In this example, I will call the
  154. file ``flaskbb.ini``. After that, you can start with configuring it.
  155. My config looks like this for `flaskbb.org` (see below). As you might have noticed, I'm
  156. using a own user for my apps whose home directory is located at `/var/apps/`.
  157. In this directory there are living all my Flask apps.
  158. ::
  159. [uwsgi]
  160. base = /var/apps/flaskbb
  161. home = /var/apps/.virtualenvs/flaskbb/
  162. pythonpath = %(base)
  163. socket = 127.0.0.1:30002
  164. module = wsgi
  165. callable = flaskbb
  166. uid = apps
  167. gid = apps
  168. logto = /var/apps/flaskbb/logs/uwsgi.log
  169. plugins = python
  170. =============== ========================== ===============
  171. **base** /path/to/flaskbb The folder where your flaskbb application lives
  172. **home** /path/to/virtualenv/folder The virtualenv folder for your flaskbb application
  173. **pythonpath** /path/to/flaskbb The same as base
  174. **socket** socket This can be either a ip or the path to a socket (don't forget to change that in your nginx config)
  175. **module** wsgi.py This is the file located in the root directory from flaskbb (where manage.py lives).
  176. **callable** flaskbb The callable is application you have created in the ``wsgi.py`` file
  177. **uid** your_user The user who should be used. **NEVER** use root!
  178. **gid** your_group The group who should be used.
  179. **logto** /path/to/log/file The path to your uwsgi logfile
  180. **plugins** python We need the python plugin
  181. =============== ========================== ===============
  182. nginx
  183. ~~~~~
  184. `nginx [engine x] is an HTTP and reverse proxy server,
  185. as well as a mail proxy server, written by Igor Sysoev.`
  186. The nginx config is pretty straightforward. Again, this is how I use it for
  187. `FlaskBB`. Just copy the snippet below and paste it to, for example
  188. ``/etc/nginx/sites-available/flaskbb``.
  189. The only thing left is, that you need to adjust the ``server_name`` to your
  190. domain and the paths in ``access_log``, ``error_log``. Also, don't forget to
  191. adjust the paths in the ``alias`` es, as well as the socket adress in ``uwsgi_pass``.
  192. ::
  193. server {
  194. listen 80;
  195. server_name forums.flaskbb.org;
  196. access_log /var/log/nginx/access.forums.flaskbb.log;
  197. error_log /var/log/nginx/error.forums.flaskbb.log;
  198. location / {
  199. try_files $uri @flaskbb;
  200. }
  201. # Static files
  202. location /static {
  203. alias /var/apps/flaskbb/flaskbb/static/;
  204. }
  205. location ~ ^/_themes/([^/]+)/(.*)$ {
  206. alias /var/apps/flaskbb/flaskbb/themes/$1/static/$2;
  207. }
  208. # robots.txt
  209. location /robots.txt {
  210. alias /var/apps/flaskbb/flaskbb/static/robots.txt;
  211. }
  212. location @flaskbb {
  213. uwsgi_pass 127.0.0.1:30002;
  214. include uwsgi_params;
  215. }
  216. }