GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  TOADFARM::MANUAL::RUNNINGTOADFARM (3)

.ds Aq ’

NAME

Toadfarm::Manual::RunningToadfarm - Command line options

CONTENTS

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-toadfarm-script
  $ /path/to/your-toadfarm-script help



    Actions

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



  $ /path/to/your-script start



Will only start your application if not running.

o Toadfarm::Command::stop



  $ /path/to/your-script stop



Will stop your application. Note that this command waits for the application to stop, which could take several seconds.

o Toadfarm::Command::reload



  $ /path/to/your-script reload



Will either start the application or hot deploy it. This means loading in a new version of your application, without losing any connections.

    Init script

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



  #!/path/to/your/perl

  eval exec /path/to/your/perl -S $0 ${1+"$@"}
      if 0; # not running under some shell

  ### 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;
  run_as "www-data";
  # logging, mount, plugins, ...
  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 <https://github.com/tokuhirom/plenv> or Perlbrew <http://perlbrew.pl/> 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.

    Docker

The Docker section is EXPERIMENTAL. Help wanted.

A Toadfarm powered script can be run inside a docker <https://www.docker.com> container with hot reloading. Here is an example Docker file:



  FROM perl:5.22.1
  WORKDIR /usr/src/myapp
  RUN cpanm Toadfarm
  RUN chsh -s /bin/sh www-data
  USER www-data
  CMD [ "perl", "./your-toadfarm-script", "start", "--tail", "-f" ]



Note --tail and -f is after start, which will keep the script in foreground, even though your Mojolicious application has forked.

The file can be built and started using these commands:



  $ sudo docker build -t my-perl-app .
  $ sudo docker run --name my-running-app -d \
    -v $PWD:/usr/src/myapp:ro my-perl-app



Later if you want to reload the application, you can do:



  $ sudo docker exec my-perl-app perl your-toadfarm-script reload



Or you can tail the application log with one of these commands:



  $ sudo docker exec my-perl-app logs -f
  $ sudo docker exec my-perl-app perl your-toadfarm-script tail -f



    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)

You need to use Mojolicious::Plugin::SetUserGroup if you want to start Toadfarm as root and then change to a less priviledged used in the workers. Example:



  # logging, mount, ...
  plugin SetUserGroup => {user => "www-data"};
  start ["http://*:80"];



SEE ALSO

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

AUTHOR

Jan Henning Thorsen - jhthorsen@cpan.org
Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 TOADFARM::MANUAL::RUNNINGTOADFARM (3) 2016-01-12

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.