keflavich
keflavich

Reputation: 19205

Jenkins website root path

I'm trying to follow the directions here: https://wiki.jenkins-ci.org/display/JENKINS/Running+Jenkins+behind+Apache to set up my Jenkins server to appear at http://myhost/jenkins. It works, but the Jenkins website thinks http://myhost/ is the jenkins/ root.

I believe this problem is caused by the first warning flag on that web page, i.e. that my context path is not set correctly. However, I can't figure out where to set the context path. The instructions for ubuntu and windows are clear enough, but on Mac OS X 10.6, there is no jenkins.xml file, no /etc/default/jenkins file, and nothing of relevance I can see in ~/.jenkins/config.xml.

So, what am I missing? Where can I tell jenkins that its root is in /jenkins/ instead of /?

Upvotes: 32

Views: 105512

Answers (11)

Alexei - check Codidact
Alexei - check Codidact

Reputation: 23078

For a Windows installation add the prefix within the <arguments> tag (jenkins.xml) and restart the service (Powershell Restart-Service jenkins). E.g.:

  <executable>%BASE%\jre\bin\java</executable>
  <arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war" --prefix=/jenkins</arguments>

Upvotes: 0

Mark McLaren
Mark McLaren

Reputation: 11540

I needed to configure Jenkins on a CentOS box via Puppet using the rtyler/jenkins module. Looking through the module code might suggest that HTTP_PORT and PREFIX should be the parameters in the config_hash but this did not work for me. What worked for me was something like the following Puppet configuration:

  class { 'jenkins':
    config_hash  => { 
       'JENKINS_PORT' => { 'value' => '8085' },
       'JENKINS_ARGS' => { 'value' => '--prefix=/jenkins' },
    },
  }

I was able to confirm that this updated the contents of "/etc/sysconfig/jenkins" (I believe this is the CentOS/RedHat file location).

Upvotes: 0

xring
xring

Reputation: 767

I'm using CentOS7, add JENKINS_ARGS="--prefix=/jenkins" to /etc/sysconfig/jenkins and restart Jenkins worked. Then you can visit via ip:8080/jenkins

Upvotes: 2

Toby Jackson
Toby Jackson

Reputation: 947

Paraphrasing from the document you mentioned;

You need to specify the context/prefix of the Jenkins instance, this can be done by modifying the Jenkins configuration as follows; Either, set the context path by modifying the jenkins.xml configuration file and adding --prefix=/jenkins (or similar) to the entry. Or Set the context path when using by adding --prefix=/jenkins to JENKINS_ARGS in /etc/default/jenkins (Ubuntu) or in an appropriate startup file.

So, how to find these things...

The Jenkins.xml file should be in the $JENKINS_HOME directory, I'm not sure if Mac OS has the "updatedb" and "locate " commands, but you could try doing updatedb && locate jenkins.xml

Also, have a look in the startup scripts; /etc/init.d if installed from a package, or add the JENKINS_ARGS to the environment properties for the User running Jenkins (append to ~user/.profile) or the arguments for the container running Jenkins.


Be aware that if your Jenkins installation (without the prefix argument) was running under:

http://myserver:8080/ => 200 Jenkins is here

adding --prefix=/ci/dashboard in the arguments will produce this behaviour:

http://myserver:8080/ => 404
http://myserver:8080/ci/dashboard => 200 Jenkins is now here

Upvotes: 32

giavac
giavac

Reputation: 1008

Just to provide some recent confirmation of the suggested approaches, on CentOS 7, with Jenkins 1.610, I was able to achieve this by changing jenkinsUrl in jenkins.model.JenkinsLocationConfiguration.xml to the desired one (e.g. http://127.0.0.1:8080/jenkins), adding

JENKINS_ARGS="--prefix=/jenkins"

inside /etc/sysconfig/jenkins, and restarting Jenkins.

FYI the Jenkins installation was made via Puppet, using this Puppet module.

Upvotes: 13

Azee
Azee

Reputation: 1829

  1. Add prefix attribute to /etc/default/jenkins file:

    JENKINS_ARGS="--webroot=/var/cache/jenkins/war --prefix=/jenkins --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT

  2. Configure your web server (e.g. - nginx) to redirect /jenkins to localhost:8080;

Upvotes: 10

Etienne
Etienne

Reputation: 16867

This is how I fixed it under Debian Wheezy running Jenkin 1.557

  • in /etc/default/jenkins , modify the JENKINS_ARGS line by adding "--prefix=$PREFIX"

    JENKINS_ARGS=" ..... --prefix=$PREFIX"

Upvotes: 6

Adam Nutt
Adam Nutt

Reputation: 249

I'm not sure if people are still looking for this, but as I just ran across it, I figured I'd post my solution here.

By following the instructions at here, I was able to set the context located in Library/Preferences/org.jenkins-ci.plist to a more preferable address. The link has all the settings you can edit with an OS X native install.

Upvotes: 0

Łukasz Woźniczka
Łukasz Woźniczka

Reputation: 1695

you need to edit jenkins config file in directory such like : sudo vi /etc/default/jenkins and change var HTTP_PORT next restart jenkins sudo /etc/init.d/jenkins restart

hope this is helpful

Upvotes: 3

sti
sti

Reputation: 11075

Put this into /etc/apache2/other/jenkins.conf:

ProxyPass         /jenkins  http://localhost:8009/jenkins
ProxyPassReverse  /jenkins  http://localhost:8009/jenkins
ProxyRequests     Off
<Proxy http://localhost:8009/jenkins*>
    Order deny,allow
    Allow from 127.0.0.1
</Proxy>

Then execute these commands:

sudo defaults write /Library/Preferences/org.jenkins-ci httpPort 8009
sudo defaults write /Library/Preferences/org.jenkins-ci prefix /jenkins
sudo launchctl stop org.jenkins-ci

The last command tells launchd to stop the running instance of Jenkins. And a new one will automatically be started because the launchd has been configured to always keep Jenkins running.

Upvotes: 7

sblom
sblom

Reputation: 27343

Not sure where to look in config.xml, but at http://myhost/jenkins/configure, there's an option called "Jenkins URL" that you can use to set that.

Upvotes: 15

Related Questions