[2025-jun-17] The SlackDocs Wiki has moved to a new server, in order to make it more performant.
Table of Contents
Setup Apache httpd server
This is a general how to to get a basic httpd service up and running.
Applies to:
- Slackware 14.1 (and possibly previous versions)
- Apache 2 (and possibly previous versions)
Basic Setup
Edit /etc/httpd/httpd.conf - Here is what you care about, change/uncomment the following lines as necessary:
vi /etc/httpd/httpd.conf
# optional, require a proper DNS configuration
ServerAdmin you@myawesomeserver.com
ServerName www.myawesomeserver.com:80
<Directory />
AllowOverride none
Require all denied
</Directory>
DocumentRoot "/srv/httpd/htdocs"
<Directory "/srv/httpd/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<IfModule dir_module>
DirectoryIndex index.html index.htm index.pl index.php
</IfModule>
ErrorLog "/var/log/httpd/error_log"
CustomLog "/var/log/httpd/access_log" common
# Optional but nice. this creates a directory listing if index.html is missing.
Include /etc/httpd/extra/httpd-autoindex.conf
# Optional
Include /etc/httpd/extra/httpd-default.conf
All other default settings should be good.
Make httpd start on boot.
chmod 755 /etc/rc.d/rc.httpd /etc/rc.d/rc.httpd start
HINT: With these settings, your default webpages should be put in /srv/httpd/htdocs. Your default logs should be under /var/log/httpd.
User Directories
This will allow users to have individual web space (/home/user/public_html). These can be accessed from the web by adding “~username” to the URL.
Example: http://www.slackware.com/~pat
Edit /etc/httpd/httpd.conf - Here is what you care about, change/uncomment the following lines as necessary:
vi /etc/httpd/httpd.conf LoadModule authz_host_module lib64/httpd/modules/mod_authz_host.so LoadModule authz_user_module lib64/httpd/modules/mod_authz_user.so LoadModule authz_core_module lib64/httpd/modules/mod_authz_core.so LoadModule userdir_module lib64/httpd/modules/mod_userdir.so Include /etc/httpd/extra/httpd-userdir.conf
Edit /etc/httpd/extra/httpd-userdir.conf, change/uncomment the following:
vi /etc/httpd/extra/httpd-userdir.conf
<Directory "/home/*/public_html">
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch
Require method GET POST OPTIONS
</Directory>
Restart Apache
/etc/rc.d/rc.httpd restart
Enable CGI-BIN
This enables CGI script execution on your webserver.
Edit /etc/httpd/httpd.conf - Here is what you care about, change/uncomment the following lines as necessary:
vi /etc/httpd/httpd.conf
LoadModule proxy_module lib64/httpd/modules/mod_proxy.so
LoadModule proxy_fcgi_module lib64/httpd/modules/mod_proxy_fcgi.so
LoadModule proxy_scgi_module lib64/httpd/modules/mod_proxy_scgi.so
LoadModule cgid_module lib64/httpd/modules/mod_cgid.so
<IfModule alias_module>
ScriptAlias /cgi-bin/ "/srv/httpd/cgi-bin/"
</IfModule>
<Directory "/srv/httpd/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
<IfModule mime_module>
AddHandler cgi-script .cgi .pl
</IfModule>
Restart Apache
/etc/rc.d/rc.httpd restart
HINT: Your cgi-bin directory will be /srv/httpd/cgi-bin/. The scripts can be accessed by adding /cgi-bin/SCRIPTNAME to the website URL.
Example: http://www.slackware.com/cgi-bin/awesomescript.pl
NOTE: This does not apply to PHP scripts, see the below for them.
User CGI-BIN
This will allow users to run CGI scripts out of their /home/user/public_html/cgi-bin directory. Their scripts can be accessed through their user directories.
Example: http://www.slackware.com/~pat/cgi-bin/webform.pl
Setup CGI-BIN as described above.
Edit /etc/httpd/extra/httpd-userdir.conf - Here is what you care about, change/uncomment the following lines as necessary:
vi /etc/httpd/extra/httpd-userdir.conf
<Directory "/home/*/public_html/cgi-bin">
Options ExecCGI
SetHandler cgi-script
</Directory>
Restart Apache
/etc/rc.d/rc.httpd restart
Enable PHP
Virtual Hosts
Edit /etc/httpd/httpd.conf - Here is what you care about, change/uncomment the following lines as necessary:
vi /etc/httpd/httpd.conf Include /etc/httpd/extra/httpd-vhosts.conf
Edit /etc/httpd/extra/httpd-vhosts.conf - Here is what you care about, add one of these entries for each virtual host:
vi /etc/httpd/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerAdmin webmaster@www.server1.com
DocumentRoot "/home/server1/public_html/"
ServerName server1.com
ServerAlias www.server1.com
ErrorLog "/var/log/httpd/server1.com-error.log"
CustomLog "/var/log/httpd/server1.com-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@www.server2.com
DocumentRoot "/home/server2/public_html/"
ServerName server2.com
ServerAlias www.server2.com
ErrorLog "/var/log/httpd/server2.com-error.log"
CustomLog "/var/log/httpd/server2.com-access.log" common
</VirtualHost>
Restart Apache
/etc/rc.d/rc.httpd restart
NOTE: I run my vhosts as users so, the document roots are under /home/user directories. You do not have to do this. You can put the document roots anywhere you like.
Example:
/srv/www/htdocs/server1
/srv/www/htdocs/server2
NOTE 2: These do not affect your default webserver setting in /etc/httpd/httpd.conf. That web server instance will still work and be the default if a plain IP in used as the URL.
Vhosts with individual CGI-BIN directories
If you have virtual hosts that need CGI (or need CGI in their own directory) you can do it like this:
Edit /etc/httpd/extra/httpd-vhosts.conf - Add one of these entries for each vhost that needs unique cgi-bin directories:
vi /etc/httpd/extra/httpd-vhosts.conf
<Directory /home/server1/public_html/cgi-bin/>
Options ExecCGI
SetHandler cgi-script
</Directory>
Restart Apache
/etc/rc.d/rc.httpd restart
HINT: I usually put these with their respective <VirtualHost *:80> entries.
NOTE: Change the “/home/server1/public_html/cgi-bin/” to the correct directory location.
HTTPS / SSL
to be added
SNI HTTPS / SSL (Name based https)
to be added
Sources
- Originally written by arfon