The FreeBSD Diary

The FreeBSD Diary (TM)

Providing practical examples since 1998

If you buy from Amazon USA, please support us by using this link.
Installing a new virtual web with FP2000 extensions 23 December 1999
Need more help on this topic? Click here
This article has 2 comments
Show me similar articles
This article tells you how to install a new virtual web and allow a user to update that web.  It assumes the web site will contain the FrontPage 2000 Extensions.

You may also wish to see the instructions for FrontPage 98.

See also other FrontPage articles especially FrontPage 2000 - installing the extensions.

For this example, we are creating a new virtual web called

Create the DNS entries
If you are running a webserver, you're probably also running a DNS server.  For my example, I'm creating a website which I can use for testing.  So I'll call it  I modified the zone file and added the following entry:
test                    IN      A

You'll notice that the above IP number is not accessible from the internet.  It is a private non-routable address.  It's here on my LAN.

Then I hup'd named, and checked the error logs, just in case.

Create the virtual web
You should have a look at Apache - virtual hosts for more information on virtual hosts.  I added the following to
    DocumentRoot        /www/test
    ErrorLog            /www/logs/test-error.log
    CustomLog           /www/logs/test-access_log common

Note that the IP address listed above matches the IP address assigned to

Remember to create the directory /www/test.

Then I restarted apache via:

/usr/local/sbin/apachectl restart
Add a new user
Here is how I added a new user (i.e. logon)  to the FreeBSD system.  We are adding susan to the system and give her a home directory of /home/susan.   However, we are not going to allow this user to actually logon to FreeBSD.   They will only access the website through FrontPage 98.  This is the reason why we don't give her a shell.
# adduser
Use option ``-silent'' if you don't want to see all warnings and

Check /etc/shells
Check /etc/master.passwd
Check /etc/group
Enter your default shell: bash csh date no nologin sh [bash]: bash
Your default shell is: bash -> /usr/local/bin/bash
Enter your default HOME partition: [/home]: 
Copy dotfiles from: /usr/share/skel no [/usr/share/skel]: 
Send message from file: /etc/adduser.message no 
Use passwords (y/n) [y]: 

Ok, let's go.
Don't worry about mistakes. I will give you the chance later to
                                              correct any input.
Enter username [a-z0-9_-]: susan
Enter full name []: Susan Crinion
Enter shell bash csh date no nologin sh [bash]: 
Enter home directory (full path) [/home/susan]: 
Uid [1009]: 
Enter login class: default []: 
Login group susan [susan]: 
Login group is ``susan''. Invite susan into other groups: guest no
Enter password []: 
Enter password again []: 

Name:     susan
Password: ****
Fullname: Susan Crinion
Uid:      1009
Gid:      1009 (susan)
Groups:   susan 
HOME:     /home/susan
Shell:    /usr/local/bin/bash
OK? (y/n) [y]: 
Added user ``susan''
Send message to ``susan'' and: no root second_mail_address 

Susan Crinion,

your account ``susan'' was created.
Have fun!

See also chpass(1), finger(1), passwd(1)

Add anything to default message (y/n) [n]: 
Send message (y/n) [y]: n
Copy files from /usr/share/skel to /home/susan
Add another user? (y/n) [y]: n

The next step is to create the directories for the web.  In this case, Susan will have a home directory of /home/susan.  In her home directory, she will have a link to the actual website at /www/  This link is named public_html.

# mkdir /www/
# ln -s /www/ /home/susan/public_html
A common directory for all websites
It is a good idea to put all of the physical files for a webserver under a common directory.  I have chosen /www.  This makes it easy to set the permissions for that file tree.  And it makes backups easier too.

Here's what I put in my /usr/local/etc/apache/httpd.conf file to set the permissions on this tree:

<directory "/www">
<Directory "/www">
    Options Indexes FollowSymLinks ExecCGI
    <IfDefine FRONTPAGE>
        AllowOverride AuthConfig Limit Indexes Options
    <IfDefine !FRONTPAGE>
        AllowOverride None
    Order allow,deny
    Allow from all
Install FrontPage Extensions for this virtual website - interactive
In this example, we are adding FP2000 to the virtual website
[root@fred:/usr/local/frontpage/version4.0/bin] # ./fpsrvadm.exe
Type "fpsrvadm -h" for help on command line options

Please enter command:
0) quit
1) install
2) upgrade
3) uninstall
4) check and fix
5) enable authoring
6) disable authoring
7) change security settings
8) recalculate links
9) delete
10) rename
11) set directory executable
12) set directory no executable
13) putfile
14) recalcfile
15) create a subweb
16) merge a subweb into its parent web
17) full uninstall of all FrontPage information
18) chown
Your choice [1]: 

Please enter server type:
0) apache
1) apache-fp
2) ncsa
3) netscape-enterprise
4) netscape-fasttrack
5) stronghold
Your choice [0]: 1
Enter server config filename: /usr/local/etc/apache/httpd.conf
Enter host name for multi-hosting []:

