June 20, 2021

Apache

apache is called apache2 in debian/ubuntu and httpd in Centos/Fedora, it lives in /etc/apache2/

Tutorials

basic tutorial here
more advanced one here
securing apache here

Install

apt-get install apache2 libapache2-mod-php5 mysql-server php5-mysql php5 openssl ssl-cert

you normally create some kind of “Virtual Host” that points to where your website files are on your server, so you have to specify all that, along with who has access and what IP and port you want apache to look for visitors to your website on, otherwise it has no idea.

here’s a virtual host that works (you will have to modify it for your server). If you’re using Jessie/Apache2.4 MAKE SURE to end your filename in .conf, or it wont’ read it.

       ServerName www.scooby.com
       DirectoryIndex index.php
       ServerAdmin your@email.com
       ErrorLog /var/log/apache2/error.log
       DocumentRoot /var/www/scooby/
 
                       Options Indexes FollowSymLinks Multiviews
                       AllowOverride All
                       Order allow,deny
                       allow from all
                       # Next line required in apache 2.4, not 2.2 and earlier
                       Require all granted

or more complex with more goodies

        ServerAdmin webmaster@example.com
        DocumentRoot /clients/example.com/www/
        ScriptAlias /cgi-bin/ /clients/example.com/cgi/
        ServerAlias example.com *.example.com
        ServerName www.example.com
        AddType application/x-httpd-php .html
        AddHandler server-parsed .shtml
        ErrorLog /clients/example.com/logs/example.com-error_log
        LogFormat "%h %l %u %t \"%r\" %>s %b" common
        CustomLog "|/usr/bin/cronolog /clients/example.com/logs/%Y/%m/%d/example.com-access_log" common
 
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order deny,allow
                Allow from all
                # Next line required in apache 2.4, not 2.2 and earlier
                Require all granted

Once you make your file whatever.conf in /etc/apache2/sites-available, you have to enable it by running:

a2ensite whatever.conf

a simple alias in the beastly 2.2.52 without the dreaded 403 error, in this case to make a mirror site

Alias /mirror/ /var/mirror/
<Directory "/var/mirror">
       Options Indexes Includes FollowSymLinks Multiviews
       AllowOverride All
       Order allow,deny
       Allow from all

unable to determine hostname, using 127.0.0.1 error

to fix this error, do:

vi /etc/apache2/apache2.conf
  ServerName localhost <--add this line somewhere
/etc/init.d/apache2 restart
a2enmod rewrite enabled modrewrite so you can make sane URL’s from gobleygook
a2ensite www.example.com enables a website you have listed in /etc/apache2/sites-availabe by putting a symlink in /etc/apache2/sites-enabled , you then have to reload apache2, which you do by doing /etc/init.d/apache2 reload
httperf –server [my server] –port 80 –uri / –rate 250 –num-conn 100 –num-call 100 –timeout 5 applies a load to your server to test if it breaks

 

apache2 out of memory OOM crash

The default settings in apache2 seem prone to memory exhaustion issues which then crash the box. You might see an error like this on your console:

Killed process 8737 (apache2) 
Out of memory: kill process 9786 (apache2) score 38746 or a child

If this happens, change your /etc/apache2/apache2.conf section below to the values below. Before you do, make a copy of what you started with in case you want to revert to those. You can, of course, also add memory if you have the ability in your environment, which will help as well.

    StartServers        1
    MinSpareServers     3
    MaxSpareServers     6
    ServerLimit         24
    MaxClients          24
    MaxRequestsPerChild 3000