This installation guide is aimed at advanced users who wish to install their own dedicated Apache server instance. We will only cover Apache, but other web server software such as Lighttpd is also supported.
  Download the Apache distribution from
  httpd.apache.org
  (or ftp.csoft.net/distfiles),
  and unpack it under ~/src:
$ cd ~/src $ tar -xzf httpd_x.x.xx.tar.gz $ cd httpd_x.x.xx
  Now is time to define the compile-time options to use. To allow future
  upgrades, make sure to save the ./configure arguments to the file
  ~/src/httpd-config.sh. Our administrators will look for this file
  whenever your Apache installation will need to be recompiled (i.e., for
  security or reliability fixes, or to match upgrades in system libraries).
  For the full list of modules and options, see the
  Apache documentation.
  Since your Apache instance runs entirely under your account, you don't need
  to worry about the suexec options. If you have multiple domain names,
  you probably want to enable the mod_vhost_alias to faciliate the
  configuration. If you want to use Subversion with mod_dav_svn
  (as described here), enable the
  dav module as well.
  A typical configuration might look like this:
./configure \ "--prefix=$HOME/apache" \ "--enable-vhost-alias" \ "--disable-ssl" \ "--disable-actions" \ "--enable-rewrite" \ "--enable-deflate"
  If you need SSL support, add --enable-ssl. For DAV support (required
  by mod_dav_svn), pass --enable-dav as well.
Now you can compile and install Apache into your home directory:
$ sh ~/src/httpd-config.sh $ make all install
Open up the Apache configuration file (./apache/conf/httpd.conf) in your favorite text editor.
  First and foremost, you should set the KeepAlive parameter to
  On and configure KeepAliveTimeout to a sensible value,
  usually between 1 and 10.
  This parameter is crucial to performance and controls the number of
  seconds the connections with web browsers will remain open awaiting future
  queries.
  If you are serving pages with few or no images, you can set
  KeepAlive to Off (this will make your web server less
  susceptible to denial-of-service attacks).
  It is also important to set the MaxClients parameter to a proper
  value that your server and the resources alloted under your hosting plan
  can accomodate (please contact us about tuning this parameter).
  Assuming you have compiled Apache with the prefork MPM (the default),
  StartServers, MinSpareServers and MaxSpareServers need
  to be tweaked as well. Too many processes will not necessarily improve
  performance and bumping into your account's maximum process limit would cause
  problems.
KeepAlive On StartServers 4 MinSpareServers 2 MaxSpareServers 3 MaxRequestsPerChild 0 MaxClients n
  Look for the Listen directive and replace it with your v-host
  IP address (as shown by dns list in csoftadm). Specify 8080
  for the port number (packets to port 80 will be redirected accordingly).
Listen w.x.y.z:8080
  If you need SSL support, add a second Listen entry with port 8443.
  Now specify the location of your webpages with DocumentRoot.
  The VirtualDocumentRoot directive allows you to configure new
  domain names under your account (i.e., using the DNS section of the
  Control Panel or the dns commands in the Shell Interface),
  without having to edit httpd.conf every time. In this example,
  the VirtualDocumentRoot directive dictates that any domain
  domain.ext should simply point to /home/myself/www/domain.ext.
DocumentRoot /home/myself/www VirtualDocumentRoot /home/myself/www/%0
  We now need to allow access to the DocumentRoot:
  <Directory "/home/myself/www">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
  The Options string defines the default web server options.
  Indexes enables directory listings and FollowSymLinks instructs
  the web server to follow symbolic links.
  Other commonly used options include MultiViews to turn on the
  HTTP/1.1 language negotiation feature and ExecCGI for CGI script
  execution.
  The AllowOverride parameter defines the ability of .htaccess
  files to override certain aspects of the server configuration on a per
  directory basis. If you prefer, you can avoid editing .htaccess files
  altogether and edit your httpd.conf instead (in that case, set
  AllowOverride to None).
  Before using logs under your custom Apache server, make sure to
  disable your access and error logs with the shared Apache, otherwise
  conflicts will disrupt the logging process (see the Server Settings
  section of the Control Panel, or use conf from the Shell Interface).
  The LogFormat directive specifies the format of log entries.
  Here we use the standard "combined" log format. The CustomLog
  directive specifies the location of the logfile. The preferred location
  for logfiles is /logs/username/:
  LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %V" combined
  CustomLog "/logs/myself/httpd" combined
