You are browsing a read-only backup copy of Wikitech. The live site can be found at wikitech.wikimedia.org
Help talk:Toolforge/Web
portgrabber
I'm not seeing portgrabber(1) anywhere. Where is it, or what are the up-to-date instructions for running a non-PHP Web service? abartov (talk) 07:36, 14 December 2014 (UTC)
- There is no documentation for this. The source can be found here, i. e. basically connect to
/tmp/sock.portgranter
, send$tool\n
there, receive a port number back, connect to port 8282 on tools-webproxy, send.*\n$host:$port\n
there, leave the sockets open until your server terminates. Note that for non-PHP = Tomcat, there iswebservice tomcat start
. --Tim Landscheidt (talk) 07:53, 14 December 2014 (UTC)- Thanks, Tim! This was helpful. I now see portgrabber is reachable on the grid, even if not from the tool's command line. I ran into more difficulty running my server, but it does not appear to be related to portgrabber, but to the environment. abartov (talk) 21:27, 14 December 2014 (UTC)
- I'm sorry, I misread your question to mean "how does portgrabber work", not "how does one use portgrabber". It's rather pretty easy: Call it with
portgrabber $tool $command [$arg1…$argn]
, and it will grab a port number and call$command [$arg1…$argn] $port
(leaving the sockets open until$command
terminates). --Tim Landscheidt (talk) 21:44, 14 December 2014 (UTC)
- I'm sorry, I misread your question to mean "how does portgrabber work", not "how does one use portgrabber". It's rather pretty easy: Call it with
- Thanks, Tim! This was helpful. I now see portgrabber is reachable on the grid, even if not from the tool's command line. I ran into more difficulty running my server, but it does not appear to be related to portgrabber, but to the environment. abartov (talk) 21:27, 14 December 2014 (UTC)
Can't move logs?
Per the instructions, I've tried modifying the ~/.lighttpd.conf from
server.errorlog = "$home/error.log" server.breakagelog = "$home/error.log"
to
server.errorlog += "$home/logs/error.log" server.breakagelog += "$home/logs/error.log"
And I just get hit with
2015-08-03 02:03:30: (log.c.166) server started 2015-08-03 02:03:30: (log.c.118) opening errorlog '/data/project/avicbot/error.log$home/logs/error.log' failed: No such file or directory 2015-08-03 02:03:30: (server.c.1012) Opening errorlog failed. Going down.
my ~/logs directory does exist, but it seems it's trying to go to '/data/project/avicbot/error.log$home/logs/error.log' ? Is this expected behavior, or am I doing something wrong? #avicennasis@wikitech 02:16, 3 August 2015 (UTC)
- If you mean the section "Default configuration", that is an extract of the corresponding shell script
lighttpd-starter
where$home
will be replaced with the tool's home directory. So in your~/.lighttpd.conf
, you need to use explicit paths (e. g.,/data/project/avicbot/logs/error.log
) instead. - But your intention cannot be fulfilled: You cannot use
server.errorlog =
("Duplicate config variable in conditional 0 global: server.errorlog"), and usingserver.errorlog +=
will append the path to the default one and thus not work either. - If you are really committed to putting logs in
~/logs
, you could theoretically duplicate the whole web service set up and change theserver.errorlog
configuration to your liking, but for all practical purposes I would try to make peace with~/error.log
:-). --Tim Landscheidt (talk) 03:06, 3 August 2015 (UTC)
- I spoke too soon: If you use a construct like:
$HTTP["url"] =~ "^/" {
server.errorlog = "/data/project/avicbot/logs/error.log"
}
- you can make
lighttpd
output its log there, but the grid system will create~/error.log
nonetheless. However I would still recommend sticking to the "standard" layout. --Tim Landscheidt (talk) 03:19, 3 August 2015 (UTC)
- you can make
- Ah well. I'll learn to get used to it, it seems. Thank you for the reply, though. #avicennasis@wikitech 07:18, 4 August 2015 (UTC)
Redirecting http to https
What is the best way to redirect all traffic to https? I have tried the following but it results in an infinite loop:
$HTTP["scheme"] == "http" { $HTTP["host"] =~ ".*" { url.redirect = (".*" => "https://%0$0") } }
Thanks,
Sam Wilson 06:19, 13 February 2017 (UTC)
- I believe this is impossible with
~/.lighttpd.conf
alone. I looked at a similar question and the source code of the suggested solutionmod_extforward
, but after adding:
server.modules += ( "mod_extforward" ) extforward.forwarder = ( "all" => "trust")
- to
~/.lighttpd.conf
$HTTP['scheme']
still always washttp
. So we would have to write our ownlighttpd
module which we probably won't do :-).
- The bigger picture of making Tool Labs
https
-only is tracked as phab:T102367, and it's probably best to solve this there globally. --Tim Landscheidt (talk) 10:11, 13 February 2017 (UTC)
- @Tim Landscheidt: Hmm, bother! Ah well, it's a shame it can't be done in .lighttpd.conf, but as you say it's something that will be solved globally (at some point). In the meantime I'm doing this: https://github.com/wikisource/ia-upload/commit/66c62dfafb10d82797974a8fd6e394d6b3106d4a (based on code in video2commons). I might add a note to this page about how to do this.
- Sam Wilson 10:29, 13 February 2017 (UTC)
Creating a virtual environment for a Python app
python3 -m venv ~/www/python/venv
Does not seem to work, see also https://phabricator.wikimedia.org/T140103
The Phabricator task suggests instead:
virtualenv -p python3 venv
- Apparently the command needed depends on which host operating system you are using. On a Toolforge bastion you need the
virtualenv -p python3 venv
form and will end up with a Python 3.4.0 virtual environment. Inside a Kubernetes python container you need to use thepython3 -m venv ~/www/python/venv
form and will end up with a Python 3.4.2 virtual environment. --BryanDavis (talk) 19:48, 5 July 2017 (UTC)
process.env.PORT not defined
Note that the node.js instructions fail on ToolForge, as the PORT environment variable is not found by server.js. Smith609 (talk) 06:15, 26 September 2018 (UTC)
- Based on the comments on the Phabricator task, it looks like this problem was local to the tool or the result of a configuration issue. --BryanDavis (talk) 22:22, 28 September 2018 (UTC)