Liste de diffusion webobjects-dev@wocommunity.org Message #581
De: Markus Ruggiero (rucotec) <webobjects-dev@wocommunity.org>
Sujet: Re: [WO-DEV] Apache on Ubuntu issue
Date: Sat, 21 Mar 2026 14:19:31 +0100
A: WebObjects & WOnder Development <webobjects-dev@wocommunity.org>
Données signées (Text SHA256)
Hi Ted,

I think there is more to it than just Apache - and then there is less required....

I am running development apps from within Eclipse without having to do anything special. It just works (as they say in the Apple world). So I am not sure you need anything other than Eclipse. What probably helps is checking the “Create Bundle” box in the WOLips build preferences. And of course you should reference all WebServerResources through filename bindings (not href or src). These can have paths (don’t start them with a /) and inside your WebServerResources folder you simply create that folder path. If you reference a resource that is inside your app’s bundle specify “app” as the bundle name binding (not specifying it should default to “app” anyway). For all resources referenced from any framework, yours or any other, just give the framework name to the respective binding. I never bothered developing through Apache and run all my dev apps right from Eclipse. And if you specify WOPort in the Eclipse Run/Debug configuration for your app(s) you can run two apps at the same time in dev/debug mode inside Eclipse and call direct actions on one from the other. Perfect for debugging client/server interactions.

Regarding Apache on macOS (if you really want to have even more fun):

Install Apache with Homebrew and you should already be good. No need for any Apache dev tools. The only thing you need is a compiled WOAdaptor. Of course you can install the Apache dev tools and compile the adaptor yourself (I've done that once) or just ask for a binary😇.

When using Homebrew the following directories are important (use brew info apache2 and read the output)

/usr/local/var/www is the document root for your server
/usr/local/etc/httpd is the system wide config directory

I have several virtual hosts configured, none with a public domain name, just a name resolved through the standard /etc/hosts file (edit with sudo required). I have then installed wotaskd and JavaMonitor and now have a deployment environment on my dev MacBook pro. There is really no difference to an installation on Linux (just the default paths are different)

Here are two examples. “info” is a static site for reference information, “woapps” is my deployment site.
The chosen domain name is simply “info”, no tld or anything. And for the fun of it I set up the domain “woapps” for my test deployments

Edit /etc/hosts and add the following lines:
127.0.0.1       info
127.0.0.1       woapps

You can now ping info and woapps and should get a positive answer, no need for reboot or anything.

Edit /usr/local/etc/httpd/httpd.conf
Specify your username as the user to run the Apache server
Make sure these two lines look the way they are here. These will allow you to have your virtual host specs inside the sites folder

# Virtual hosts
#Include /usr/local/etc/httpd/extra/httpd-vhosts.conf
Include /usr/local/etc/httpd/sites/*.conf

Here is my config file for the woapps virtual host
$ cat /usr/local/etc/httpd/sites/woapps_80.conf

<VirtualHost *:80>
        ServerName woapps
        ServerAdmin admin@example.com
        DocumentRoot "/usr/local/var/www/woapps/htdocs"
        DirectoryIndex index.html index.php /xcode/ /wiki/ default.html
        CustomLog /usr/local/var/www/woapps/logs/access_info_log combinedvhost
        ErrorLog  /usr/local/var/www/woapps/logs/error_info_log
        <Directory "/usr/local/var/www/woapps/htdocs">
                Options All -Indexes -ExecCGI +Includes +MultiViews
                AllowOverride None
                Require all granted
        </Directory>
</VirtualHost>

$ ls /usr/local/etc/httpd/other/
wo_apache.conf*  wo_expires.conf* wo_rewrite.conf*

These are referenced at the end of httpd.conf (this line shoould already be there. if not simply add it)
Include /usr/local/etc/httpd/other/*.conf

$ cat /usr/local/etc/httpd/other/wo_apache.conf
# WebObjects 5.4: Enable the WebObjects module.
#LoadModule WebObjects_module /Library/WebObjects/Adaptors/mod_WebObjects.so
LoadModule WebObjects_module /Users/Shared/Developer/Libraries/Wonder/woadaptor_pr992_fixed/Apache2.4/macOS_Intel/mod_WebObjects.so

# You can change the 'cgi-bin' part of WebObjectsAlias to whatever you
# prefer (such as Apps), but the 'WebObjects' part is required.
WebObjectsAlias /apps/WebObjects

<Location /apps/WebObjects/>
    <Limit GET POST OPTIONS >
      Require all granted
    </Limit>
    Require all denied
</Location>

# Here are the 3 possible configuration modes.
# The apache module uses one of them to get information
# about your deployed applications.
# 1085 is the reserved port on which wotaskd processes listen to by default.

# Host List Configuration
# wotaskd is started automatically on supported platforms,
# so this is the default mode.
# The apache module gets its configuration from the wotaskds
# listed on the configuration line
# For multiple hosts:
# WebObjectsConfig http://<name-of-a-host>:<port-on-a-host>,http://<name-of-another-host>:<port-on-a-host> <interval>
# For localhost:
WebObjectsConfig http://woapps:1085 10

# Multicast Configuration
# The apache module gets its configuration from all wotaskds
# that respond to the multicast call on the subnet
# WebObjectsConfig webobjects://239.128.14.2:1085 10

# File Configuration
# The apache module gets its configuration from one file
# WebObjectsConfig file://<path-to-a-xml-config-file> 10

# To enable public access to the WOAdaptorInfo page, uncomment the following line
# WebObjectsAdminUsername public

# To enable the WOAdaptorInfo page with restricted access,
# uncomment the next two lines and set the user and password
# To access the WOAdaptorInfo page with restricted access,
# use a URL like: http://webserver/cgi-bin/WebObjects/WOAdaptorInfo?user+password.
# WebObjectsAdminUsername user
# WebObjectsAdminPassword password

# To change the logging options, read the following comments:
# The option name is "WebObjectsLog" and the first value indicates the path of the log file.
# The second value indicates the log level. There are five, in decreasing informational order:
# "Debug",    "Info",    "Warn",    "Error",    "User"
#
# Note: To enable logging, touch '/tmp/logWebObjects' as the administrator user (usually root).
#
# The following line is the default:
# WebObjectsLog /Library/WebObjects/Logs/WebObjects.log Debug

$ cat /usr/local/etc/httpd/other/wo_expires.conf
## File for Expires
<IfModule mod_expires.c>
  ExpiresActive On 
  ExpiresDefault A60
  ExpiresByType image/x-icon A3600
  ExpiresByType application/x-javascript A3600
  ExpiresByType text/css A3600
  ExpiresByType image/gif A3600
  ExpiresByType image/png A3600
  ExpiresByType image/jpeg A3600
  ExpiresByType application/x-shockwave-flash A3600
  ExpiresByType video/x-flv A3600
  ExpiresByType application/pdf A3600
</IfModule>    

$ cat less /usr/local/etc/httpd/other/wo_rewrite.conf
## File for Rewrite
<IfModule mod_rewrite.c>
  ## RewriteEngine On
  ## RewriteRule ^/$ /page/HomePage [R]
  ## RewriteCond %{QUERY_STRING} ^appNum=([-0-9]+)(.*)$
  ## RewriteRule ^/page/(.*)$ /cgi-bin/WebObjects/AppName.woa/%1/wa/viewPage?pageName=$1%2 [L,PT]
  ## RewriteRule ^/page/(.*)$ /cgi-bin/WebObjects/AppName.woa/wa/viewPage?pageName=$1 [L,PT,QSA]
</IfModule>

You cannot run https with a letsencrypt certificate because your sites are not publicly reachable. You can however create your own CA and cert if you really want to be that fancy (use KeychainAccess.app on the Mac). I never bothered though. 
Be careful when you try to connect with your web browser. Browsers usually play tricks with the URL and add https and www and other niceties and that will fail to open your single name domain. You must specify the whole URL so that the browser does not have to second guess and break the final address.

HAVE FUN, there is a whole weekend coming up.......
---markus---

On 21 Mar 2026, at 03:38, Theodore Petrosky <webobjects-dev@wocommunity.org> wrote:

Markus,

It appears that you have some experience with setting up Apache. Your explanation really helped clear up some misconceptions I had.

But here is my next project. I have a couple of D2W apps that I have to support. While in development mode in Eclipse, the pages do not render correctly with some elements missing from the page. All my research points to the Direct Connection problem and why I need to use Apache. I found these two wiki pages:

https://wiki.wocommunity.org/xwiki/bin/view/WO/Home/To%20classify/Development-Direct%20Connect/
and 
https://wiki.wocommunity.org/xwiki/bin/view/documentation/Home/How-tos/Development%20Tools-Running%20Through%20Apache/

I found that Apache on OSX does not come with the developer tools so I found that homebrew's solution took care of that but of course nothing is in the 'right' place. I will have to get wotaskd and javamonitor running with launchctl which should not be too bad. but that leaves the connection to Apache.

Have you had any success with running a WO server is OSX?

This is the first time I have actually thought of switching to Linux to do development.

Ted



On 3/16/26 8:58 AM, Markus Ruggiero (rucotec) wrote:

Something seems not quite right here. 
I deploy to a Ubuntu VServer on Hetzner.com. My applications are built with ant. This automatically create a split install. There are two locations on the server that are of interest: the Apache webroot directory for your domain, which the default is /var/www/html and an arbitrary directory for the WOA executable. Mine is at /opt/WebObjects/applications.

Create the WebObjects directory inside your webroot: mkdir /var/www/html/WebObjects

Building with ant I get two files: MyApp-Application.tar.gz and MyApp-WebServerResources.tar.gz. Move both to your server and unpack, the MyApp-Application.tar.gz unpacks into /opt/WebObjects/applications/ and MyApp-WebServerResources.tar.gz unpacks into /var/www/html/WebObjects and you are already good to go. No need for anything with symlinks and environments like NEXT_ROOT.
Change ownership of the application files to the owner you use to run things and install the application in JavaMonitor. All done. In the web inspector you should then see something like href=“/WebObjects/MyApp.woa/Frameworks/ERModernDefaultSkin.framework/WebServerResources/tab.png”.  This is a resource from an embedded D2W framework. Before building make sure you embed your frameworks, that’s just a checkbox in WOLips build properties for your project.

If you need more help just yell. I can give you a step by step guide of everything you have to do after you create the base Ubuntu OS install. This includes setting up Apache with virtual hosts, letsencrypt, PostgreSQL, Java, wotaskd and JavaMonitor and then on top of that the application!

Hope this helps. 
---markus--- 

On 16 Mar 2026, at 13:04, D Tim Cummings <webobjects-dev@wocommunity.org> wrote:

I think the href should be

href="/WebObjects/Applications/BookingD2W.woa/Contents/Frameworks/ERModernDefaultSkin.framework/WebServerResources/default_login_page.css"

On my ubuntu install I can find the file to be served through Apache at

/var/www/example.com/WebObjects/Applications/BookingD2W.woa/Contents/Frameworks/ERModernDefaultSkin.framework/WebServerResources/default_login_page.css

This is achieved by setting up a symlink from the Apache directory to the installation directory

# Create Apache virtual host
sudo mkdir -p /var/www/$SERVER_NAME
sudo mkdir -p $NEXT_ROOT/Local/Library/WebServer/Documents/WebObjects
sudo ln -s $NEXT_ROOT/Local/Library/WebServer/Documents/WebObjects /var/www/$SERVER_NAME/WebObjects

The symlink is on /var/www/example.com/WebObjects which points to /opt/webobjects/Local/Library/WebServer/Documents/WebObjects

I don't know why your href starts with /Local/Library but for that to work you would need the served file to be sitting at the following location in the file system

/var/www/example.com/Local/Library/WebObjects/Applications/BookingD2W.woa/Contents/Frameworks/ERModernDefaultSkin.framework/WebServerResources/default_login_page.css

Tim

On 16/3/26 14:04, Theodore Petrosky wrote:
I have a new Ubuntu install (24.04) everything appears OK and JavaMonitor runs fine.

I can setup a new app however the D2W css is not available to the app.

Ubuntu is running locally on a little Windows box as a Hyper-v instance.

The app has the appropriate Properties line:  WOFrameworksBaseURL=/WebObjects/BookingD2W.woa/Contents/Frameworks

when I go to the app's URL, the result displays, without the css. so in the Web Inspector of Safari i see:

<html>
    <head>
        <title>Booking_D2W Login</title>
    <link rel="stylesheet" type="text/css" href="/Local/Library/WebObjects/Applications/BookingD2W.woa/Contents/Frameworks/ERModernDefaultSkin.framework/WebServerResources/default_login_page.css"/>

I select the red default_login_page.css and I am shown: An error occurred trying to load the resource.

Of course the href above is missing the NEXT_ROOT (/opt/webobjects as the first part of the listing.

Please any ideas what I am missing? when I list the directory, it shows all the files are owned by appserver:appserveradm

Ted


#############################################################
This message is sent to you because you are subscribed to
 the mailing list <webobjects-dev@wocommunity.org>.
To unsubscribe, E-mail to: <webobjects-dev-off@wocommunity.org>
To switch to the DIGEST mode, E-mail to <webobjects-dev-digest@wocommunity.org>
To switch to the INDEX mode, E-mail to <webobjects-dev-index@wocommunity.org>
Send administrative queries to <webobjects-dev-request@wocommunity.org>


#############################################################
This message is sent to you because you are subscribed to
the mailing list <webobjects-dev@wocommunity.org>.
To unsubscribe, E-mail to: <webobjects-dev-off@wocommunity.org>
To switch to the DIGEST mode, E-mail to <webobjects-dev-digest@wocommunity.org>
To switch to the INDEX mode, E-mail to <webobjects-dev-index@wocommunity.org>
Send administrative queries to  <webobjects-dev-request@wocommunity.org>







Markus Ruggiero


rucotec GmbH                        web https://rucotec.ch
Leonhardsberg 1                   email markus.ruggiero@rucotec.ch
4051 Basel / Switzerland         mobile +41 79 508 4701








Contenu non modifié, vérifié par:
<markus.ruggiero@rucotec.ch>
S'abonner aux messages S'abonner aux sommaires S'abonner aux indexes Se désabonner Ecrire un email au responsable de la liste