diff --git a/.gitignore b/.gitignore index 5c693fb4f37..ad97ad1a39e 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ .ropeproject/ _build bower_components/ +contrib/supervisord.log deploy/.vagrant dist/* local_settings.py diff --git a/contrib/readme.rst b/contrib/readme.rst new file mode 100644 index 00000000000..cbda57f9de4 --- /dev/null +++ b/contrib/readme.rst @@ -0,0 +1,28 @@ +Running Read the Docs via Supervisord +===================================== + +This is the easiest way to start all of the commands you'll need for development +in an environment relatively close to the production evironment. All you need is +``supervisord`` and ``redis-server``. Installation of ``redis-server`` is +outside the scope of this documentation, but once installed, all you need to run +from ``supervisord`` is:: + + pip install supervisord + cd contrib/ + supervisord + +This will bring up a web instance for the dashboard, a web instance for +documentation serving, two celery instances, and redis-server. + +If you already are running redis-server, this will complain about the port +already being in use, but will still load. + +Debugging +--------- + +To debug, set trace points like normal, with ``pdb``/``ipdb``. Then you can +connect to the process by bringing it to the foreground:: + + supervisorctl fg main + +You'll still see logging to STDERR on the main supervisord process page. diff --git a/contrib/supervisord.conf b/contrib/supervisord.conf new file mode 100644 index 00000000000..ef887eca2a2 --- /dev/null +++ b/contrib/supervisord.conf @@ -0,0 +1,42 @@ +[supervisord] +nodaemon = True +directory = ../ +loglevel = error +strip_ansi = False +environment = PYTHONUNBUFFERED=1,READTHEDOCS_INSTANCE=readthedocs.org + +[inet_http_server] +port = 127.0.0.1:9001 +username = 🍔 +password = 🍟 + +[supervisorctl] +username = 🍔 +password = 🍟 + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[program:redis] +command = redis-server +directory = ../ +priority = 0 +startretries = 0 +stderr_logfile = /dev/stderr +stderr_logfile_maxbytes = 0 + +[program:main] +command = python manage.py runserver 8000 +directory = ../ +priority = 100 +stopasgroup = True +stderr_logfile = /dev/stderr +stderr_logfile_maxbytes = 0 + +[program:celery] +command = celery worker -A readthedocsinc -Q default,celery,web,builder -l DEBUG -c 2 +directory = ../ +priority = 100 +stopasgroup = True +stderr_logfile = /dev/stderr +stderr_logfile_maxbytes = 0