知識分享

今天從server端把資料庫匯出,想在本地端重建,結果出現

unknown command ‘\”‘ 的錯誤訊息

研究了一下發現是DB的 character set不同所造成的問題

可以在匯入時加個指令,來指定要匯入的character set, 語法如下:

mysql -u[USERNAME] -p[PASSWORD] --default-character-set=latin1 [DATABASE_NAME] < [BACKUP_SQL_FILE.sql]

關鍵在於 --default-character-set=latin1 這一段,latin1這裡可以改成自己的資料庫character set

在vim要下指令的話,要先輸入半形冒號 ":" 就會跳出指令列

  • 啟用syntax
    syntax on
     
  • 全文搜尋並取代
    1,$s/[obj string]/[replacement]/g
    說明: 1,$  表示 從第一個字元搜尋到最後
               s     表示要取代
    上面指令等同於
    %s/[obj string]/[replacement]/g
  •           

一些小技巧

  1. 映射時一定要設定guid,才能更新先前已匯入的資料
  2. 承上,但guid只對同一個 Feeds importer 有效,並不會因為有相同的bundle而可以互相更新。
  3. 如果要僅更新某些已匯入資料的特定欄位,需要從映射表來增刪。舉例來說,原始匯入的內容類型,有A,B,C三種欄位,但如果未來若只要更新所有該內容類型的A欄資料,則要在feeds的映射表中把其他兩個欄位的對應給移除,或者要匯入的原始資料也得要三個欄位都具備,不然會其餘兩個欄位會被清空。
  4. 如果要匯入圖片欄位,只要提供完整的url資訊,feeds會自動把圖片抓回來,但圖片量多的話可能會很久...

location的設定,可以參考官網的說明。語法如下:

location [ = | ~ | ~* | ^~] uri { ... }
location @name

其中,中括號[]裡的符號,以下稱為修飾符;uri 稱為前綴字串。
@name則是會定義一個location變數,類似連結,用來讓request轉向。不會進行正則匹配,也不能使用巢狀結構。

先說明匹配的優先順序

  1. 當接收到request時,首先會找出沒有加修飾符,僅有前綴字串的項目,如根目錄 /。nginx會選取有匹配的項目並記住與request最匹配(最長)的項目
  2. 接著檢查有加修飾符的項目,根據這些項目在設定檔中的順序,依次檢查,並選擇第一個匹配成功的項目
  3. 若沒有任何一個正則匹配的話,則應用第1步所找到的項目。

location 後方接的修飾符,用以下範例說明比較容易理解

  • ~ 波浪符號,表示後面接的是一個正則匹配,有區分大小寫。
更多
  1. 取得遠端文件
    git clone 目標網址
     
  2. 建立分支Branch
    git branch 分支名稱
  3. 切換到特定分支
    git checkout 分支名稱
  4. 建立分支Branch,並切換到新的分支
    git checkout -b 分支名稱
  5. 查看目前所在分支
    git branch [-r: 所有遠端分支 | -a: 所有本地及遠端的分支]
  6. 刪除分支
    git branch [-r:遠端] -d 分支名稱
     
  7. 合併指定分支到目前的分支
    git merge 分支名稱
  8. 合併分支,但不產生commit
    git merge 分支名稱 --no-commit
  9. 將某個commit的內容合併到目前的分支
    git cherry-pick 分支的SHA碼
     
  10. 查看目前已做的變更,及目前所在分支
    git status
     
  11. 將檔案加入stage
    git add 檔案名稱
  12. 將所有檔案加入stage(新增且已經commit過的檔案)
    git add .
更多

指令範例:

dursh dl -select module_name

 

今天調整了一個網站的設定值,加了一個301 redirect後,重啟nginx結果發現調整的結果一直出不來,一直500 error,檢查了log檔,發現了這個錯誤

[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)

解決的辦法是把目前的nginx的進程砍掉,然後重新啟動nginx

指令:

sudo fuser -k 80/tcp
service nginx start

max_children:決定可接受的併發數,一般children的值是網站最高併發數+浮動值。這個值會決定使用多少記憶體,一般一個children是20-30M左右,要大於max_spare_servers。

max_requests:每一個child接受的request數,當超過這個數時,就把自己殺死然後重新建立一個child。

request_terminate_timeout:每個request最長的執行時間。

start_servers:起始進程數,須介於min_spare_servers及max_spare_servers之間

min_spare_servers:最小進程數

max_spare_servers:最大進程數

process manager分為以下三種類型,

  • Static:固定的進程數,適合只有一個網站的伺服器。
  • Dynamic:動態的進程數,適合有多個網站且負載較重(每日10k以上request)的伺服器
  • ondemand:依需求調整,比較適合pool量大的伺服器,即伺服器中放了很多低負載(每日只有幾百或更低request)的網站。

 

參考文章

更多