DEV Community

Adamo Crespi for Serendipity HQ

Posted on • Originally published at io.serendipityhq.com on

Apache webserver configuration checklist

A brief checklist of common things you would like to configure in your Apache webserver.

Access the httpd.conf file on Mac OsX

The httpd.conf file is located at /private/etc/apache2/

Activate PHP modules

If you have installed the Liip’s PHP version, take care of the paths!

#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
#LoadModule php5_module libexec/apache2/libphp5.so
Enter fullscreen mode Exit fullscreen mode

Uncomment the lines, set the right path to PHP if you are using the Liip’s one and add the support for .php files:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule php5_module /usr/local/php5/libphp5.so

AddType application/x-httpd-php .php .phtml
Enter fullscreen mode Exit fullscreen mode

Configure the Apache user group

Change the default _www user to your username and add the Group: this will ease your work when dealing, for example, with the upload of files.

#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.  
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User _www
Group _www
User Aerendir
Group #-1
Enter fullscreen mode Exit fullscreen mode

Configure the ServerName

The comments are really clear: uncomment the ServerName directive and set it to localhost:80:

#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
ServerName www.example.com:80
ServerName localhost:80
Enter fullscreen mode Exit fullscreen mode

Open the access to directories in the DocumentRoot

#
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other 
# blocks below.
#
<Directory/>
    Options Indexes FollowSymLinks
    AllowOverride none
</Directory>
Enter fullscreen mode Exit fullscreen mode

Set the DocumentRoot

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/path/to/your/document/root"
<Directory "/path/to/your/document/root">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important. Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options FollowSymLinks Multiviews
    MultiviewsMatch Any
    Options All

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    # AllowOverride FileInfo AuthConfig Limit
    #
    AllowOverride None
    AllowOverride All

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
    Order allow,deny
    Allow from all
</Directory>
Enter fullscreen mode Exit fullscreen mode

Add index.php as default Index

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#

<IfModule dir_module>
 DirectoryIndex index.html index.php
</IfModule>
Enter fullscreen mode Exit fullscreen mode

Configure the use of .htaccess

Immediately below the IfModule dir_module block, add the following one:

#
# AccessFileName: The name of the file to look for in each directory
# for additional configuration directives. See also the AllowOverride 
# directive.
#
AccessFileName .htaccess
Enter fullscreen mode Exit fullscreen mode

The following lines about FilesMatch can be modified as so:

#
# The following lines prevent .htaccess and .htpasswd files from being 
# viewed by Web clients. 
#
<FilesMatch "^\.([Hh][Tt]|[Dd][Ss]_[Ss])">
    Require all denied
<FilesMatch "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</FilesMatch>
Enter fullscreen mode Exit fullscreen mode

Add the following block immediately below:

<Files ~ "^\.DS_Store">
    Order allow,deny
    Deny from all
</Files>
Enter fullscreen mode Exit fullscreen mode

Configure ErrorLog

I prefer to have logs in the same folder of my DocumentRoot:

#
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a 
# container, error messages relating to that virtual host will be
# logged here. If you *do* define an error logfile for a 
# container, that host's errors will be logged there and not here.
#
ErrorLog "/private/var/log/apache2/error_log"
ErrorLog "/path/to/your/document/root/logs/apache_error_log"
Enter fullscreen mode Exit fullscreen mode

Set the level of logging

#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn
LogLevel debug
Enter fullscreen mode Exit fullscreen mode

and comment the subsequent CustomLog directive:

    #
    # The location and format of the access logfile (Common Logfile Format).
    # If you do not define any access logfiles within a 
    # container, they will be logged here. Contrariwise, if you *do*
    # define per- access logfiles, transactions will be
    # logged therein and *not* in this file.
    #
    #CustomLog "/private/var/log/apache2/access_log" common
Enter fullscreen mode Exit fullscreen mode

Set the default MIME type of served files

Find the line < IfModule mime_module > and immediately above copy the following block:

#
# DefaultType: the default MIME type the server will use for a document
# if it cannot otherwise determine one, such as from filename extensions.
# If your server contains mostly text or HTML documents, "text/plain" is
# a good value. If most of your content is binary, such as applications
# or images, you may want to use "application/octet-stream" instead to
# keep browsers from trying to display binary files as though they are
# text.
#
DefaultType text/plain
Enter fullscreen mode Exit fullscreen mode

Configure .httpd-vhosts

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any block.
#

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/Users/Aerendir/Documents/JooServer/"
    ServerName localhost
    ServerAlias localhost
    ErrorLog "/private/var/log/apache2/dummy-host.example.com-error_log"
    CustomLog "/private/var/log/apache2/dummy-host.example.com-access_log" common
    <Directory /path/to/your/document/root/>
        DirectoryIndex index.php
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
     </Directory>
</VirtualHost>

Enter fullscreen mode Exit fullscreen mode

Delete or the other blocks.

Restart Apache

$ sudo apachectl restart
Enter fullscreen mode Exit fullscreen mode

And now, maybe you’d like to update the Mac OsX built-in version of PHP.

Here there are other information about the Mac OsX built-in Apache webserver.

Troubleshooting

If you have any problems starting Apache after the editings, use configtest typing in the Terminal:

$ apachectl configtest
Enter fullscreen mode Exit fullscreen mode

Remember to “Make. Ideas. Happen.”.

I wish you flocking users, see you soon!

L'articolo Apache webserver configuration checklist proviene da ÐΞV Experiences by Serendipity HQ.

Speedy emails, satisfied customers

Postmark Image

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay