That is probably what I would do, including using a systemd "instantiated
service" to start N instances.

I think it would be great for the Racket web server to come with a
parallelism story built in (rather than just concurrency), because I
generally think internalizing extra-linguistic context is a good thing, but
I think it makes complete sense to just get something running for now with
systemd. That recent discussion does make it seem like adding parallelism
to the Racket web server might be less daunting to implement than I
previously thought, though.

-Philip


On Thu, Nov 29, 2018 at 5:22 PM Brian Adkins <lojicdot...@gmail.com> wrote:

> Thanks. I think that's the approach I'll take. I don't think I'll need to
> use monit at all then. I will need to start N Racket processes though. I
> found this article that may work for me:
>
>
> https://serverfault.com/questions/730239/start-n-processes-with-one-systemd-service-file
>
> I don't think I'll try the SO_REUSEPORT idea at this point, so I'll need
> each of the N Racket servers to listen on a different port and have nginx
> reverse proxy to them.
>
> I think by having systemd manage the N processes separately, I can get
> auto-restart etc. for free w/o having to code up a master Racket process
> supervising N worker processes.
>
> On Thursday, November 29, 2018 at 5:17:38 PM UTC-5, Philip McGrath wrote:
>>
>> To give you an example, here's a very basic systemd file that I use to
>> run a Racket web server:
>>
>> /etc/systemd/system/ricoeur-portal.service
>> [Unit]
>> Description=Digital Ricoeur portal web server
>>
>> [Service]
>> User=ricoeurd
>> Group=ricoeurd
>> AmbientCapabilities=CAP_NET_BIND_SERVICE
>> WorkingDirectory=/home/ubuntu/ricoeur-portal/
>> ExecStart=/usr/local/bin/ricoeur-portal --production
>>
>> [Install]
>> WantedBy=multi-user.target
>>
>> It's particularly nice from a security perspective that
>> `CAP_NET_BIND_SERVICE` makes it easy to run as a user with minimal
>> privileges and still be able to bind to ports 80 and 443.
>>
>> -Philip
>>
>>
>> On Thu, Nov 29, 2018 at 5:09 PM Alex Harsanyi <alexha...@gmail.com>
>> wrote:
>>
>>>
>>>
>>> On Thursday, November 29, 2018 at 11:17:38 PM UTC+8, Brian Adkins wrote:
>>>>
>>>> I'm running Ubuntu 18.04 LTS, so I do have systemd. Just to clarify,
>>>> are you stating that systemd will take a program designed to run as a
>>>> foreground process and run it in the background automatically?
>>>>
>>>
>>> Yes.
>>>
>>>
>>>> I was planning on using monit to monitor/restart/etc. a set of Racket
>>>> processes, but maybe systemd will do everything I need such as restarting
>>>> one if it crashes.
>>>>
>>>> On Wednesday, November 28, 2018 at 10:45:59 PM UTC-5, Alex Harsanyi
>>>> wrote:
>>>>>
>>>>>
>>>>> If your Linux installation has systemd, you can create a service file
>>>>> for your application -- this way, systemd will manage the application as a
>>>>> server or daemon.  Systemd will even redirect stderr messages to the 
>>>>> system
>>>>> log.
>>>>>
>>>>> Alex.
>>>>>
>>>>> On Thursday, November 29, 2018 at 10:56:25 AM UTC+8, Brian Adkins
>>>>> wrote:
>>>>>>
>>>>>> I briefly looked at the daemonize package on Ubuntu linux, but
>>>>>> couldn't get it to work properly. I found the following Rosetta Code 
>>>>>> page:
>>>>>>
>>>>>> https://rosettacode.org/wiki/Run_as_a_daemon_or_service#Racket
>>>>>>
>>>>>> So, I just tried the code in that example, and it seems to work fine:
>>>>>>
>>>>>> (module+ main
>>>>>>         * ((get-ffi-obj 'daemon #f (_fun _int _int -> _int)) 0 0)*
>>>>>>          (serve/servlet
>>>>>>           dispatcher
>>>>>>           #:log-file "hello.log"
>>>>>>           #:stateless? #t
>>>>>>           #:port 6995
>>>>>>           #:command-line? #t
>>>>>>           #:file-not-found-responder not-found
>>>>>>           #:launch-browser? #f
>>>>>>           #:servlet-regexp #rx""))
>>>>>>
>>>>>> I'm just wondering if there is a better way to accomplish this since
>>>>>> it feels a bit kludgy to me.
>>>>>>
>>>>>> Thanks,
>>>>>> Brian
>>>>>>
>>>>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Racket Users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to racket-users...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>> --
> You received this message because you are subscribed to the Google Groups
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to racket-users+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to