You'll probably want to configure a log analysis tool such that the logfile is analyzed and rotated periodically. See Site statistics with Webalizer for details.
  The .cgi extension is usually associated with the
  cgi-script handler.
AddHandler cgi-script .cgi
  If need SSL support, you need to specify at least 
  SSLCertificateFile and SSL_CertificateKeyFile, set
  SSLEngine to On.
  <IfModule mod_ssl.c>
    Listen vhost-ip:8443
    SSLCertificateFile /home/myself/ssl/cert
    SSLCertificateKeyFile /home/myself/ssl/key
    SSLCertificateChainFile /home/myself/ssl/certchain
    AddType application/x-x509-ca-cert .crt
    AddType application/x-pkcs7-crl    .crl
    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
    SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
    SSLHonorCipherOrder on
    SSLCompression off
    SSLSessionTickets off
    SSLUseStapling on
    SSLStaplingResponderTimeout 5
    SSLStaplingReturnResponderErrors off
    SSLStaplingCache shmcb:/home/myself/tmp/ocsp(128000)
</IfModule>
  SSL can be enabled or disabled for specific virtual hosts with
  the SSLEngine parameter:
  <VirtualHost vhost-ip:8080>
    ...
    SSLEngine Off
  </VirtualHost>
  <VirtualHost vhost-ip:8443>
    ...
    SSLEngine On
  </VirtualHost>
</IfDefine>
If you don't have a certificate signed by a recognized authority, you can always use a self-signed certificate as described in the SSL micro-howto.
  You can fetch the PHP distribution from
  php.net (or
  ftp.csoft.net/distfiles)
  and unpack it in some temporary location:
$ tar -xzf php-x.x.tar.gz $ cd php-x.x
  Now choose the compilation settings. Again, please save the
  ./configure arguments to  ~/src/php-config.sh.
  To ensure best performance, make sure to explicitely disable
  all the options which you do not require (these will otherwise be enabled
  by default if they exist on the system). The --prefix,
  --with-apxs2 and --disable-cgi options are required.
  A typical configuration might look like:
./configure \ --prefix=$HOME/apache \ --with-apxs2=$HOME/apache/bin/apxs \ --with-config-file-path=$HOME/apache/conf \ --disable-cgi \ --disable-cli \ --disable-ipv6 \ --with-zlib=/usr \ --with-mysql=/usr/local \ --with-mysqli=/usr/local/bin/mysql_config \ --with-pgsql=/usr/local \ --without-mcrypt \ --without-mhash \ --without-imap \ --without-imap-ssl \ --without-gd \ --without-ttf \ --without-gettext \ --without-iconv \ --enable-libxml
  If you are migrating from the shared Apache and want to make sure
  to use the same settings, you can check the phpinfo() for the
  PHP configuration you were previously using:
$ echo '<?phpinfo()?>' php4-fat > php4-fat.html $ lynx php4-fat.html
  You will probably want to enable
  GD and JPEG/PNG if
  some of your scripts are using imaging features.
  The --with-gd and --with-ttf options require special
  consideration. If your account is on an OpenBSD server, substitute
  /usr/local for /usr/X11R6.
--with-gd=/usr/local \ --with-ttf=/usr/local \ --with-jpeg-dir=/usr/local \ --with-png-dir=/usr/local
If your scripts use internationalization, enable iconv and gettext:
--with-iconv=/usr/local \ --with-gettext=/usr/local
  If your scripts need the MBSTRING extension, use --enable-mbstring.
  Do not enable this option unless you really need it.
  When you are satisfied with the settings, install PHP and copy the
  example php.ini to the directory specified in
  --with-config-file-path. Open up php.ini in an editor
  and tweak the settings to your liking.
$ sh ~/src/php-config.sh $ make all install $ cp php.ini-dist ~/apache/conf/php.ini $ cp /etc/php5/php.ini ~/apache/conf/php.ini
  If you were previously using, say, the php5-fat configuration, you
  can copy the standard server php.ini:
