code: def start_geoserver(options):
      
  
      from geonode.settings import OGC_SERVER 
      GEOSERVER_BASE_URL = OGC_SERVER['default']['LOCATION']
  
      url = "http://localhost:8080/geoserver/"
      if GEOSERVER_BASE_URL != url:
          print 'your GEOSERVER_BASE_URL does not match %s' % url
          sys.exit(1)
  
      download_dir = path('downloaded').abspath()
      jetty_runner = download_dir / os.path.basename(JETTY_RUNNER_URL)
      data_dir = path('geoserver/data').abspath()
      web_app = path('geoserver').abspath()
      log_file = path('geoserver/jetty.log').abspath()
  
      # @todo - we should not have set workdir to the datadir but a bug in geoserver
      # prevents geonode security from initializing correctly otherwise
      with pushd(data_dir):
          sh(('java -Xmx512m -XX:MaxPermSize=256m'
              ' -DGEOSERVER_DATA_DIR=%(data_dir)s'
              # workaround for JAI sealed jar issue and jetty classloader
              ' -Dorg.eclipse.jetty.server.webapp.parentLoaderPriority=true'
              ' -jar %(jetty_runner)s'
              ' --log %(log_file)s'
              ' --path /geoserver %(web_app)s'
              ' > /dev/null &' % locals()
            ))
  
      info('Starting GeoServer on %s' % url)
  
      # wait for GeoServer to start
      started = waitfor(url)
      info('The logs are available at %s' % log_file)
  
      if not started:
          # If applications did not start in time we will give the user a chance
          # to inspect them and stop them manually.
          info(('GeoServer never started properly or timed out.'
                'It may still be running in the background.'))
          sys.exit(1)
docs: Start GeoServer with GeoNode extensions