Take the 2-minute tour ×
Webmasters Stack Exchange is a question and answer site for pro webmasters. It's 100% free, no registration required.

I have a number of D language programs (.d extension) and a compile-and-run tool (rdmd)--I'd like to configure Apache (version 2.2) to handle URLs such as "mysite.com/d/hello.d" by running rdmd with the requested resource. The programs do output valid HTTP headers.

I've researched AddHandler and Action, but have been unsuccessful in getting them to do what I want, namely executing rdmd with the resource. I suspect that the problem is that rdmd needs to be in some special cgi directory.

Can someone walk through the steps necessary to configure Apache on a Debian based system, such that it executes my files instead of offering them up for download? Directory specific ('/d') or site-wide execution are both fine.

share|improve this question
add comment

1 Answer

up vote 1 down vote accepted

The D files should be treated as CGI programs. Add a CGI handler for the .d extension and enable the ExecCGI option. For example:

<Directory /var/www/public_html>
    Options +ExecCGI
    AddHandler cgi-script .d
</Directory>

Of course you need to change the directory path to match your setup.

Also, be sure to check the permissions settings of the .d files. The server doesn't run the files as your user account, so they need to be executable by everyone. Running this on the command line in the folder with your D programs should do it:

chmod a+x *.d

Because the files are now executable, they will be run using the program listed in the shebang line of each script. This is where rdmd comes in. The first line in each file should be something similar to this:

#!/usr/bin/rdmd

I don't know the specifics for the D language. Be sure and use the path to your rdmd compiler. If your not sure run this on the command line:

which rdmd

That should tell you where it is.

share|improve this answer
    
Ah, so the key is to make the resources themselves executable. Thanks. –  Justin W Mar 22 '11 at 22:51
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.