INSPIRE-MIF / helpdesk-validator

Community discussion forum for INSPIRE validation issues
42 stars 23 forks source link

Problem deploying to production host #779

Open GISClaes opened 2 years ago

GISClaes commented 2 years ago

Description Unable to deploy the software to a production host. It still reference localhost after modifying 'etf.webapp.base.url'

How to reproduce

  1. Download inspire-validator ZIP file.
  2. Extract it's contets
  3. Open the .war file with a archive tool that supports in place edit.
  4. Modify etf.webapp.base.url under "WEB-INF/classes/etf-config.properties". (smilar to http://yourserver/etf-webapp)
  5. Build and push the image to your docker repo
  6. Deploy/run with the same host specified as base url under etf.config.properties.
  7. Open web developer tools and visit the page for "Test reports". You will see a request to localhost

I believe it's reading urls from validator/js/config.js. I've tried to rewrite requests through nginx/apache, rebuilding the image, putting files to read-only. But none of them has worked and I'm currently at a loss of what to do next.

Versions/software

jenriquesoriano commented 2 years ago

Dear @GISClaes ,

thank you very much for the reported issue. We are reproducing the steps indicated in the description to finish understanding in which of them is the issue. In case we need more information, we will contact you in this respect.

Best regards

jenriquesoriano commented 2 years ago

Dear @GISClaes ,

as you pointed, we have verified that it is necessary to configure the Validator UI properties in order to properly deploy. Thus, it is necessary to modify the configuration values in the /validator/js/config.js file inside the ui.zip (to point to the corresponding production domain). We will update the deployment instructions accordingly to prevent this issue from happening in the future.

Thanks for your feedback and, please, keep us posted wheter the production deployment finally worked or if you need further assistance from our side.

Best regards,

GISClaes commented 2 years ago

Thanks for the feedback @jenriquesoriano

I updated config.js inside ui.zip and rebuilt the container. However after deployment we receive status code 503 when attempting to browse certain pages.

Checking DevTools in chrome you can see the request (test-reports)

  Request URL: http://ourdomain.se:8090/validator/v2/TestRuns.json?limit=3000&_=1654767017785
  Request Method: GET
  Status Code: 503 Service Unavailable

Same for test-selection

  Request URL: http://ourdomain.se:8090/validator/v2/TestRuns
  Request Method: POST
  Status Code: 503 Service Unavailable

The actual response is pretty much the same for both requests

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/>
<title>Error 503 </title>
</head>
<body>
<h2>HTTP ERROR: 503</h2>
<p>Problem accessing /validator/v2/TestRuns. Reason:
<pre>    Service Unavailable</pre></p>
<hr /><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.3.6.v20151106</a><hr/>
</body>
</html>

To summarize we got rid of the reference to localhost however the production server can't handle the requests. Keep in mind all this is done without any reverse-proxy between client and production host

I'll try to debug it further but I'm not feeling lucky.

Kind regards Claes

GISClaes commented 2 years ago

This could be related to previous comment or a separate issue. When the container starts it mention FunctX can't be downloaded (see error below). We have added proxy configuration as specified under "Exposing the validator through a proxy(Docker)" by using environment variables. I even added both http and https to be sure. The startup log for the container indicates that our proxy settings is included under "JAVA_OPTIONS".

The proxy is working is some fashion at least. We can see traffic originating from the server going to our Pre-defined Atom. However there is no attempt to download functx from the container through our proxy.

I've tried adding it manually and comparing the file structure/permission with my local machine. They match to a T, yet it still suggest us to download/add it.

...
de.interactive_instruments.exceptions.InitializationException: FunctX XQuery Function Library installation failed. If a proxy server is used, set the Java Virtual Machine parameter 'http.proxyHost'. Otherwise download functx-1.0.xar manually, extract the file (it is a ZIP file) and copy it to the BaseXRepo 'repo' folder /etf/ds/db/repo [bxerr:BXRE0001] Package 'https://files.basex.org/modules/expath/functx-1.0.xar' does not exist.
...

//Claes

jenriquesoriano commented 2 years ago

Dear @GISClaes ,

thanks for sharing your progress. At this point, we would verify the logs of the different components. Furthermore, we are not sure of the exact architecture that is in place in your production environment.

Thus, in order to progress, we kindly ask you to provide us with:

Best regards,

GISClaes commented 2 years ago

Sorry for the delayed response, it has been a busy week.

Complete logtrace of the deployment

Could you elaborate what you mean by logtrace of the deployment? will docker logs suffice?

Modified docker deployment you are using

I'll redo them and make sure to document any changes. But it should only be changes mentioned under "Deployment on production host" and "/validator/js/config.js" in UI.zip.

Regarding our architecture. All traffic to internet must go through a proxy (squid). Installation of docker is done through https://github.com/saltstack-formulas/docker-formula with upstream set to repo.

Edit: Formatting