SlashpacheConfigFiles
SlashDocumentationIndex - parent These files are what tells Apache to be a slave to perl. Various apache functions are replaced by perl functions.
Notable things:
- Anything ending in .pl is to be interpreted as a perl script handled by Apache::Registry
- Apache is told Files ending in .tmpl are to be handled by Slash::Apache::TemplatePages
- A number of perl modules are added to every Apache process
- Database is set to mysql Slash::DB::MySQL
- AllowOverride None is set on htdocs so .htaccess files will never work, and could not anyway due to the access control phase being taken over.
- The virtual user and 'skin' are set. The code says 'skin' but this is actually a 'theme'
- A number of Apache 'phases' have perl code added to them, which in most cases means Apache uses the perl code rather thamn its own. Among these:
- First Apache phase: post-read-request
- Second Apache phase: URI translation - the index page handler and userdir handler completely replaced
- Fourth Apache phase: access control - Slash::Apache::Banlist, Slash::Apache::User
- Ninth Apache phase: response, aka content handler
- Eleventh Apache phase: cleanup- PerlCleanupHandler ,Slash::Apache::Log ,PerlCleanupHandler,Slash::Apache::Log::UserLog
- AddHandler server-parsed .shtml , AddHandler server-parsed .inc
Main Conf
Located in usr/local/slash/httpd/
This is what the install does to create slash.conf from the default: [root@slashcode httpd]# diff slash.conf.def slash.conf 37a38,39 > #Include /usr/local/slash/site/slashcode.local/slashcode.local.conf > Include /usr/local/slash/site/slashcott.org/slashcott.org.conf
contents of usr/local/slash/httpd/slash.conf :
# this is all the mod perl specific stuff that makes # slash the root handler for the site # ... you might want to check to make sure these are not already # defined in your main httpd.conf, if you have trouble # $Id$ AddHandler perl-script .pl PerlHandler Apache::Registry # For template pages <FilesMatch "\.tmpl"> SetHandler perl-script PerlHandler Slash::Apache::TemplatePages </FilesMatch> # add in modules for compiling into each process PerlModule Slash PerlModule Slash::Apache PerlModule Slash::Apache::User PerlModule Slash::Apache::Log PerlModule Slash::Display::Plugin PerlModule Slash::XML::RSS # used in a couple of .pl files PerlModule Image::Size # add other, or comment out, DB modules here PerlModule Slash::DB::MySQL #PerlModule Slash::DB::PostgreSQL # add or comment out plugin modules #PerlModule Slash::Journal #PerlModule Slash::Search #PerlModule Slash::XML::FZ LimitRequestBody 75000 #Include /usr/local/slash/site/slashcode.local/slashcode.local.conf Include /usr/local/slash/site/slashcott.org/slashcott.org.conf
Site Conf
This is the site specific file included at the end of the file above. The name will vary by site.
Contents of /usr/local/slash/site/slashcott.org/slashcott.org.conf
# note that if your site's path is a symlink, the
# path listed here is most likely the actual path;
# fix it and DocumentRoot if you want to
<Directory /usr/local/slash/site/slashcott.org/htdocs>
Options FollowSymLinks ExecCGI Includes Indexes
AllowOverride None
</Directory>
<VirtualHost *:80>
ServerAdmin mcasadevall@slashcott.org
DocumentRoot /usr/local/slash/site/slashcott.org/htdocs
ServerName slashcott.org
ErrorLog logs/slashcott.org_error_log
CustomLog logs/slashcott.org_access_log common
PerlSetupEnv On
PerlSetEnv TZ GMT
SlashVirtualUser slash
SlashSetVar skin slashcode
# this directive will compile all the templates
# in the database, if cache_enabled is true
# and template_cache_size is 0. Set to On/Off.
# Default is off since most sites don't need it
# much and startup performance, as well as
# memory usage, degrades when it is On...
# setting template_cache_size to 100 or so is
# probably a lot better
SlashCompileTemplates Off
########################
# First Apache phase: post-read-request
# if you have a frontend/backend setup and have X-Forwarded-For
# headers (such as from mod_proxy_add_forward), use this
# to properly populate remote_ip for formkeys etc.
PerlPostReadRequestHandler Slash::Apache::ProxyRemoteAddr
# Second Apache phase: URI translation
# this directive will redirect non-logged-in users to
# index.shtml if they request the home page; turn it
# on to help increase performance or if you are using something
# other than index.pl for the index
PerlTransHandler Slash::Apache::IndexHandler
# this directive will display a user's pages at /~username
PerlTransHandler Slash::Apache::User::userdir_handler
# Third Apache phase: header parsing
# Fourth Apache phase: access control
PerlAccessHandler Slash::Apache::Banlist
PerlAccessHandler Slash::Apache::User
# Fifth Apache phase: authentication
# Sixth Apache phase: authorization
# Seventh Apache phase: MIME type checking
# Eighth Apache phase: fixups
# Ninth Apache phase: response, aka content handler:
# Apache::Registry and whatever else is in the slash.conf file
# Tenth Apache phase: logging
# Eleventh Apache phase: cleanup
PerlCleanupHandler Slash::Apache::Log
PerlCleanupHandler Slash::Apache::Log::UserLog
########################
# this can be used to preload your .pl scripts in the parent,
# saving both startup time and memory in the child
# add/remove scripts from @pls (normally best to include only
# and all commonly used scripts)
PerlModule Apache::RegistryLoader;
<Perl>
# if you need to debug, temporarily turn this on
# $Apache::Registry::Debug = 4;
my @pls = qw(index comments article users journal search ajax firehose);
my $vhost = 'slashcott.org';
my $docroot = '/usr/local/slash/site/slashcott.org/htdocs';
my $r = Apache::RegistryLoader->new;
for my $u (@pls) {
my $f = "$docroot/$u.pl";
$r->handler("/$u.pl", $f, $vhost) if -e $f;
}
</Perl>
DirectoryIndex index.pl index.shtml
ErrorDocument 404 /404.pl
AddType text/xml .xml
AddType application/rss+xml .rdf
AddType application/rss+xml .rss
AddType application/atom+xml .atom
AddType text/vnd.wap.wml .wml
# change default of "iso-8859-1" here (to, for example, utf-8)
# if you change "content_type_webpage" in vars, and vice versa
AddType text/html;charset=iso-8859-1 .shtml
AddHandler server-parsed .shtml
AddType text/html .inc
AddHandler server-parsed .inc
</VirtualHost>