Quest4 Apache on FreeBSD
Some notes from the things I ran into while trying to get Apache to run on FreeBSD.
Pre-Apache install note: These notes really take off after I finally got Apache installed. If you haven't gotten that far yet, I figured it out by Googling for keywords: FreeBSD, install, and Apache. Lots of info. Some helpful, some NOT.
1) After you install FreeBSD, for the love of god, set the system time and date. I didn't, and wasted many hours after my installation of FreeBSD, trying to install Apache. My problem was that on running "make install," it stopped with the error:
Configuration.tmpl is more recent than Configuration.apaci;
Make sure that Configuration.apaci is valid and, if it is, simply
'touch Configuration.apaci' and re-run ./Configure again.
*** Error code 1
I searched Google for many hours and saw many different reasons for this error. I tried to "touch Configuration.apaci" to no avail. I tried to install Apache manually...and finally broke down and downloaded the binaries. It was only after, and we are talking many wasted hours later, I tried to install Proftpd that it hit me. Short story, Proftpd also failed on install, but its creators were kind enough to mention to CHECK THE FREAKING SYSTEM DATE!!!
Note: command is date "+DATE: %Y-%m-%d%nTIME: %H:%M:%S" or
# date 050720113047
Here is how to break it down number by number:
01 - The Year: 05
03 - The Month: 07
28 - The Day : 20
20 - The Hour: 11
55 - The Minutes: 30
47 - The seconds: 47
(Time is 24 hour format, not 12 hours).
Some other time savers you can only learn the hard way:
These are the things minimum things to add to the /etc/rc.conf file to get Apache to run correctly (IP addresses are example only, and completely made up):
ifconfig_dc0="inet 63.251.96.136 netmask 255.255.255.0"
ifconfig_dc0_alias0="63.251.96.137 netmask 255.255.255.0"
route_dc0="add -net 0.0.0.0 -netmask 0.0.0.0 -gateway 63.251.96.1"
defaultrouter="63.251.96.1"
apache_enable="yes"
hostname="63.251.96.137"Note: dc0 is the device name for the nic card, but they vary, so yours may not be the same.
The things that I HAD to put in before I got Apache to run were:
hostname="xxx"
If you don't call your computer a hostname, you will get this error in Apache:
Could not determine the server's fully qualified domain name, \
using 127.0.0.1 for ServerName(Note: setting hostname= in the /etc/rc.conf file worked for me in that Apache started. However, other sources say to set the domain name in the file /etc/hosts (e.g. add something like this 127.0.0.1 myhostname).
I don't fully understand the "fully qualified" part of the hostname, either. All I know is that when I put something there, Apache quit giving me the error.
ifconfig_dc0_alias0="63.251.96.137 netmask 255.255.255.0"
If you want to have Apache use an IP address different from the computer's main IP address, you HAVE to give your nic card a matching alias IP address. In retrospect, it makes sense, however, I wasted quite a bit of time on this.
Here is the kicker, and you would think any idiot would start here first...but I didn't. Why? Because I was in a hurry and didn't read everything. After you half-ass install Apache and then can't figure out why it won't start...you are going to edit the file in /usr/local/etc/apache/httpd.conf. (For more info: google with keywords like freebsd, apache, and httpd.conf).
I don't know that I did this 100% correct, but I got Apache to start and work, without a "fully qualified domain name" by changing the lines:
- Listen (e.g. 63.251.96.137:80)
- ServerName (e.g. 63.251.96.137)
Now if you notice what I did here, I told Apache to listen on the IP address that I assigned on the nic card as an alias IP address (see /etc/rc.conf: ifconfig_dc0_alias0="63.251.96.137 netmask 255.255.255.0"). Until I configured it this way, Apache failed on startup.
After all this was done, I was able to open up a web browser and, over the Net, http to http://63.251.96.137 (again, numbers I pulled out of the air) and pull up the default Apache web page. I was way happy.
Again, I'm positive there may be better ways of doing this stuff, I'm just noting the things that I learned through trial and error that got Apache to work for me. Questions I have is if you can give your server a hostname of anything and it will work? Don't know.