Differences between revisions 1 and 14 (spanning 13 versions)
Revision 1 as of 2020-03-03 20:55:05
Size: 1147
Comment:
Revision 14 as of 2022-09-25 18:35:12
Size: 2790
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/AlpineLinux|Alpine]], try:

{{{
rc-service apache2 start
rc-update add apache2
}}}

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 56:
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 58:
   * `/etc/apache2.conf`
 * `/etc/apache2/apache2.conf`
 * `/etc/httpd/conf/httpd.conf`
 * `/usr/local/etc/apache/httpd.conf`
Line 23: Line 63:
=== Sites ===
Line 25: Line 64:
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 75:
  Alias /cgit-css /usr/share/cgit
Line 35: Line 76:
Line 49: Line 91:
=== 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 Alpine, try:

rc-service apache2 start
rc-update add apache2

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)