Welcome to the Slackware Documentation Project

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
howtos:network_services:setup_apache [2015/03/29 08:01 (UTC)]
arfon created - save so I don't lose
howtos:network_services:setup_apache [2018/12/23 21:51 (UTC)] (current)
ellendhel [VHOSTS WITH INDIVIDUAL CGI-BIN DIRECTORIES] Formatting
Line 3: Line 3:
 This is a general how to to get a basic httpd service up and running. This is a general how to to get a basic httpd service up and running.
  
-Applies to: \\ +Applies to: 
- ​Slackware 14.1 (and possibly previous versions) ​\\ +  ​* ​Slackware 14.1 (and possibly previous versions) 
- ​Apache 2 (and possibly previous versions) ​\\+  ​* ​Apache 2 (and possibly previous versions)
  
-====== ​BASIC SETUP ====== +====== ​Basic Setup ====== 
-1) edit /​etc/​httpd/​httpd.conf ​and change/​uncomment the following lines:+ 
 +Edit /​etc/​httpd/​httpd.conf ​- Here is what you care about, ​change/​uncomment the following lines as necessary:
  
 <​code>​vi /​etc/​httpd/​httpd.conf <​code>​vi /​etc/​httpd/​httpd.conf
  
-ServerAdmin you@example.com  <​---OPTIONAL +  # optional, require a proper DNS configuration 
-ServerName www.myawesomeserver.com:​80 +  ​ServerAdmin you@myawesomeserver.com 
-Include /​etc/​httpd/​extra/​httpd-autoindex.conf ​<​---OPTIONAL +  ServerName www.myawesomeserver.com:​80 
-Include /​etc/​httpd/​extra/​httpd-default.conf ​  <​---OPTIONAL+   
 +  <​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
 </​code>​ </​code>​
  
 All other default settings should be good. All other default settings should be good.
  
-HINT: With these settings, your default webpages should be put in /​var/​www/​htdocs. Your default logs should be under /var/log/httpd.+Make httpd start on boot.
  
-2) Make it start on boot. 
 <​code>​chmod 755 /​etc/​rc.d/​rc.httpd <​code>​chmod 755 /​etc/​rc.d/​rc.httpd
 /​etc/​rc.d/​rc.httpd start</​code>​ /​etc/​rc.d/​rc.httpd start</​code>​
 +
 +**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: <​nowiki>​http://​www.slackware.com/​~pat</​nowiki>​
 +
 +
 +Edit /​etc/​httpd/​httpd.conf - Here is what you care about, change/​uncomment the following lines as necessary:
 +<​code>​ 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</​code>​
 +
 +Edit /​etc/​httpd/​extra/​httpd-userdir.conf,​ change/​uncomment the following:
 +<​code>​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></​code>​
 +
 +Restart Apache
 +<​code>/​etc/​rc.d/​rc.httpd restart</​code>​
 +
 +
 +====== 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:
 +<​code>​ vi /​etc/​httpd/​httpd.conf
 +
 +  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></​code>​
 +
 +Restart Apache
 +<​code>/​etc/​rc.d/​rc.httpd restart</​code>​
 +
 +**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: <​nowiki>​http://​www.slackware.com/​cgi-bin/​awesomescript.pl</​nowiki>​
 +    ​
 +**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: <​nowiki>​http://​www.slackware.com/​~pat/​cgi-bin/​webform.pl</​nowiki>​
 +
 +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:
 +<​code>​vi /​etc/​httpd/​extra/​httpd-userdir.conf
 +
 +  <​Directory "/​home/​*/​public_html/​cgi-bin">​
 +    Options ExecCGI
 +    SetHandler cgi-script
 +  </​Directory></​code>​
 +
 +Restart Apache
 +<​code>/​etc/​rc.d/​rc.httpd restart</​code>​
 +====== Enable PHP ======
 +
 +[[howtos:​network_services:​setup_apache_php_mysql|http://​docs.slackware.com/​howtos:​network_services:​setup_apache_php_mysql]]
 +
 +====== Virtual Hosts ======
 +
 +Edit /​etc/​httpd/​httpd.conf - Here is what you care about, change/​uncomment the following lines as necessary:
 +
 +<​code>​vi /​etc/​httpd/​httpd.conf
 +
 +  Include /​etc/​httpd/​extra/​httpd-vhosts.conf</​code>​
 +
 +Edit /​etc/​httpd/​extra/​httpd-vhosts.conf - Here is what you care about, add one of these entries for each virtual host:
 +
 +<​code>​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></​code>​
 +
 +Restart Apache
 +<​code>/​etc/​rc.d/​rc.httpd restart</​code>​
 +
 +**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:​
 +
 +<​code>​vi /​etc/​httpd/​extra/​httpd-vhosts.conf
 +
 +  <​Directory /​home/​server1/​public_html/​cgi-bin/>​
 +      Options ExecCGI
 +      SetHandler cgi-script
 +  </​Directory></​code>​
 +
 +Restart Apache
 +<​code>/​etc/​rc.d/​rc.httpd restart</​code>​
 +
 +**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.
  
  
-====== ​USER DIRECTORIES ​======+====== ​HTTPS / SSL ======
 +to be added
  
  
 +====== SNI HTTPS / SSL (Name based https) ======
 +to be added
  
  

In Other Languages
QR Code
QR Code howtos:network_services:setup_apache (generated for current page)