Starting install, port:, web: "root web"

Enter UNIX username []: susan
Enter UNIX group []: susan

User name to add to FrontPage group "administrators"
                                     [administrator]: testwebsite
Password for user "testwebsite": 
Confirm password: 
Creating web
Chowning Content in service root web
Install completed.
If you don't supply the correct host name, you'll get this error
When installing the FP Extensions, be sure to supply the same value for the host name as is specified in the config file.  For example, if I misspell the host name:

Enter server config filename: /usr/local/etc/apache/httpd.conf Enter host name for multi-hosting []: test.freebsddiary.ort 'test.freebsddiary.ort' server is not a valid virtual server.

I have encountered interesting problems when using include files with httpd.conf.   I was putting my virtual host definitions in a separate file and including them like this:

include /usr/local/etc/apache/vhosts/vhosts.conf

My temporary solution was to not use an include file.  Effective, but inelegant.

Doing it the wrong way
My thanks to Chuck Handshy for pointing out that I was using -p for both the port and the password in previous versions of this article.  The following is wrong. 

Do not use this example.  It is wrong.

# cd /usr/local/frontpage/version4.0/bin
# ./fpsrvadm.exe -o install -t apache-fp    \
     -s /usr/local/etc/apache/httpd.conf    \
     -p 80 -m         \
     -u testwebsite -p password             \
     -xu susan -wg susan

Starting install, port: password, web: "root web"

Password for user "testwebsite": 
Confirm password: 
Creating web
Chowning Content in service root web

As you can see, it's installing to port "password".  Ooops.  I specified -p for the port and for the password.  Thanks Chuck.

Install FrontPage Extensions for this virtual website - command line
You can also install FP Extensions from the command line.  Here's how I did it.   I explain the parameters in the next section.
# cd /usr/local/frontpage/version4.0/bin
# ./fpsrvadm.exe -o install -t apache-fp   \
   -s /usr/local/etc/apache/httpd.conf     \
    -port 80 -m \
    -u testuser1 -xu dan -wg dan

Starting install, port: 80, web: "root web"

Password for user "testuser1": 
Confirm password: 
Creating web
Chowning Content in service root web
Install completed.

Note that by omitting the password on the command line, you are prompted to enter the password.  I think this is a good security feature of fpsrvadm.exe.  In general, you should not type passwords on the command line as anyone can view the command by using the ps command.

I found I had to shutdown apache.  A simple restart was not enough to get publishing to work.

Different users
It is important to note that there are two different types of users specfied in the process of adding FP extentions.  In the above example, we have a user Susan, who has a login of susan.  She can connect to the webserver via telnet using this login.   [Actually, she can't telnet.  She has to use ssh, but that's another story.]

The user names don't have to be the same.   They don't have to be different.  If you are paranoid, you might make them different.  But it'll be easier for your users, I think, if the names are the same.   But I'd suggest they keep different the passwords different in either case.

Authors vs administrators
Note: in the above example, I added an administrator.  For most people this should be fine.  The administrator can do just about anything with the website.   But you may want to consider adding people as author, not administrator.  I'm not sure of the implications, but if there's only one person on the website, I prefer making them administrator, and leaving it at that.  With multiple people, perhaps one adminstrator and many authors is a better approach.
After preforming this install, you should have a look at the root directory of your virtual web.  In my example, the following file should be of interest
# more .htaccess 
# more .htaccess 
# -FrontPage-

IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti*

<Limit GET POST>
order deny,allow
deny from all
allow from all
order deny,allow
deny from all
AuthUserFile /www/
AuthGroupFile /www/

If you look at the files listed on the last two lines, you'll see some interesting stuff:

# more /www/
# -FrontPage-
administrators: testwebsite

That's the login id we specifed when adding the FrontPage extensions.  We can see that it is an adminstrator of the website.  This means they can do anything.  We can also use the fpsrvadm commad to add additional adminstrators, authors, etc.   See for more information.

# more /www/
# -FrontPage-

This file contains the encrypted passwords for this user.

Other notes
Brian Cook wrote in to say that he installed the apache13-mod_ssl port, then installed mod_php4, and finally just untared the fp40.freebsd.tar.Z and followed the directions on the Microsoft FP Homepage.  The other thing that he needed to do (after following the directions on above for fp_admin.exe) was to edit the /usr/local/frontpage/version4.0/frontpage.cnf and add FollowSymLinks:1.

He found that solution after he encountered an error when trying to install a FP web.  The error said something about FollowSymlinks not being in the right group.  After checking the Apache configuration items and finding the symlinks directive in the all the right places, he dumped the full error message into Google.  Approximately ten minutes of reading and looking, he found the fix.

You should now be able to publish to this website using Front Page.  If you can't, I'm sorry, I don't know what's wrong.  But if you find that I've missed something out, please leave your comments.
Did it work?
Please, I'd like to know whether or not this worked for you.  Please add your comments and let us all know. Thanks!

Need more help on this topic? Click here
This article has 2 comments
Show me similar articles