FreeBSD安装Apache
Apache的HTTP服务是互联网上应用最广泛的web服务器。虽然FreeBSD默认没有安装,但我们可以非常方便的安装和配置。
目录
安装Apache HTTPD
确定你需要的Apache版本,进入对应目录进行安装,这里我们安装2.4版本。
# cd /usr/ports/www/apache24 # make install clean
如果没有相关目录,请查看FreeBSD更新ports库#.E9.A6.96.E6.AC.A1.E4.BD.BF.E7.94.A8portsnap
安装过程需要用户进行组件的选择和确定交互继续,如果你需要的只是apache的默认组件和选项配置,可以使用下面的命令“一键式安装”,省去多个选择交互的等待。
# make -DBATCH install clean
等待成功完成安装。
配置Apache HTTPD
成功完成安装后,apache相关配置文件可以在
/usr/local/etc/apache24
找到,如果你安装的不是24版本,则配置文件在对应版本号的目录,比如/usr/local/etc/apache22。
web服务器使用httpd来提供服务,我们需要根据需要配置httpd的相关参数。编辑
# vi /usr/local/etc/apache24/httpd.conf
文件,使httpd服务符合我们预期的规划。这里举例几个最常需要关注和配置的选项。
⚠ 任何修改前请先备份当前httpd.conf文件,防止意外错误发生无法恢复!
ServerRoot
默认值:"/usr/local"
服务器根目录,基本不需要修改,但作为参考路径会经常用到。如,apache的配置文件就在ServerRoot/etc/apache2x中。
对于apache的扩展二进制文件,像php-cgi,存放在相对ServerRoot的bin或sbin子目录;同时他们的配置文件存放在ServerRoot/etc子目录中。
Listen
默认值:80
监听端口,基本不需要修改,但如果你不想使用80对外服务,需要修改该值。
该值还需要同时结合httpd-vhosts配置内容一起分析。
ServerAdmin
默认值:you@example.com
服务器管理员email,如果有需要,可修改为站点管理员email。该email会在一些服务器生成的页面中显示,比如错误页面等。
ServerName
默认值:www.example.com:80
服务器名,该默认值仅用于格式说明,需要修改为你的域名:端口,比如www.ibssz.com:80。
如果当前没有注册DNS,该值可配置为服务器IP:端口,比如10.0.0.1:80。
本值默认是注释状态,建议启用配置,预防可能在服务启动时产生问题,比如常见的"AH00557 httpd apr_sockaddr_info_get() failed for xxx"错误就是该项内容引起。
DocumentRoot
默认值: "/usr/local/www/apache2x/data"
网站文档存放路径,所有访问请求都会到这里获取,是实际网站代码的存放路径。
如果不做其他任何修改,在apache服务启动后,使用浏览器访问http://localhost页面显示的内容来自/usr/local/www/apache24/data/index.html
。
ErrorLog
默认值:"/var/log/httpd-error.log"
错误日志文件名,基本不用修改,作为参考信息使用。
LogLevel
默认值:warn
日志记录级别,生产系统建议不做修改。
多站点服务
如果服务器需要服务多个不同的域名,可以通过该配置内容实现。
搜索# Virtual hosts
内容(一般在文件靠尾处),删除该行下放的注释符号#
,如下:
# Virtual hosts Include etc/apache24/extra/httpd-vhosts.conf
完成后对应修改httpd-vhosts.conf文件即可完成多站点服务。
本问提到的所有配置文件,都包含非常丰富实用的注释内容,对每项含义和作用进行说明,如果遇到不明确的,可以查看对应注释内容。
VirtualHost
多站点服务的httpd-vhosts.conf文件配置很直观,例子如下:
<VirtualHost *:80> ServerAdmin webmaster@server1.com DocumentRoot "/usr/local/docs/server1.com" ServerName server1.com ServerAlias www.server1.com ErrorLog "/var/log/server1.com-error_log" CustomLog "/var/log/server1.com-access_log" common </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@server2.com DocumentRoot "/usr/local/docs/server2.com" ServerName server2.com ErrorLog "/var/log/server2.com-error_log" CustomLog "/var/log/server2.com-access_log" common </VirtualHost>
这样就定义了两个不同域名的网站同时运行在一个apache服务器上,一个域名是server1.com,另一个是server2.com;都是通过默认端口80进行服务。
他们有各自独立的:
- 域名server1.com,server2.com
- 文件根目录/usr/local/docs/server1.com,/usr/local/docs/server2.com
- 错误日志文件/var/log/server1.com-error_log,/var/log/server2.com-error_log
- 访问日志文件/var/log/server1.com-access_log,/var/log/server2.com-access_log
增加新的虚拟站点,复制<VirtualHost></VirtualHost>节点后对应修改上面四个独立的配置内容。
使能Apache服务
# echo 'apache24_enable="YES"' >> /etc/rc.conf
测试Apache配置
完成保存所有配置文件后,可以使用apachectl
进行检查。执行:
# apachectl configtest
返回Syntax OK.
可认为配置文件修改无错误;否则可根据输出内容进行检查修改再检查。
启动Apache服务
所有配置正常完成,网站文件对应就位后,可以启动apache开始web站点的服务了。
# service apache24 start
输出:
Performing sanity check on apache24 configuration: Syntax OK Starting apache24.
表示正常启动apache服务。