Apache Web Server & Virtual Host on openSUSE : Part 2

This is the second part for Apache VirtualHost on openSUSE tutorial. Please refer to part 1 for further information regarding Apache installation on openSUSE.  I prepared the tutorial for presentation on Indonesian openSUSE Community monthly meeting #14 Indonesian openSUSE Community last Saturday.

*****

I used 2 sub domain as an example on this tutorial. Don’t forget to replace dl.opensuse.or.id and download.opensuse.or.id as shown in this tutorial with your own.  Let’s go with fun 🙂 :

  1. Open folder /etc/apache2/vhosts.d
  2. Copy file vhost.template into a new file name with .conf extension. It will be virtual host configuration. I want to create 2 sub domain and 2 virtual host so I must create dl.opensuse.or.id.conf and download.opensuse.or.id.conf. Configuration file name may vary but I highly recommended to use the proper name to prevent any misunderstanding
  3. Open file dl.opensuse.or.id.conf and modify some configuration, e.g : name of virtual host, root folder, admin name, etc. Below is an example :
    [code language=’cpp’]
    ########################################################################
    #
    # VirtualHost template
    # Note: to use the template, rename it to /etc/apache2/vhost.d/yourvhost.conf.
    # Files must have the .conf suffix to be loaded.
    #
    # See /usr/share/doc/packages/apache2/README.QUICKSTART for further hints
    # about virtual hosts.
    #
    # NameVirtualHost statements can be added to /etc/apache2/listen.conf.
    #
    # Almost any Apache directive may go into a VirtualHost container.
    # The first VirtualHost section is used for requests without a known
    # server name.
    #
    NameVirtualHost *:80

    ServerAdmin opensuse@opensuse.or.id
    ServerName dl.opensuse.or.id
    # 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 /srv/www/vhosts/dl.opensuse.or.id
    # if not specified, the global error log is used
    ErrorLog /var/log/apache2/dl.opensuse.or.id-error_log
    CustomLog /var/log/apache2/dl.opensuse.or.id-access_log combined
    # don’t loose time with IP address lookups
    HostnameLookups Off
    # needed for named virtual hosts
    UseCanonicalName Off
    # configures the footer on server-generated documents
    ServerSignature On
    # Optionally, include *.conf files from /etc/apache2/conf.d/
    #
    # For example, to allow execution of PHP scripts:
    #
    # Include /etc/apache2/conf.d/mod_php4.conf
    #
    # or, to include all configuration snippets added by packages:
    # Include /etc/apache2/conf.d/*.conf
    # ScriptAlias: This controls which directories contain server scripts.
    # ScriptAliases are essentially the same as Aliases, except that
    # documents in the realname directory are treated as applications and
    # run by the server when requested rather than as documents sent to the client.
    # The same rules about trailing “/” apply to ScriptAlias directives as to
    # Alias.
    #
    # ScriptAlias /cgi-bin/ “/srv/www/vhosts/dl.opensuse.or.id/cgi-bin/”
    # “/srv/www/cgi-bin” should be changed to whatever your ScriptAliased
    # CGI directory exists, if you have one, and where ScriptAlias points to.
    #
    #
    # AllowOverride None
    # Options +ExecCGI -Includes
    # Order allow,deny
    # Allow from all
    #

    # UserDir: The name of the directory that is appended onto a user’s home
    # directory if a ~user request is received.
    #
    # To disable it, simply remove userdir from the list of modules in APACHE_MODULES
    # in /etc/sysconfig/apache2.
    #

    # Note that the name of the user directory (“public_html”) cannot simply be
    # changed here, since it is a compile time setting. The apache package
    # would have to be rebuilt. You could work around by deleting
    # /usr/sbin/suexec, but then all scripts from the directories would be
    # executed with the UID of the webserver.
    UserDir public_html
    # The actual configuration of the directory is in
    # /etc/apache2/mod_userdir.conf.
    Include /etc/apache2/mod_userdir.conf
    # You can, however, change the ~ if you find it awkward, by mapping e.g.
    # http://www.example.com/users/karl-heinz/ –> /home/karl-heinz/public_html/
    #AliasMatch ^/users/([a-zA-Z0-9-_.]*)/?(.*) /home/$1/public_html/$2

    #
    # This should be changed to whatever you set DocumentRoot to.
    #

    #
    # 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.2/mod/core.html#options
    # for more information.
    #
    Options All
    #Indexes FollowSymLinks
    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be “All”, “None”, or any combination of the keywords:
    # Options FileInfo AuthConfig Limit
    #
    AllowOverride None
    #
    # Controls who can get stuff from this server.
    #
    Order allow,deny
    Allow from all


    ########################################################################
    [/code]
  4. Change the configuration according your purposes
  5. After completing the first virtual host configuration, repeat the same way to second virtual host configuration
  6. Note : for better checking (it should be o real condition), don’t forget to separate home folder for both virtualhost by changing DocumentRoot configuration. I create a new text file called   this-is-dl-location.txt on  /srv/www/vhosts/dl.opensuse.or.id and this-is-download-location.txt on  /srv/www/vhosts/download.opensuse.or.id.  By setting this, browsing http://dl.opensuse.or.id will be refer to  /srv/www/vhosts/dl.opensuse.or.id and diplaying it’s content : this-is-dl-location.txt
  7. Restart Apache service :
    [code language=’cpp’]
    service apache2 restart[/code]
  8. Edit /etc/hosts and add 2 address :  dl.opensuse.or.id and download.opensuse.or.id both with same address (your local IP address)  or add an address record into your DNS Server. We need this step to bring the request for virtual address into correct address
  9. Testing the virtual host with the url : http://dl.opensuse.or.id and http://download.opensuse.or.id
  10. BEWARE : Don’t forget to add prefix NameVirtualHost *:80 into your virtual host configuration. This is a general bug on many tutorial regarding Apache & VirtualHost setup on openSUSE. Without this prefix, virtual host will only refer to same folder

On next part, we will discuss YAST usage for configuring Apache Web Server & Virtual Host on openSUSE

3 thoughts on “Apache Web Server & Virtual Host on openSUSE : Part 2

  1. The important “NameVirtualHost *:80” entry actually belongs into “/etc/apache2/listen.conf”, not the vhost configuration (I even think apache should spit out a warning on startup due to using it twice).

  2. I have been running a local server http://localhost for a while on openSuSE and now I have a web app that I need to test that will not work without it’s own docroot.
    So, I created a vhost config much like above but when I restart apache2 the localhost part of the server thinks it is under the vhost.
    How can they coexist?

Leave a Reply

Your email address will not be published. Required fields are marked *