publishing to a web server

Hi,

I have read through various documentation but have not managed to find an example of setting up a site to publish to a seperate web server.

Can someone tell me if this is appropriate?

Publishing Root Location: [\internalweb01\Internal](file://\internalweb01\Internal)

I have tested publishing and it errors, giving:

<TABLE cellSpacing=0 cellPadding=0 width=“100%” summary=“File List goes here” border=0><TBODY><TR class=datacell1><TD class=datacell1font vAlign=top>committee881.html</TD><TD class=datacell1font vAlign=top>publish</TD><TD class=datacell1font vAlign=top>failure</TD><TD class=datacell1font vAlign=top>testing input translation (881)</TD></TR></TBODY></TABLE>

How can I track down what it is failing on? When I click on the item (testing input translation (881)) I get “Problem during the assembly of item, Error reported, No results from assembly” but this doen’t tell me anything!

I have looked at the console log and this is what is says:

2008-07-09 12:42:48,988 ERROR [PSAssemblyServlet] Problem assembling item (1236): No results from assembly
2008-07-09 12:42:49,028 ERROR [PSAssemblyService] Site data problem during assembly
com.percussion.services.sitemgr.PSSiteManagerException: The context specified by ID=313 does not exist, or matches multiple contexts if a name.
at com.percussion.services.sitemgr.impl.PSSiteManager.loadContext(Unknown Source)
at sun.reflect.GeneratedMethodAccessor181.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:203)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:162)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:209)
at $Proxy106.loadContext(Unknown Source)
at com.percussion.services.sitemgr.PSSiteHelper.super(Unknown Source)
at com.percussion.services.sitemgr.PSSiteHelper.setupSiteInfo(Unknown Source)
at com.percussion.services.assembly.impl.PSAssemblyService.o00000(Unknown Source)
at com.percussion.services.assembly.impl.PSAssemblyService.assemble(Unknown Source)
at com.percussion.services.assembly.impl.PSAssemblyService.processServletRequest(Unknown Source)
at sun.reflect.GeneratedMethodAccessor426.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
at $Proxy90.processServletRequest(Unknown Source)
at com.percussion.services.assembly.impl.PSAssemblyServlet.service(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.percussion.webdav.PSWebDavRequestFilter.doFilter(Unknown Source)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.percussion.servlets.PSSecurityFilter.doFilter(Unknown Source)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:159)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
at java.lang.Thread.run(Unknown Source)
2008-07-09 12:42:49,028 ERROR [PSAssemblyServlet] Problem assembling item (1236): No results from assembly
2008-07-09 12:42:52,172 INFO [PSPublisherService] Getting content list data took <Stopwatch stopped elapsed 115.48 ms> for 0 items
2008-07-09 12:42:52,182 INFO [PSContentListServlet] Created content list cmsInternalFullBinary publication id 315
Site id: 313, Delivery: filesystem, Context: 1
0 result items took 142.647 milliseconds

HELP!

Thanks

Georgina,

In Setting Up the Production Environment, the chapter “Setting Up Publishing in the Production Environment” documents three scenarios:

[ul]
[li]Publishing to a mapped or mounted drive[/li][li]Publishing to a remote Web server using FTP[/li][li]Publishing to a remote Web server using a remote Publisher[/li][/ul]

It appears you are trying to set up to publish using a UNC path, which is illustrated on p. 81. This option requires the fully-qualified path to the target directory.

This issue seems to be the problem:

2008-07-09 12:42:49,028 ERROR [PSAssemblyService] Site data problem during assembly
com.percussion.services.sitemgr.PSSiteManagerExcep tion: The context specified by ID=313 does not exist, or matches multiple contexts if a name.
at com.percussion.services.sitemgr.impl.PSSiteManager .loadContext(Unknown Source)

Something is referring to a Context with an ID of 313. Most likely, it is a Content List association with an Edition. Does that Context exist in your system?

Try previewing the Content Item in CX, and changing the value in the sys_context parameter of the URL to “313”. Do you see the same error?

RLJII

Hi RLJII,

Thanks for the doc ref, I have read through that and it was helpful. Didn’t think to look in there.

Re:

Something is referring to a Context with an ID of 313. Most likely, it is a Content List association with an Edition. Does that Context exist in your system?

313 is my site ID. This is the URL in my content list:

/Rhythmyx/contentlist?sys_deliverytype=filesystem&sys_assembly_context=313&sys_contentlist=cmsInternalFullNonBinary

is sys_assembly_content meant to be the site id?

Thanks

Georgina

Georgina,

Site and Context are very different objects in Rhythmyx. Briefly, a Site in Rhythmys defines a delivery location; a Context defines an environment where a URL is generated, either to define a path for a link or to define a location where a file will be delivered. For more details about Sites, in the Rhythmyx Implementation Guide, see “Setting Up the Publishing Site and Basic Navigation”, p. 61. For more about Context, see “Defining Contexts and Location Schemes”, p. 304; also see the Rhythmyx Technical Reference, “Link Generation and Context”, p. 128.

Based on the error message you reported, I’d guess that the value for the sys_assembly_context HTML parameter in your Content List URL is wrong. You would have to go into the Publishing Tab on your system and find the ID of the Context you want to use. Typically, you’ll find at least three Contexts:

[ul]
[li]A preview Context (ID=0); this is a standard Rhythmyx Context;
[/li][li]A Publishing Context, used to generate the URL of the delivery location for the assembled HTML files;
[/li][li]An Assembly Context, used to generate the URLS for links between pages and to files.
[/li][/ul]

You want the ID of the Assembly Context. Ideally, the Description of the Context will tell you which one it is.

RLJII

Hi RLJII,

Success! I understand now! It would be useful for the documentation to make it clearer what ID the sys_assembly_context is refereing to.

One other question…

When connecting to a remote webserver, what user creditials would RX be using?

I have managed to get the publishing to work, but only by opening our internal webserver up to everyone, and as I am sure you would be aware, this is not good practice, so I would like to restrict it to only allow Rhythmyx to publish to the box.

Thanks

Georgina

Georgina,

I’ll give you my SFTP configuration:

In the Publisher, the CMS User Name is rxpublisher. The standard password is demo, I believe. No Publisher User Name or password. IP address 127.0.0.1 and port 9992.

The Site registration is the key. It points to the Publisher you defined. Don’t enter a home page. Under IP address, I have servername.tamu.edu. The port is 22. But the User ID is the one you would normally use to log into your FTP server, plus your password.

So, Rhythmyx logs in as you. Or you could create a new FTP user for that purpose.

Georgina,

When using a UNC path, as you appear to be doing, if Rhythmyx is running as a service, the content is delivered as the user that the service uses to log in. The default option is to log in as the local system account. You can modify the service configuration to log in as a different user, and that user will be used to deliver the content. You will need to ensure that the user has privileges on the delivery machine as well as on the Rhythmyx server.

Alternatively, as Michael suggests, you can implement FTP publishing. This option is particularly useful if you have to cross a firewall.

RLJII

Hi,

Thanks both.

We are trying to avoid using FTP because, A) we don’t need to, and B) our networking team are not happy about running it due to security risks.

I will try you suggestion about service permissions/usernames.

Thanks

Georgina

Georgina,

A secure FTP package is available from Percussion PSO. The next version of Rhythmyx will include native support for SFTP.

RLJII