知識分享

Drupal 一個強大的地方,就在於可以輕易的支援多網域(Multi-Site)的功能,同一套Drupal核心,就可以同時分享應用於不同的網站,且不同的網站之間還可以共用模組。

這對多網站的管理上有很大的幫助,尤其是更新模組及更新drupal核心時,只要做一次就可以了,不用每個網站一一處理。

那麼要如何讓Drupal開始支援Multi-Site呢?大致步驟如下(Shared hosting 不適用):

  1. 在/sites 目錄底下新增一個與要附加網域名稱同名的子目錄,假設要附加的網域是 site1.yosia.net ,目錄結構就會像這樣:/sites/site1.yosia.net/
     
  2. 接著在這個目錄裡新增三個子目錄,分別是modules 、themes 及 files,目錄結構如下:
    /sites/site1.yosia.net/modules/ , /sites/site1.yosia.net/themes/ 
     
  3. 再來把/default/default.settings.php 複製一份到 /sites/site1.yosia.net,並更名為settings.php。所以現在/sites/site1.yosia.net/ 裡的內容如下:
    /sites
更多

當進行Drupal安裝時發生無窮迴圈的狀況時,很有可能是這個東西搞的鬼 - APC

這個可以有效加速PHP的功能,是怎麼造成問題的呢? 關鍵在於 apc.stat 這個參數。APC 在每次讀取 PHP 程式碼的時候,都會先 stat() 程式碼所在的檔案,以確定要不要重新編譯成 OPCODE ,而apc.stat=0 則是直接省略 stat() 的步驟,拿原本就有的 opcode 來用,而我們知道drupal的安裝過程會經過好幾次bootstrap,也因此我們就會一直持續執行第一次的bootsrap,而掉進了所謂的無窮迴圈。

解決的方法很簡單,就是只要在php.ini中把這個參數設定為 apc.stat=1 就能解決問題了

 

 

在Ubuntu要安裝APC比較簡單,順序如下:

  1. 先安裝PEAR
    sudo apt-get install php-pear php5-dev
     
  2. 接著就能利用pecl指令來安裝apc了
    sudo pecl install apc
     
  3. 接著要修改php.ini的設定,啟用apc支援,加入以下內容
    [APC]
    extension=apc.so
    apc.enabled=1
    apc.shm_segments=1
    apc.shm_size=128M
    apc.stat=0 #僅適用於production site
    apc.ttl=0
     
  4. 修改完記得重啟apache
    sudo service apache2 restart
     
  5. 接著幫Drupal安裝apc模組,不能用drush的話,到這裡下載後再到模組管理頁啟用即可;可以的話,就用以下drush指令下載安裝
更多

在安裝Tomcat之前,可以先確認一下伺服器有沒有支援Java,指令如下:

java -version

如果出現找不到指令之類的訊息的話,就要先把java裝起來,可以參考一下這篇的指示。安裝完成後就可以開始安裝Tomcat啦!

在Ubuntu進行Tomcat的安裝還滿簡單的,指令如下:

apt-get install tomcat7 -y

 

更多

AllowOverride 的參數可詳見官網說明。這個參數用來控制客戶端可利用.htaccess的程度。參數如下:

  1. AuthConfig 允許使用與認證授權相關的指令
    • AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require...
  2. FileInfo 文件相關指令
    • 控制文件類型(mod_mime):
      DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter,
    • mod_mime
      Add* 和
更多

在Linux有幾個找檔案的指令:find, whereis, locate

find跟windows裡面的搜尋功能有點像,是整個目錄逐一去找,所以效能可能會"稍微"慢一點,語法如下:

find -name 檔名

whereis 則是直接尋找已經找過的檔案來找,所以速度很快,不過如果沒有找過的檔案,就會找不到,但事實上用whereis找不到,並不表示檔案不存在,語法如下:

whereis 檔名

locate則是透過索引的方式去找檔案,速度也滿快的,不過新檔案可能會找不到,需要另外透過指令建立索引。語法如下

locate 檔名
#更新索引
sudo updatedb
#如果找不到locate這個指令,先進行安裝
sudo apt-get install locate

Options的參數說明可參考官網說明,只是說明中的yosia也不太會翻譯,不過基本上從設定值來說,這個參數是用來控制在目錄中可以執行的功能。共有以下幾個參數

  1. All
    除了MultiViews以外的所有功能
  2. ExecCGI
    可以使用mod_cgi來執行CGI程式
  3. FollowLinks
    允許訪問符號連結(symbolic link)的子目錄。此為預設值。
  4. Includes
    允許mod_include所使用的伺服端函式庫
  5. IncludesNOEXEC
    同上,但#exec cmd 以及 #exec cgi除外
  6. Indexes
    若被訪問的URL中沒有任何的index檔案,則顯示該目錄的子目錄列表
  7. MultiViews
    多語系支援
  8. SymLinksIfOwnerMatch
    同FollowLinks,但目的地目錄或檔案的擁有者必須與符號連結的擁有者相同。

 

Hammer.js

Hammer.js是一個專門用於控制、定製手勢的輕量級JavaScript框架,可以識別出常見的觸摸、拖動、長按、縮放等手勢。支持Android、BlackBerry、iOS及Windows觸屏設備。

jQuery UI

jQueryUI是一套jQuery JS庫的頁面UI插件,包含多種常用的頁面空間,比如Tabs、拉簾效果、對話框、拖放效果、日期選擇、顏色選擇、數據排序、窗體大小調整等。能夠讓開發者輕而易舉地製作出一個高度交互的Web應用。無論是對於開發者還是設計師而言,它都非常實用。

FastClick

FastClick是一個非常方便的庫,在移動瀏覽器上發生介於輕敲及點擊之間的指令時,

更多

在Microsoft Windows底下,我們可以透過工作排程來定期執行特定程序。而在Linux,則是透過crontab來進行。

一般來說有下指令編輯設定檔兩個方式可以設定。

下指令設定

語法:crontab [-u username] [-l|-e|-r]
說明:

  1. 這個指令預設只有root可以使用,加上-u 參數以指定特定帳號為該工作的執行者
  2. -e:編輯工作排程
  3. -l:檢視工作排程
  4. -r: 刪除所有工作排程

編輯設定檔

一般crontab的設定檔會位在 /etc/crontab,所以直接編輯這個檔案就行了,ubuntu系統要記得用sudo
指令:vim /etc/crontab

工作排程的設定格式如下:

格式:分(0-59) 時(0-23) 日(1-31) 月(1-12) 週(0-7) 要執行的指令串
說明:

  1. 各參數以空格分隔
更多

設定訪問權限的時候,有三個關鍵字:Order , Allow, Deny。其中Order會指定"檢查權限設定的順序",Allow會指定"允許訪問名單",Deny則指定"禁止訪問名單"。因為Order的邏輯有點特殊,所以特以此篇記錄心得,不過詳情參考Apache的官方說明應該會更清楚。

以下直接以實例來說明,

Order Deny,Allow
Allow from All

以上設定代表的是:

  1. 先檢查禁止名單,若在名單內則禁止,除非在允許清單中有允許,而不在兩個名單內的,預設允許
  2. 允許設定:全部通過

要注意Order後面的順序是先Deny再Allow,也就是沒有檢查到有禁止設定的,就直接允許。第二句代表的即是第一句中所要檢查的"允許設定(Allow)",因為沒有任何的"禁止設定(Deny)",所以直接執行"允許設定"中的內容,

更多