Skip to main content

Running supervisord on Codio

Codio currently does not provide a parts install for supervisord. This can make developing apps that uses Laravel queues an issue since you'd then have to keep a terminal open at all times. So let's keep things simple, and install supervisord manually.

Installing the tools

The only thing from parts that we will need, is pip. This is a python package management tool, which is what supervisord is written in. Just grab this to your box like so:
parts install pip
Now that we have pip, we can pull in supervisord through it.
pip install supervisord

Configuring environment

Now that supervisord is installed, we need to setup the boxes configuration to make it easier to use. We need to:

  1. Add the python bin to the path.
  2. Make the configuration directory for supervisor
  3. Make a log directory
To add the python bin folder to your path, open up /home/codio/.bash_profile and add the following:
$home/.parts/packages/python2/2.7.6-2/bin
to the first path entry. Remember to separate it with a colon between other path declarations.
Now, we need to make the directories for storing the configuration and logs. We will just put these right under the home as well.
mkdir -p ~/etc/supervisor/programs && mkdir ~/logs

Now all we need to do before we can begin, is refresh the path in use. You can either restart the terminal or execute the following command.
source ~/.bash_profile

Configuring supervisord

The only thing left to do to actually run supervisor, is to setup its configuration file. To create the conf file, we will execute the following command to create the file in the ~/etc folder.
echo_supervisord_conf > ~/etc/supervisord.conf

Within this new file, modify the log file to go to ~/logs and at the very bottom uncomment [include] and its rule. Then set the value of the rule to "supervisor/programs/*.ini" which will look relative to the path of the configuration file and grab the configs in there. This way you can make a new file for each adviser you want to keep things neat.

Now that the configuration is setup, just go make your queue.ini file. If you don't know how to set that up, Chris Fidao has a good post which should be enough to get you going.

To verify things run, we need to run supervisord with the configuration option pointing to the conf file.

supervisord --configuration=/home/codio/etc/supervisord.conf

Note that when running supervisorctl you need to pass the configuration location in as well. You may wish to create an alias to make it easier.

Autostart

To autostart supervisord on startup, just add the command you use to manually start it to startup.sh. For more information on setting that up you can check out the Codio documentation.

Popular posts from this blog

Laravel, Codio, and Nginx

I have recently come across a *sweet* online IDE, this would be Codio . Codio lets you develop in the cloud and run the code on an actual server. This way you can write your code and run it in the cloud, keeping your development environment universal and in my case safe-guarding against my own nonsense. While Codio does offer their own  documentation  on getting Laravel going, it uses Apache and MySQL. So here is getting going with Nginx, MariaDB, and PHP-FPM on Codio for Laravel development. Create your project Create a project just how you normally would, except select "Git" as the method for getting the base code into the workspace. This will give you an input where you can either put in an HTTP or SSH based git repository URL. If you are using SSH and you haven't setup the SSH key on your repository, it will prompt you to do so automatically with a key Codio generates. For now, I'm going to just use the standard HTTP URL for Laravel which is https://github.co

My PHP Wishlist

PHP Wishlist These are things that I think would help developers build better programs with far fewer lines of code. Simple enough? Let's get to it. Scalar Type Hints and a Strict Mode Currently one of the hottest RFCs in PHP history perhaps, Scalar Type Hints. This is a feature that allows developers to specify any type a given parameter should be. Currently PHP only supports object types and arrays for type hinting. This allows for string, integer, boolean, and the like.  However, nothing is simple in PHP. With this, some developers want conversion to happen if the wrong type is given (string to integer for example if '3' is passed in) while others want strict enforcing of types. The RFC has a middle-ground of loose typing by default like everything else in PHP, but the option to turn on a strict mode. My issue with the RFC is... The syntax is horrible for declaring strict mode. I was actually entirely for it up until a few days ago. I read a comment on

Form macros in Laravel

Form macros are a really cool part of Laravel. They are described in the documentation , but that doesn't show you exactly how to use them in your application. So here is how I do it. Load macros on the start of the application To register the macros if we follow the docs we simply need to do something like Form::macro('myField', function() { return '<input type="awesome" >'; }); But how do we get this to load when needed? My solutions is to simply have it load on the start of the application. I do this by making a folder in my app directory called "misc" which just holds files for different things that I have to startup this way. Inside of that folder I make a file called "form_macros.php". To load this file on startup, we are going to require it within app/start/global.php. Simply add require app_path() . 'misc/form_macros.php'; to the end of the global.php file. This will make sure that the form macros are