installation.rst 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  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.
  71. Production
  72. ~~~~~~~~~~
  73. If you plan, to use `FlaskBB` in a production environment (not recommended at
  74. the moment, because it's still in development), you need to copy
  75. ``flaskbb/configs/production.py.example`` to ``flaskbb/configs/production.py``.
  76. ::
  77. cp flaskbb/configs/production.py.example flaskbb/configs/production.py
  78. Now open ``flaskbb/configs/production.py`` with your favourite editor and adjust
  79. the config variables to your needs.
  80. Mail Examples
  81. ~~~~~~~~~~~~~
  82. Both methods are included in the example configs.
  83. Google Mail
  84. -----------
  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. ::
  95. MAIL_SERVER = "localhost"
  96. MAIL_PORT = 25
  97. MAIL_USE_SSL = False
  98. MAIL_USERNAME = ""
  99. MAIL_PASSWORD = ""
  100. MAIL_DEFAULT_SENDER = "noreply@example.org"
  101. Installation
  102. ============
  103. Now, you should be able to install `FlaskBB` and can run therefore
  104. ::
  105. python manage.py initflaskbb
  106. Here you are asked about what your username is, which email adress you use
  107. and last but not least, which password your admin user has (please choose a secure one).
  108. To test if everything worked, run the development server with
  109. ``python manage.py runserver``.
  110. Deploying
  111. =========
  112. I prefer to use supervisor, uWSGI and nginx to deploy my apps, but if you have
  113. figured out how to deploy it in another way, please let me know, so I
  114. (or you if you create a pull request) can add it to the documentation.
  115. **NOTE:** I have only used Debian to deploy it, if someone is using a other
  116. distribution, could you let me know if that works too? `Also, if you have better
  117. configurations for uWSGI, supervisor or nginx let me know that too.`
  118. Supervisor
  119. ~~~~~~~~~~
  120. `Supervisor is a client/server system that allows its users to monitor and
  121. control a number of processes on UNIX-like operating systems.`
  122. To install `supervisor` on Debian, you need to fire up this command:
  123. ::
  124. $ sudo apt-get install supervisor
  125. There are two ways to configure supervisor. The first one is, you just put
  126. the configuration to the end in the ``/etc/supervisor/supervisord.conf`` file.
  127. The second way would be to create a new file in the ``/etc/supervisor/conf.d/``
  128. directory. For example, such a file could be named ``uwsgi.conf``.
  129. After you have choosen the you way you like, simply put the snippet below in the
  130. configuration file.
  131. ::
  132. [program:uwsgi]
  133. command=/usr/bin/uwsgi --emperor /etc/uwsgi/apps-enabled
  134. user=apps
  135. stopsignal=QUIT
  136. autostart=true
  137. autorestart=true
  138. redirect_stderr=true
  139. uWSGI
  140. ~~~~~
  141. `uWSGI is a web application solution with batteries included.`
  142. To get started with uWSGI, you need to install it first.
  143. You'll also need the python plugin to serve python apps.
  144. This can be done with:
  145. ::
  146. $ sudo apt-get install uwsgi uwsgi-plugins-python
  147. For the configuration, you need to create a file in the
  148. ``/etc/uwsgi/apps-available`` directory. In this example, I will call the
  149. file ``flaskbb.ini``. After that, you can start with configuring it.
  150. My config looks like this for `flaskbb.org` (see below). As you might have noticed, I'm
  151. using a own user for my apps whose home directory is located at `/var/apps/`.
  152. In this directory there are living all my Flask apps.
  153. ::
  154. [uwsgi]
  155. base = /var/apps/flaskbb
  156. home = /var/apps/.virtualenvs/flaskbb/
  157. pythonpath = %(base)
  158. socket = 127.0.0.1:30002
  159. module = wsgi
  160. callable = flaskbb
  161. uid = apps
  162. gid = apps
  163. logto = /var/apps/flaskbb/logs/uwsgi.log
  164. plugins = python
  165. =============== ========================== ===============
  166. **base** /path/to/flaskbb The folder where your flaskbb application lives
  167. **home** /path/to/virtualenv/folder The virtualenv folder for your flaskbb application
  168. **pythonpath** /path/to/flaskbb The same as base
  169. **socket** socket This can be either a ip or the path to a socket (don't forget to change that in your nginx config)
  170. **module** wsgi.py This is the file located in the root directory from flaskbb (where manage.py lives).
  171. **callable** flaskbb The callable is application you have created in the ``wsgi.py`` file
  172. **uid** your_user The user who should be used. **NEVER** use root!
  173. **gid** your_group The group who should be used.
  174. **logto** /path/to/log/file The path to your uwsgi logfile
  175. **plugins** python We need the python plugin
  176. =============== ========================== ===============
  177. Don't forget to create a symlink to ``/etc/uwsgi/apps-enabled``.
  178. ::
  179. ln -s /etc/uwsgi/apps-available/flaskbb /etc/uwsgi/apps-enabled/flaskbb
  180. nginx
  181. ~~~~~
  182. `nginx [engine x] is an HTTP and reverse proxy server,
  183. as well as a mail proxy server, written by Igor Sysoev.`
  184. The nginx config is pretty straightforward. Again, this is how I use it for
  185. `FlaskBB`. Just copy the snippet below and paste it to, for example
  186. ``/etc/nginx/sites-available/flaskbb``.
  187. The only thing left is, that you need to adjust the ``server_name`` to your
  188. domain and the paths in ``access_log``, ``error_log``. Also, don't forget to
  189. adjust the paths in the ``alias`` es, as well as the socket adress in ``uwsgi_pass``.
  190. ::
  191. server {
  192. listen 80;
  193. server_name forums.flaskbb.org;
  194. access_log /var/log/nginx/access.forums.flaskbb.log;
  195. error_log /var/log/nginx/error.forums.flaskbb.log;
  196. location / {
  197. try_files $uri @flaskbb;
  198. }
  199. # Static files
  200. location /static {
  201. alias /var/apps/flaskbb/flaskbb/static/;
  202. }
  203. location ~ ^/_themes/([^/]+)/(.*)$ {
  204. alias /var/apps/flaskbb/flaskbb/themes/$1/static/$2;
  205. }
  206. # robots.txt
  207. location /robots.txt {
  208. alias /var/apps/flaskbb/flaskbb/static/robots.txt;
  209. }
  210. location @flaskbb {
  211. uwsgi_pass 127.0.0.1:30002;
  212. include uwsgi_params;
  213. }
  214. }
  215. Like in the `uWSGI <#uwsgi>`_ chapter, don't forget to create a symlink to
  216. ``/etc/nginx/sites-enabled/``.