HTTPD - Apache2 Web Server
Apache is the most commonly used Web Server on Linux systems. Web Servers are used to serve Web Pages requested by client computers. Clients typically request and view Web Pages using Web Browser applications such as Firefox, Opera, or Mozilla.
Users enter a Uniform Resource Locator (URL) to point to a Web server by means of its Fully Qualified Domain Name (FQDN) and a path to the required resource. For example, to view the home page of the Ubuntu Web site a user will enter only the FQDN. To request specific information about paid support, a user will enter the FQDN followed by a path.
The most common protocol used to transfer Web pages is the Hyper Text Transfer Protocol (HTTP). Protocols such as Hyper Text Transfer Protocol over Secure Sockets Layer (HTTPS), and File Transfer Protocol (FTP), a protocol for uploading and downloading files, are also supported.
Apache Web Servers are often used in combination with the MySQL database engine, the HyperText Preprocessor (PHP) scripting language, and other popular scripting languages such as Python and Perl. This configuration is termed LAMP (Linux, Apache, MySQL and Perl/Python/PHP) and forms a powerful and robust platform for the development and deployment of Web-based applications.
Installation
-
At a terminal prompt enter the following command:
sudo apt-get install apache2
Configuration
apache2.conf
. In addition, other configuration files may be added
using the Include directive, and wildcards can be used to
include many configuration files. Any directive may be placed
in any of these configuration files. Changes to the main
configuration files are only recognized by Apache2 when it is
started or restarted.The server also reads a file containing mime document types; the filename is set by the TypesConfig directive, and is
mime.types
by default.The default Apache2 configuration file is
/etc/apache2/apache2.conf
.
You can edit this file to configure the Apache2 server. You can
configure the port number, document root, modules, log files,
virtual hosts, etc.
Basic Settings
-
Apache2 ships with a virtual-host-friendly default configuration.
That is, it is configured with a single default virtual host (using
the VirtualHost directive) which can modified or used as-is if you
have a single site, or used as a template for additional virtual hosts
if you have multiple sites. If left alone, the default virtual host
will serve as your default site, or the site users will see if the
URL they enter does not match the ServerName directive of any of your
custom sites. To modify the default virtual host, edit the file
/etc/apache2/sites-available/default
. If you wish to configure a new virtual host or site, copy that file into the same directory with a name you choose. For example, sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mynewsite Edit the new file to configure the new site using some of the directives described below.
-
The ServerAdmin directive specifies the email address to be advertised
for the server's administrator. The default value is webmaster@localhost.
This should be changed to an email address that is delivered to you (if you
are the server's administrator). If your website has a problem, Apache2
will display an error message containing this email address to report the
problem to. Find this directive in your site's configuration file in
/etc/apache2/sites-available.
-
The Listen directive specifies the port, and optionally the IP address,
Apache2 should listen on. If the IP address is not specified, Apache2
will listen on all IP addresses assigned to the machine it runs on.
The default value for the Listen directive is 80. Change this to
127.0.0.1:80 to cause Apache2 to listen only on your loopback interface
so that it will not be available to the Internet, to (for example) 81
to change the port that it listens on, or leave it as is for normal
operation. This directive can be found and changed in its own file,
/etc/apache2/ports.conf
-
The ServerName directive is optional and specifies what FQDN your
site should answer to. The default virtual host has no ServerName
directive specified, so it will respond to all requests that do not
match a ServerName directive in another virtual host. If you have
just acquired the domain name ubunturocks.com and wish to host it on
your Ubuntu server, the value of the ServerName directive in your
virtual host configuration file should be ubunturocks.com. Add this
directive to the new virtual host file you created earlier
(
/etc/apache2/sites-available/mynewsite
).
You may also want your site to respond to www.ubunturocks.com, since many users will assume the www prefix is appropriate. Use the ServerAlias directive for this. You may also use wildcards in the ServerAlias directive. For example, ServerAlias *.ubunturocks.com will cause your site to respond to any domain request ending in .ubunturocks.com.
-
The DocumentRoot directive specifies where Apache should look for the
files that make up the site. The default value is /var/www. No site
is configured there, but if you uncomment the RedirectMatch directive
in
/etc/apache2/apache2.conf
requests will be redirected to /var/www/apache2-default where the default Apache2 site awaits. Change this value in your site's virtual host file, and remember to create that directory if necessary!
The /etc/apache2/sites-available directory is
not parsed by Apache2. Symbolic links in /etc/apache2/sites-enabled
point to "available" sites. Use the a2ensite (Apache2
Enable Site) utility to create those symbolic links, like so:
sudo a2ensite mynewsite
where your site's configuration file is
/etc/apache2/sites-available/mynewsite . Similarly, the
a2dissite utility should be used to disable sites.
|
Default Settings
-
The DirectoryIndex is the default page served by the
server when a user requests an index of a directory by
specifying a forward slash (/) at the end of the directory
name.
For example, when a user requests the page http://www.example.com/this_directory/, he or she will get either the DirectoryIndex page if it exists, a server-generated directory list if it does not and the Indexes option is specified, or a Permission Denied page if neither is true. The server will try to find one of the files listed in the DirectoryIndex directive and will return the first one it finds. If it does not find any of these files and if Options Indexes is set for that directory, the server will generate and return a list, in HTML format, of the subdirectories and files in the directory. The default value, found in/etc/apache2/apache2.conf
is " index.html index.cgi index.pl index.php index.xhtml". Thus, if Apache2 finds a file in a requested directory matching any of these names, the first will be displayed.
-
The ErrorDocument directive allows you to specify a file
for Apache to use for specific error events. For example,
if a user requests a resource that does not exist, a 404
error will occur, and per Apache2's default configuration,
the file
/usr/share/apache2/error/HTTP_NOT_FOUND.html.var
will be displayed. That file is not in the server's DocumentRoot, but there is an Alias directive in/etc/apache2/apache2.conf
that redirects requests to the /error directory to /usr/share/apache2/error/. To see a list of the default ErrorDocument directives, use this command: grep ErrorDocument /etc/apache2/apache2.conf
-
By default, the server writes the transfer log to the file
/var/log/apache2/access.log. You can change this on a per-site
basis in your virtual host configuration files with the CustomLog
directive, or omit it to accept the default, specified in
/etc/apache2/apache2.conf
. You may also specify the file to which errors are logged, via the ErrorLog directive, whose default is/var/log/apache2/error.log
. These are kept separate from the transfer logs to aid in troubleshooting problems with your Apache2 server. You may also specify the LogLevel (the default value is "warn") and the LogFormat (see/etc/apache2/apache2.conf
for the default value).
-
Some options are specified on a per-directory basis rather than per-server.
Option is one of these directives. A Directory stanza is enclosed in
XML-like tags, like so:
<Directory /var/www/mynewsite> ... </Directory>
The Options directive within a Directory stanza accepts one or more of the following values (among others), separated by spaces:
-
ExecCGI - Allow
execution of CGI scripts. CGI scripts are not
executed if this option is not chosen.
Most files should not be executed as CGI scripts. This would be very dangerous. CGI scripts should kept in a directory separate from and outside your DocumentRoot, and only this directory should have the ExecCGI option set. This is the default, and the default location for CGI scripts is /usr/lib/cgi-bin.
-
Includes - Allow server-side includes.
Server-side includes allow an HTML file to
include other files. This is not a common option. See
the Apache2
SSI HOWTO for more information.
-
IncludesNOEXEC - Allow server-side includes,
but disable the #exec and #include commands in CGI
scripts.
-
Indexes - Display a formatted list of the
directory's contents, if no
DirectoryIndex (such as index.html) exists in the
requested directory.
For security reasons, this should usually not be set, and certainly should not be set on your DocumentRoot directory. Enable this option carefully on a per-directory basis only if you are certain you want users to see the entire contents of the directory.
-
Multiview - Support content-negotiated multiviews;
this option is disabled by default for security reasons. See the Apache2
documentation on this option.
-
SymLinksIfOwnerMatch - Only follow symbolic links
if the target file or directory has the same owner as the link.
-
ExecCGI - Allow
execution of CGI scripts. CGI scripts are not
executed if this option is not chosen.
Virtual Hosts Settings
The directives set for a virtual host only apply to that particular virtual host. If a directive is set server-wide and not defined within the virtual host settings, the default setting is used. For example, you can define a Webmaster email address and not define individual email addresses for each virtual host.
Set the DocumentRoot directive to the directory that contains the root document (such as index.html) for the virtual host. The default DocumentRoot is
/var/www
.
The ServerAdmin directive within the VirtualHost stanza is the email address used in the footer of error pages if you choose to show a footer with an email address on the error pages.
Server Settings
LockFile - The LockFile directive sets the path to the lockfile used when the server is compiled with either USE_FCNTL_SERIALIZED_ACCEPT or USE_FLOCK_SERIALIZED_ACCEPT. It must be stored on the local disk. It should be left to the default value unless the logs directory is located on an NFS share. If this is the case, the default value should be changed to a location on the local disk and to a directory that is readable only by root.
PidFile - The PidFile directive sets the file in which the server records its process ID (pid). This file should only be readable by root. In most cases, it should be left to the default value.
User - The User directive sets the userid used by the server to answer requests. This setting determines the server's access. Any files inaccessible to this user will also be inaccessible to your website's visitors. The default value for User is www-data.
Unless you know exactly what you are doing, do not set the User directive to root. Using root as the User will create large security holes for your Web server. |
Apache Modules
sudo apt-get install libapache2-mod-auth-mysql
Once you install the module, the module will be available in the
/etc/apache2/mods-available
directory. You can use
the a2enmod command to
enable a module. You can use
the a2dismod command to
disable a module. Once you enable the module,
the module will be available in the
the /etc/apache2/mods-enabled
directory.
HTTPS Configuration
The mod_ssl module is available in apache2-common package. If you have installed this package, you can run the following command from a terminal prompt to enable the mod_ssl module:
sudo a2enmod ssl
In order for Apache to provide HTTPS, a certificate and key file are also needed. For information on generating a key and obtaining a certificate see the section called “Certificates”
To configure Apache for HTTPS add the following four lines to the
/etc/apache2/sites-available/default
file, or the configuration file for your secure virtual
host. They should be placed in the VirtualHost section
under the DocumentRoot line:
SSLEngine on SSLOptions +StrictRequire SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key
The directories /etc/ssl/certs and /etc/ssl/private are the
default locations. If you install the certificate and key in another directory make sure to change
SSLCertificateFile and SSLCertificateKeyFile appropriately.
|
sudo /etc/init.d/apache2 restart
Depending on how you obtained your certificate you may need to enter a passphrase when Apache starts. |
0 komentar:
Posting Komentar