Skip to content

Commit

Permalink
mention the Linux Subsystem for Windows
Browse files Browse the repository at this point in the history
  • Loading branch information
kraih committed Sep 8, 2016
1 parent 8fdf806 commit 7a67c61
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 22 deletions.
31 changes: 16 additions & 15 deletions lib/Mojolicious/Guides/Cookbook.pod
Expand Up @@ -122,9 +122,9 @@ script.
=head2 Hypnotoad

For bigger applications L<Mojolicious> contains the UNIX optimized pre-forking
web server L<Mojo::Server::Hypnotoad>, which can take advantage of multiple CPU
cores and copy-on-write memory management to scale up to thousands of
concurrent client connections.
web server L<Hypnotoad|Mojo::Server::Hypnotoad>, which can take advantage of
multiple CPU cores and copy-on-write memory management to scale up to thousands
of concurrent client connections.

Mojo::Server::Hypnotoad
|- Mojo::Server::Daemon [1]
Expand Down Expand Up @@ -172,15 +172,16 @@ losing a single incoming connection, just by running the command above again.
$ hypnotoad ./script/my_app
Starting hot deployment for Hypnotoad server 31841.

You might also want to enable proxy support if you're using Hypnotoad behind a
reverse proxy. This allows L<Mojolicious> to automatically pick up the
C<X-Forwarded-For> and C<X-Forwarded-Proto> headers.
You might also want to enable proxy support if you're using
L<Hypnotoad|Mojo::Server::Hypnotoad> behind a reverse proxy. This allows
L<Mojolicious> to automatically pick up the C<X-Forwarded-For> and
C<X-Forwarded-Proto> headers.

# myapp.conf
{hypnotoad => {proxy => 1}};

To manage Hypnotoad with systemd, you can use a unit configuration file like
this.
To manage L<Hypnotoad|Mojo::Server::Hypnotoad> with systemd, you can use a unit
configuration file like this.

[Unit]
Description=My Mojolicious application
Expand All @@ -198,10 +199,10 @@ this.

=head2 Zero downtime software upgrades

Hypnotoad makes zero downtime software upgrades (hot deployment) very simple,
as you can see above, but on modern operating systems that support the
C<SO_REUSEPORT> socket option, there is also another method available that
works with all built-in web servers.
L<Hypnotoad|Mojo::Server::Hypnotoad> makes zero downtime software upgrades (hot
deployment) very simple, as you can see above, but on modern operating systems
that support the C<SO_REUSEPORT> socket option, there is also another method
available that works with all built-in web servers.

$ ./script/my_app prefork -P /tmp/first.pid -l http://*:8080?reuse=1
Server available at http://127.0.0.1:8080
Expand All @@ -218,9 +219,9 @@ parameter.

=head2 Nginx

One of the most popular setups these days is Hypnotoad behind an
L<Nginx|http://nginx.org> reverse proxy, which even supports WebSockets in
newer versions.
One of the most popular setups these days is
L<Hypnotoad|Mojo::Server::Hypnotoad> behind an L<Nginx|http://nginx.org> reverse
proxy, which even supports WebSockets in newer versions.

upstream myapp {
server 127.0.0.1:8080;
Expand Down
19 changes: 13 additions & 6 deletions lib/Mojolicious/Guides/FAQ.pod
Expand Up @@ -78,9 +78,16 @@ In addition we will also keep the distribution installable up to a certain
legacy version that we deem worthy of supporting, but not specifically optimize
for it, this is currently 5.10.1.

=head2 How well is Windows supported?

Windows is fully supported by L<Mojolicious>, some features such as
L<subprocesses|Mojo::IOLoop/"subprocess"> and
L<Hypnotoad|Mojo::Server::Hypnotoad> will however require the use of the
L<Linux Subsystem for Windows|https://msdn.microsoft.com/commandline/wsl/>.

=head2 Do I need to clean my environment before testing Mojolicious?

Mojolicious uses many environment variables both internally and externally,
L<Mojolicious> uses many environment variables both internally and externally,
notably (but not exclusively) those starting with the prefix C<MOJO_*> and
C<PLACK_ENV>. The test suite expects a clean environment; testing with a
non-standard environment is unsupported and is unlikely to succeed. Therefore
Expand Down Expand Up @@ -157,11 +164,11 @@ allow matching of the C<.> character.

=head2 Can I configure Hypnotoad from the command line?

No, you can't, Hypnotoad is a bit special in this regard. Because when you
initiate a zero downtime software upgrade (hot deployment), you are only really
sending a C<USR2> signal to the already running server, and no other information
can be passed along. What you can do instead, is to use a
L<Mojolicious::Plugin::Config> or L<Mojolicious::Plugin::JSONConfig>
No, you can't, L<Hypnotoad|Mojo::Server::Hypnotoad> is a bit special in this
regard. Because when you initiate a zero downtime software upgrade (hot
deployment), you are only really sending a C<USR2> signal to the already running
server, and no other information can be passed along. What you can do instead,
is to use a L<Mojolicious::Plugin::Config> or L<Mojolicious::Plugin::JSONConfig>
configuration file.

# myapp.conf
Expand Down
2 changes: 1 addition & 1 deletion script/hypnotoad
Expand Up @@ -43,7 +43,7 @@ hypnotoad - Hypnotoad HTTP and WebSocket server
=head1 DESCRIPTION
Start L<Mojolicious> and L<Mojolicious::Lite> applications with the
L<Mojo::Server::Hypnotoad> web server.
L<Hypnotoad|Mojo::Server::Hypnotoad> web server.
=head1 SEE ALSO
Expand Down

0 comments on commit 7a67c61

Please sign in to comment.