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服务。