NAME

Toadfarm::Manual::RunningToadfarm - Command line options

DESCRIPTION

This manual goes through different options on how to start your Toadfarm application.

Basics

You can see the different options by simply running your application with no options:

$ /path/to/your-script
$ /path/to/your-script help

Actions

In addition to all the default commands, Toadfarm adds some more:

Init script

Your script can be used as an init-script. Example script:

#!/path/to/your/perl
### BEGIN INIT INFO
# Provides:          toadfarm
# Required-Start:    $local_fs $network mysql postgresql
# Required-Stop:     $local_fs $network mysql postgresql
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Toadfarm web application
### END INIT INFO

use Toadfarm -init;
# ...
start;

You can put the code above in /etc/init.d/your-script:

# Create a toadfarm script in init.d
$ sudo $EDITOR /etc/init.d/your-script

# Make it executable
$ sudo chmod +x /etc/init.d/your-script

# Make it start on boot
$ sudo update-rc.d your-script defaults;

Remember that the hashbang can be anything, so if you have Toadfarm and Mojolicious running under plenv or Perlbrew you need to change the hashbang part to something like:

#!/home/USERNAME/.plenv/versions/5.21.11/bin/perl5.21.11
#!/home/USERNAME/perl5/perlbrew/perls/perl-5.16.0/bin/perl

Cron

If you want to use crontab to start your script, you can do it with this line:

* * * * * /path/to/your-script start 1>/dev/null 2>/dev/null

The trick here is to use "start" which will only start your server and not hot deploy it if it's already running.

Other ways

It is possible to start the server using the standard Mojolicious tools as well:

$ /path/to/your-script daemon --listen http://*:5000
$ morbo /path/to/your-script
$ hypnotoad /path/to/your-script

Listen to standard HTTP ports

Setting up iptables rules will allow Toadfarm to listen to port 8080, while still receiving traffic on the default port. This way you can start and run toadfarm as a normal user instead of "root".

$ iptables -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
$ iptables -A PREROUTING -i eth0 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8443

(You need to replace "eth0" with the appropriate interface)

Note that you can also start toadfarm as root to listen to port 80, but run the workers as a non-priviledged user:

#/usr/bin/env perl
use Toadfarm -init;
# ...
start ["http://*:80"], group => "www", user => "some-www-user";

Changing user has one implication: The workers will not use some-www-user's secondary groups. So if "some-www-user" is part of the "www" and "db" groups, then the process will only be run as "some-www-user" part of the "www" group.

Also remember that without specifying group the process run with root's current groups.

SEE ALSO

See also Toadfarm::Manual::Intro and Toadfarm::Manual::Config.

AUTHOR

Jan Henning Thorsen - jhthorsen@cpan.org