2015年5月10日 星期日

Apache http server 和 php.ini 設定



Apache 相關設定

根據http://news.netcraft.com/archives/2003/11/index.html 的資料,目前使用apache 做為 http server 的佔有率接近70%,可見得Apache Internet 上的地位有多重要。以下用最簡單的方式來說明 apache 的設定。
RED HAT 上的設定檔:/etc/httpd/conf/httpd.conf ,另外 /etc/httpd/conf.d 下的各個設定檔也要看一下,例如 webalizer.confmrtg.conf


一、主網頁目錄

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all  
</Directory>         

Options Indexes FollowSymLinks                       ;Indexes 列出此目錄中的所有檔案列表。FollowSymLinks :可使用ln 連結目錄。方便,但小心使用。
AllowOverride None                                                             ;預設
Order allow,deny                                                                   ;先看 allow 再看 deny
Allow from all                                                                       ;允許所有來源瀏覽

二、個人網頁

<IfModule mod_userdir.c>
    #
    # UserDir is disabled by default since it can confirm the presence
    # of a username on the system (depending on home directory
    # permissions).
    #
    UserDir disable
    #
    # To enable requests to /~user/ to serve the user's public_html
    # directory, remove the "UserDir disable" line above, and uncomment
    # the following line instead:
    #
    #UserDir public_html

</IfModule>                
預設值並未開放個人的網頁目錄,如果要開放使用者存放自己的網頁,必需啟動mod_userdir.so 這個模組,而且存放的目錄改成 www ,請把上述的設定改成下列的設定:
    #UserDir disable
 
    UserDir www  ;目錄名稱可自行設定
目前的 Fedora Core 3 以後的版本把 Selinux 當成預設的功能,雖然增加了安全性,但是增加了許多不方便的地方。可以先將 Selinux 停下來。
vi /etc/sysconfig/selinux

SELINUX=enforcing
修改成--> SELINUX=disabled
重新開機。

三、Alias 應用

先參閱 httpd.conf 的範例
Alias /icons/ "/var/www/icons/"

<Directory "/var/www/icons">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
如果使用過 IIS 就很容易理解上面的設定和意義。"/var/www/icons/" 是系統上的實體目錄,/icons/ 則是分享出去的名稱,所以http://Server_ip/icons/ 就可以看到/var/www/icons/ 的內容。<Directory "/var/www/icons"></Directory> 中間所包含的就是 /var/www/icons 這個資料夾的相關設定。
例如 /usr/share/doc/ 下有所有安裝套件的文件,是一個很好的參考資料,可以利用Alias 把它變成是方便閱覽的網頁。
同一台 SERVER FTP HTTPD 的服務,也可以利用Alias 達成兩種服務共用的模式。
http://Server_name/~user_name 這一看就知道是UNIX-Like 的系統,如果想把 ~ 符號去掉,也可以利用 Alias



四、conf.d/* 的應用

httpd.conf 這個主要設定檔中有一行設定 Include conf.d/*.conf ,這行設定會讓apache 在讀取完 httpd.conf 後, 會馬上載入 conf.d/ 下的所有 conf 檔。 因此,目前有許多和apache 相關的套件會把設定檔放在 conf.d/ 之下。例如 webalizer
Alias /usage /var/www/usage

<Location /usage>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
    Allow from ::1
    #Allow from .example.com
</Location>
在這個設定中,只能在本機上看到執行的結果,如果不做任何限制,必需把 127.0.0.1 改成 all 或者0.0.0.0 ,再重新啟動http
在前面提到把 ~ 符號去除,可以編輯一個 conf.d/user.conf 的新檔案,把 所有的 user 加入,存檔,重新啟動 httpd
例如設定一個資訊組的專用帳號 info ,瀏覽的網址就是 http://127.0.0.1/~info/  如果想用 http://127.0.0.1/info/ 就可以瀏覽,可以在 conf.d/user.conf 加入以下設定
Alias /info/  “/home/info/www/”
User.conf 這個檔名可以自取,重點是結尾要是 .conf,而且必需存在 conf.d 這個目錄。

五、不要預設編碼

不要有預設值,讓網頁去決定。
#AddDefaultCharset ISO-8859-1   ; 把這行 default mark 起來。或者

AddDefaultCharset off

讓網頁中的
<meta http-equiv="Content-Type" content="text/html; charset=big5">
這一行來決定。




六、配合學務系統,php.ini 建議做下列修改

1.magic_quotes_gpc建議設為On,中文部分較不會有問題
magic_quotes_gpc = Off

2.顯示php錯誤訊息
display_errors = Off
改為
display_errors = On
這樣可以顯示程式的錯誤

3.修改error_reporting,否會有錯誤訊息
error_reporting = E_ALL
改為
error_reporting = E_ALL & ~E_NOTICE

4.報表或成績單只能下載幾張,無法下載全班者
memory_limit = 8M
改為
memory_limit = 12M (或更大)

5.修改單一檔案上傳限制
upload_max_filesize = 2M
改為
upload_max_filesize = 10M (或更大)

6.檔案上傳限制相關設定,三個數值要注意
  memory_limit :                  (PHP運作所用到的RAM)
  post_max_size :                (
上傳檔案時,全部檔案合計大小的限制)
  upload_max_filesize : (
單一檔案大小的限制)

               memory_limit > post_max_size > upload_max_filesize




七、讓使用者不用修改瀏覽器,下載Big5

1.      需要套件: httpd-devle  gcc
2.      下載mod_fileiri 原始程式
#wget http://www.cses.tc.edu.tw/study/sfs3/mod_fileiri.c
3.      #apxs -i -a -c mod_fileiri.c
4.  查看 /etc/httpd/conf/httpd.conf ,增加了一行設定
LoadModule fileiri_module    /usr/lib/httpd/modules/mod_fileiri.so
5.      增加該module 的設定,可直接修改 httpd.conf 或獨立一個檔案,放在
/etc/httpd/conf.d/
之下。
<IfModule mod_fileiri.c>
    FileIRI On
    FilenameCharset Big5
</IfModule>


沒有留言:

張貼留言