$ cp /etc/php5-fat/php.ini ~/apache/conf
Finally, make sure the necessary directives exist in your httpd.conf:
LoadModule php5_module modules/libphp5.so AddHandler php5-script .php AddType text/html .php DirectoryIndex index.html index.php
  We recommend that you install the
  eAccelerator
  extension, to improve the performance of PHP scripts.
  Fetch eaccelerator-*.tar.bz2 from the eAccelerator website (or
  ftp.csoft.net/distfiles) and unpack it in a temporary location.
  Download the file eaccelerator-config.sh
  or copy/paste the following:
#!/bin/sh
export CFLAGS="-O2"
export PHP_PREFIX="$HOME/apache"
export AUTOCONF_VERSION="2.59"
$PHP_PREFIX/bin/phpize
if  $? != 0 ; then exit 1; fi
./configure \
	--enable-eaccelerator=shared \
	--with-php-config=${PHP_PREFIX}/bin/php-config
Now build the extension. From the eAccelerator source directory, run:
$ sh eaccelerator-config.sh $ make $ make install
  Open up your php.ini file (i.e., ~/apache/conf/php.ini), and
  add the following. Substitute yourname for your username:
extension=eaccelerator.so eaccelerator.shm_size="4" eaccelerator.cache_dir="/home/yourname/tmp" eaccelerator.enable="1" eaccelerator.optimizer="1" eaccelerator.check_mtime="1" eaccelerator.debug="0" eaccelerator.filter="" eaccelerator.shm_max="0" eaccelerator.shm_ttl="0" eaccelerator.shm_prune_period="0" eaccelerator.shm_only="0" eaccelerator.compress="1" eaccelerator.compress_level="9"
  Finally, create the ~/tmp directory (or whatever you've used
  for eaccelerator.cache_dir):
$ mkdir -m 700 ~/tmp
  If you wish to run FastCGI applications, you will need the
  mod_fastcgi module loaded into your server. Fetch the
  latest version from ftp.csoft.net/distfiles and unpack it to
  some temporary location. In the mod_fastcgi source directory,
  issue:
$ cp Makefile.AP2 Makefile $ make top_dir=$HOME/apache $ make top_dir=$HOME/apache install
Then, make sure the necessary directives exist in your httpd.conf:
 LoadModule fastcgi_module modules/mod_fastcgi.so
 
 <IfModule fastcgi_module>
  AddHandler fastcgi-script .fcgi
  FastCgiConfig -maxClassProcesses 10 -maxProcesses 20 -restart
      -singleThreshold 100 -killInterval 120 -idle-timeout 60
      -restart-delay 1 -pass-header HTTP_AUTHORIZATION
  FastCgiIpcDir "/home/myself/tmp/fastcgi"
 </Ifmodule>
See the mod_fastcgi documentation for details.
Sites with a lot of HTML content will benefit from compression. This is especially true for visitors with slow links. Apache can be configured to automatically compress output for browsers which support it. Add the following to your httpd.conf to enable compression:
<Location /> SetOutputFilter DEFLATE # Browser quirks BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0678 no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # Don't compress images SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary </Location>
  This requires Apache to have been compiled with
  --enable-deflate.
You are free to use the Apache modules of your choice. We also provide official technical support for every module mentioned in your hosting plan description.
  You can now start the daemon and test it remotely. If the server is
  unreachable, consult the ErrorLog file.
$ ~/apache/bin/apachectl start $ lynx http://domain.ext:8080
If you have enabled SSL:
$ lynx http://domain.ext:8443
  It is critical to add a @reboot directive to your crontab so
  that your server will be started automatically whenever the machines
  hosting your account are rebooted. Use crontab -e to bring up
  your crontab in the default text editor and add the line:
@reboot $HOME/apache/bin/apachectl start
  You may want to use the standard Apache utilities without having to provide
  the full ~/apache/bin path:
$ mkdir ~/bin $ ln -s ~/apache/bin/apachectl ~/bin $ ln -s ~/apache/bin/apxs ~/bin