星期二, 7月 07, 2009

安裝 Apache on FreeBSD 筆記


安裝 Apache on FreeBSD 筆記

# 用 ports 安裝 apache 1.3
# 也可以裝 apache22 或更新版本,目錄不同而已。
cd /usr/ports/www/apache13/
make all install clean

# 編輯 /etc/rc.conf 加入 apache_enable="YES"
echo 'apache_enable="YES"' >> /etc/rc.conf

# 啟動
/usr/local/etc/rc.d/apache.sh start


* 一般設定

# 編輯 /usr/local/etc/apache/httpd.conf

[httpd.conf]
    # 管理者帳號
    ServerAdmin you@your-host.com

    # 網站名稱
    ServerName www.your-host.com

    # 網站根目錄
    DocumentRoot "/usr/local/www/data"

    # 根目錄細部設定
    <Directory "/usr/local/www/data">

    # 常見設定:
    # Options 後面可以接的關鍵字除了 None 和 All 之外也可以是其他關鍵字的合併:
    #  None    => 什麼也沒有
    #  All     => 除了 MultiViews 之外通通都有
    #  ExecCGI   => 可以執行 CGI
    # FollowSymLinks  => 使用系統的 symbol link 存取目錄
    #  Indexes   => 沒有索引檔時顯示目錄
    # Includes  => 可以使用 Apache 的 SSI (Server-Side Include)功能
    # IncludesNOEXEC => 可以使用 SSI 但不能執行 CGI
    Options Indexes FollowSymLinks MultiViews

    # 可以使用 .htaccess
    AllowOverride All

    # allow 與 deny 順序
    Order allow,deny

    # 所有人都可以看
    Allow from all

    </Directory>
[/httpd.conf]


* 虛擬主機設定 (v1.3)

[httpd.conf]
    # 虛擬主機的 DNS
    NameVirtualHost [本機IP]

    # 設定含入檔
    include /usr/local/etc/apache/vhosts/

    # 預設伺服器, 當 client 輸入的位址查不到時會連到這

    <VirtualHost _default_:80>
        Options ExecCGI
        ServerAdmin root@[本機IP]
        DocumentRoot /usr/local/www/data
        ServerName [本機IP]
        ErrorLog logs/default-error_log
        CustomLog logs/default-access_log combined
    </VirtualHost>

    # 當 client 使用 ip 連線時會連到這

    <VirtualHost [本機IP]>
        Options ExecCGI
        ServerAdmin root@[本機IP]
        DocumentRoot /usr/local/www/data
        ServerName [本機IP]
        ErrorLog logs/default-error_log
        CustomLog logs/default-access_log combined
    </VirtualHost>
[/httpd.conf]

# 這種設法是把每個虛擬主機設定存一個檔案,要新增或刪除主機時在含入目錄中增刪檔案即可。

[虛擬主機設定檔範例: alpha]
    alias /alpha /usr/local/www/vhosts/alpha
    <VirtualHost *:80>
        ServerAdmin [you]@[domain]
        DocumentRoot /usr/local/www/vhosts/alpha
        ServerName alpha.[domain]
        ErrorLog /var/log/alpha.[domain]-error_log
        CustomLog /var/log/alpha.[domain]-access_log combined
        <Directory "/usr/local/www/vhosts/alpha">
            Options Indexes FollowSymLinks
        AllowOverride None
        Order allow,deny
        Allow from all
        </Directory>
    </VirtualHost>
[/虛擬主機設定檔範例: alpha]


* 虛擬主機設定 (v2.2)

# 與 1.3 設定類似,相關設定會放在 /usr/local/etc/apache22/extra/httpd-vhosts.conf
# 在 /usr/local/etc/apache22/httpd.conf 中把上面檔案引入,並修改為自己想要的如下:

[httpd.conf]
Include /usr/local/etc/apache22/extra/httpd-vhosts.conf
[/httpd.conf]


* 錯誤記錄存放處:

cat /var/log/httpd-error.log


* apache 防盜連設法

# 參考官網範例: http://httpd.apache.org/docs/2.0/env.html#examples

[httpd.conf]
    #允許存取的主機位置
    SetEnvIf Referer "^http://www.your-host.com/" local_referal
    SetEnvIf Referer "^http://192.168.1.100/" local_referal

    #允許用戶不送 referer (從"我的最愛"/"書籤"開啟時)
    #SetEnvIf Referer "^$" local_referal

    #要保護的目錄
    <Directory /usr/local/www/data/mrtg/>
        Order Deny,Allow
        Deny from all
        Allow from env=local_referal
    </Directory>
[/httpd.conf]

沒有留言: