In this section, I will give you a step-by-step tutorial on how to create your first site (virtual server) with Caudium. If you want to do something useful with Caudium, you have to create at least one virtual server. Without this first server, Caudium will not do anything. If you use your browser to access your server, you will only get a dialog box prompting for the CIF. login/password.
A virtual server allows you to have several servers running on the same port. For example you can have www.foo.com and www.foo.org running on the same port and machine. This is why it is called virtual server.
To create your first server, log into the web based CIF.. Click on the
tab, then the button.Here, you are prompted for the server name:
Type in an easily identifiable
name. You also have to select the configuration type. Depending on the
configuration you choose, your server will have a different set of
modules. In other words, your server will have different capabilities. For
your first server, choose Basic server
, and
click .
Now you'll see the Virtual Servers page again. As you can see, you have two different folders to work on: Figure 4.1, “Ports in the CIF”) and (Figure 4.2, “Filesystem in the CIF”).
(
Server variables contain the URL of your site, and the port on which it will be
available. File system describes the files/directories containing the .html
and other files you want Caudium to serve.
In server variables, go into
and choose . Use the default values, choose , and click . Now select the URL of your site, and select . You can now go back to the page displaying all of your modules, that is, where you were before you had gone into Server Variables.Under your server name, you'll see the status of your server. If it contains the word “Open” in blue everything is okay, and you can continue with configuring the file system.
If it contains the words “Not open” in red, there is a problem. You can go into the Event Log via the CIF. tab to investigate. If you have an error Failed to open socket on 0:80 (already bound ?), you may have another program or Caudium itself already running on this port. To fix the problem, identify the program which is using this port, and restart Caudium [1]. To restart Caudium, go into → → → . Wait a few seconds, and when prompted, select . Now select your server, and you should have the word “Open” in blue.
The difference is that http2 uses Caudium's internal memory cache while http is plain Pike http subsystem. So http2 is faster than http as you might expect. However, there are some issues on some specific sites.
By selecting a file system, you tell Caudium which files it will send to people browsing your site. For those who know other web servers, please pay close attention to these explanations, because Caudium is quite different from other servers in this respect.
Caudium file systems use the Unix philosophy of mount point, rather than
c:
, d:
, and so forth. The mount point concept allows
you to put your files/directory under any URL you want without changing the
files on your local file system. For example, assume you have the
following local file system:
Example 4.1. Your user filesystem.
/home/customers/customer1
/home/customers/customer2
/home/customers/bigcustomer3
/home/friends/franck
/home/friends/bertrand
/home/friends/didier
And suppose your URL is http://www.iteam.org/.
With a default configuration, you would say that http://www.iteam.org points to /home/ so that you will have customer1 under http://www.iteam.org/customers/customer1, bertrand under http://www.iteam.org/friends/bertrand and bigcustomer3 under http://www.iteam.org/customers/bigcustomer3.
But bigcustomer3 gives you a lot of money and he asks you for an URL such as http://www.iteam.org/bigcustomer3. However, he doesn't want to be moved from /home/customers/bigcustomer3 because of his FTP client's configuration. Moreover, you can't move the other accounts. With the mount point philosophy, you just have to create another mount point saying that /home/customers/bigcustomer3 is mounted on /bigcustomer3 so that when someone uses http://www.iteam.org/bigcustomer3, Caudium will serve them files from /home/customers/bigcustomer3.
Now let's return to our setup. Go into the File System
module, and select
NONE/ mounted on /
-> Path
-> Search Path
.
Here you will decide which of
your directories will be available when someone hits the root of your
server. Write, for example, /home
.
You can now launch your favorite browser to the URL of your site and enjoy.
If you don't want visitors to get a listing of your files for
security reasons, you can disable listing by setting Directory Settings
->
Enable directory listing per default
to No
. Next you have to hit the
More options
button, and then reload the module. Don't forget to click
Save
. It is possible to put one of two “magic files” in any directory to
make it browsable/not browsable despite the setting in the CIF. for that particular file system:
.www_browsable - the directory will always be browsable
.www_not_browsable - the directory will never be browsable
Finally, to allow bigcustomer3 to get to his URL, go to File System
-> Copy
Module
. Next, go to Path
-> Search Path
and type
/home/customers/bigcustomer3
, then type /bigcustomer3
in
Mount point
.
The Figure 4.3, “Example of output” shows the output you should have.
If you created these files/directories after you point Caudium to
your site, it is safe to go in the Actions
tab, then to Cache
->
Cache status
-> Flush caches
.
A web server is usually running on a single port and on a single IP
address. So how can someone have different sites on this single port and
single IP? The solution is to tell Caudium that the server is different
based on the URL. This is the task of the Virtual Hosting module. As this
module is not present in the Generic template we use, you will have to add
it. Just use the Add module
button, and click the image named “Virtual
Host Matcher”.
You are now able to do redirection with the help of regular expressions. If
you don't know what regular expressions (“regexp” for short) are, check the
man page for regexp, see Pike/Perl manual, or maybe buy a book on regular
expressions. To write these redirections based on the URL, go into Regular
expression rewrite rules
and add the following rule:
Example 4.3. A better and quicker regular expression.
^www\.virtualhost\.com$|^virtualhost\.com$ www.virtualhost.com
Save and type this command on your command line in order to get your browser resolving www.virtualhost.com:
# echo "127.0.0.1 www.virtualhost.com" >> /etc/hosts.
You now have to add another virtual server with the button New Virtual
Server
at the root of the virtual server tab. Put Virtual host
as the
server name and choose the Generic server
configuration type. Go into
Server variables
-> Server URL
and type http://www.virtualhost.com/
. You should see:
This server is handled by the port in my first virtual server. Server URL: http://www.virtualhost.com/
Change the file system root and /tmp in File system
-> NONE/ mounted on /
-> Paths
-> Search path
.
You can now point your favorite browser to http://localhost/ and http://www.virtualhost.com/ and see the result.
If you have an error telling you www.virtualhost.com is unknown check your host file.
For more information about virtual hosting, see the Virtual-Web Mini-HOWTO
available at the LDP or in
/usr/share/doc/HOWTO
or
/usr/doc/HOWTO
under Debian GNU/Linux.
[1] To identify you can use lsof(8). If you want to know which programs listen on port 80 just issue the following command as root
You need to be root if lsof has been compiled with the HASSECURITY option which is the default for some GNU/Linux distributions
:
# lsof -i TCP:80
Here is the result:
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
caudium 1001 root 12u IPv4 3993 TCP *:www (LISTEN)