解決 Nginx 504 Gateway Time-out

當 Nginx 發生 504 Gateway Time-out 時, 一般上原因是一些程式執行需時較長時間, 當執行時間超出 Nginx 的限制時, 便會出現 504 Gateway Time-out 問題, 如果排除了程式上的問題, 解決方法是將執行時限延長 (或者升級主機的硬體也可以)。首先開啟 Nginx 的網站設定檔, Nginx 將網站設定檔都放在 /etc/nginx/ 目錄下, 下面以 www.phpini.com 為例: # vi …

MySQL 檢查欄位是否 NULL 或空白

有時需要在 MySQL 資料庫內,檢查欄位的值是否 NULL,這個可以使用 MySQL 內建檢查 NULL 的功能,分別是 “IS NULL” 及 “IS NOT NULL”, 以下是用法:select 資料表 table_name,欄位 col_name 是 NULL 的紀錄: select 資料表 table_name,欄位 col_name 不是 NULL 的記錄: 如果想 select …

rsync 透過 SSH 傳送檔案

rsync 是十分好用的同步備份工具,rsync 預設傳輸時不會加密,但其實 rsync 是支援 SSH 傳輸檔案,以下是 rsync 透過 SSH 同步檔案的方法:從本機用 rsync 透過 SSH 複製檔案到遠端:在 rsync 加上參數 “-e” 可以自訂通訊協定,後面加上要用的通訊協定即可。 # rsync -avzhe ssh my_backup.tgz [email protected]:/backups/ [email protected]’s password: 上面指令會將檔案 my_backup.tgz 用 …

同時安裝多個 PHP 版本

現在 PHP 其中一個很大的問題, 是很多個不同的 PHP 版本都有人使用, 對於開發者需要顧及程式碼是否可以在不同版本執行, 而對系統管理員, 就要面對不同程式可能需要不同 PHP 版本。以下記錄一下在系統安裝不同 PHP 版本, 並可以按需要設定不同 Virtualhost 或目錄, 可以使用不同 PHP 版本的方法, 以下會以 CentOS 7 及 Apache 作為安裝環境。首先在系統用 YUM 安裝好 Apache 及 PHP, …

Linux 的 useradd 實用例子

Linux 下的 “useradd” 指令用作建立新帳號, 當執行 useradd 指令時, 它會完成以下工作:— 編輯 /etc/passwd, /etc/shadow, /etc/group 及 /etc/gshadow 檔案, 加入新帳號的內容. — 為新帳號建立家目錄. — 設定新帳號家目錄的權限及 owner.執行 useradd 建立帳號時, 如果沒有指定參數, 會用系統的預設值建立帳號, 以下是建立帳號時改變預設值的例子。 建立新帳號要使用預設值建立帳號, 語法十分簡單, 只要在 useradd …

Toyota Wish 換機油

不經不覺 Wish 已經買入一年三個月, 里程數已經累積到 18000 公里, 今天要換機油保養, 在這裡做個紀錄。今次保養會換機油、機油隔及冷氣隔, 今次機油試用 Miller 5W30.有時會有人叫我用 5W40 的機油, 原因是香港天氣很熱, 但我一直沒有跟從, 從十多年前的 Civic, 到上次的 Corolla 都一直跟車主手冊的建議用 5W30, 以前兩部車到賣掉時, 都沒有出現引擎固障的問題, 所以現在還是跟車主手冊。

Shell Script 連接 MySQL 安全寫法

在 Shell Script 連接 MySQL, 可以用以下語句實現: $ mysql -u db_user -pdb_password db_name -e ‘sql_query’ 如果系統內沒有其他使用者,這個方法沒什麼問題,但如果系統有其他使用者,在執行 Shell Script 時,其他使用者便可以用 ps 這類指令,看到正在連接 MySQL 的使用者名稱及密碼。較安全的方法是將 MySQL 使用者名稱及密碼儲存到家目錄的 .my.cnf 檔案,那便不用在 Shell Script 輸入 -P …

安裝 MySQL 後的優化

以下是安裝 MySQL 後可以嘗試的優化項目,建議逐樣項目修改,以檢視每個項目的優化成效,而大部份的設定可以在運行中 MySQL 設定,不用重新啟動 MySQL。innodb_buffer_pool_size: 這個設定是 innodb 儲存引擎資料庫,所使用的資料及索引快取,根據記憶體的大小䀆量設定大一點,可以減低讀取資料時從硬碟讀取的次數。如果是獨立的 MySQL 伺服器,可以這樣設定:系統 8GB 記憶體: 5GB – 6GB 系統 32GB 記憶體: 20GB – 25GB 系統 128GB 記憶體: 100GB – 120GBinnodb_log_file_size: 這是 redo …

找出屬於個別帳號檔案並 chown

今天將一台 CentOS 6 伺服器內所有網站,輚移到另一台 CentOS 7,轉移過程連同檔案權限, owner 及 group 都一同複製,測試後發現多數網站都運作正常,唯獨有用 PHP 建立的檔案及目錄便有寫入失則的問題。查看了檔案的權限是正確的,但用 “ls -l” 查看那些出問題的檔案及目錄,看到 owner 不是顯示 “apache”, 而是顯示 “80”, 原來 CentOS 6 時 Apache 帳號的 uid 是 80, 在 …

只針對檔案或目錄 chmod

如果想對整個目錄內所有檔案及目錄改變權限,可以用 chmod -R 實現,例如: $ chmod -R dir_name/ 644 以上指令會對 dir_name/ 目錄及它的所有內容,改變權限為 644.但如果要做到檔案及目錄設定不同權限,例如目錄設定為 755, 檔案設定為 644, 可以透過 find 指令來找出目錄或檔案,並用 -exec 參數執行 chmod 指令。改變所有 dir_name/ 目錄下所有目錄的權限為 755: $ find dir_name/ -type …