Differences between revisions 1 and 16 (spanning 15 versions)
Revision 1 as of 2020-03-03 20:55:05
Size: 1147
Comment:
Revision 16 as of 2023-04-03 02:14:56
Size: 2804
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
The 'Old Reliable' of web servers--it's sometimes even vendored as `httpd`. Can be just as fast as [[NGINXSetup|NGINX]], as long as you have a few hundred years to figure out the optimized configuration. '''`httpd(8)`''', also known as '''Apache''' or '''Apache2''', is one of the oldest and most extensible web servers. It has survived so long precisely because it is so extensible; system administrators have been able to continuously tune and upgrade the server for modern best practices.
Line 9: Line 9:

Line 10: Line 12:

Most [[Linux]] and [[BSD]] distributions offer a package for `httpd(8)`, but it will be named differently across systems. The most common names are `apache` and `apache2`.

Supporting programs like `htpasswd(1)` are sometimes split into a separate package named like `apache2-utils`.

For `systemd`-capable systems, [[Linux/Systemd|start and enable]] `httpd.service` or `apache2.service` (again, differing across systems).

For [[Linux/OpenRC#Usage|OpenRC-based systems]], start the `apache2` service and set it to start on boot.

Otherwise try:

{{{
service apache2 start
#also: stop, restart, and reload
}}}

For BSD distributions, try:

{{{
/usr/local/sbin/apachectl start
#also: stop, restart, and graceful
}}}

See `apachectl(8)` for more information.

To launch the server on startup, update `/etc/rc.conf`:

{{{
apache_enable="YES"
}}}
Line 19: Line 51:
The server is configured in `/etc/apache2.conf`. This file requires little intervention, while site-specific configurations are included. The server is configured by a central file. Distributions disagree about the correct location for this file. Try all of the following:
Line 21: Line 53:
   * `/etc/apache2.conf`
 * `/etc/apache2/apache2.conf`
 * `/etc/httpd/conf/httpd.conf`
 * `/usr/local/etc/apache/httpd.conf`
Line 23: Line 58:
=== Sites ===
Line 25: Line 59:
Virtual hosts are declared in domain-specific files. An example site configuration, for [[CGITSetup|CGit]].
=== Virtual Hosts ===

Virtual hosts are declared in domain-specific files. An example site configuration for a CGI script, such as [[CGit|cgit]].
Line 33: Line 70:
  Alias /cgit-css /usr/share/cgit
Line 35: Line 71:
Line 49: Line 86:
=== Restricting Access === === Encryption ===

See [[Apache/SSL|here]] for details.



=== Authentication ===

A document can be set to require authentication, except for a local network user.

{{{
<Document "/">
  AuthType Basic
  AuthName "Authentication Required"
  AuthUserFile /var/www/ftp-htpasswd
  <RequireAny>
    Require valid-user
    Require ip 192.168
    Require ip 10
  </RequireAny>
</Document>
}}}

This method of authentication is 'good-enough' for personal uses. It relies entirely on the traffic encryption (HTTP'''S''').



=== FastCGI ===

See [[Apache/FastCGI|here]] for details.

Apache

httpd(8), also known as Apache or Apache2, is one of the oldest and most extensible web servers. It has survived so long precisely because it is so extensible; system administrators have been able to continuously tune and upgrade the server for modern best practices.


Installation

Most Linux and BSD distributions offer a package for httpd(8), but it will be named differently across systems. The most common names are apache and apache2.

Supporting programs like htpasswd(1) are sometimes split into a separate package named like apache2-utils.

For systemd-capable systems, start and enable httpd.service or apache2.service (again, differing across systems).

For OpenRC-based systems, start the apache2 service and set it to start on boot.

Otherwise try:

service apache2 start
#also: stop, restart, and reload

For BSD distributions, try:

/usr/local/sbin/apachectl start
#also: stop, restart, and graceful

See apachectl(8) for more information.

To launch the server on startup, update /etc/rc.conf:

apache_enable="YES"


Configuration

Server

The server is configured by a central file. Distributions disagree about the correct location for this file. Try all of the following:

  • /etc/apache2.conf

  • /etc/apache2/apache2.conf

  • /etc/httpd/conf/httpd.conf

  • /usr/local/etc/apache/httpd.conf

Virtual Hosts

Virtual hosts are declared in domain-specific files. An example site configuration for a CGI script, such as cgit.

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  ServerName git.my-domain.com
 
  DocumentRoot /usr/share/cgit
  Alias / /usr/share/cgit/cgit.cgi

  <Document '/usr/share/cgit/'>
    Options ExecCGI FollowSymLinks
    Require all granted
    AddHandler cgi-script .cgi
    DirectoryIndex cgit.cgi
  </Document>
 
  ErrorLog /var/log/apache2/error.log
  CustomLog /var/log/apache2/access.log combined
</VirtualHost>

Encryption

See here for details.

Authentication

A document can be set to require authentication, except for a local network user.

<Document "/">
  AuthType Basic
  AuthName "Authentication Required"
  AuthUserFile /var/www/ftp-htpasswd
  <RequireAny>
    Require valid-user
    Require ip 192.168
    Require ip 10
  </RequireAny>
</Document>

This method of authentication is 'good-enough' for personal uses. It relies entirely on the traffic encryption (HTTPS).

FastCGI

See here for details.


CategoryRicottone

Apache (last edited 2023-04-03 12:48:41 by DominicRicottone)