前兩週將機器從 ubuntu 14.04 更新為 ubuntu 22.04,發現每月執行的指令 certbot-auto renew 會噴以下錯誤 排查後發現 certbot 1.9.0 以後只支援 Debian / RHEL 版本的 linux OS certbot-auto was deprecated on all systems except for those based on Debian or RHEL. https://community.letsencrypt.org/t/certbot-1-9-0-release/135414 於是嘗試重新安裝 certbot 新版,由於我使用系統配置為 ubuntu / nginx,其他配置可以參考 官方安裝文件 嘗試執行 certbot certificates 即可正常執行了 ~ 參考資料:
如何設定 nginx 阻擋特定 ip / 網段存取,首先找到對應的 nginx configuration, 通常會在 /etc/nginx/sites-enabled/*.conf 或是預設的 /etc/nginx/nginx.conf 接著找到 server / location 區塊,加上 deny 語法
透過 bundler 安裝 ruby gem 時遇到了以上錯誤,仔細看 log 會發現有 解決方式: 安裝 xcode command line tools
當在架設網站時,時常會幫網站前面架設一層 cdn(cloudflare),好處是 cdn 作為第一層接收使用者端的請求既可以隱藏伺服器真實 ip,更可以加速各地區的網站載入速度。 反之,多了一層 cdn 可能讓你更難存取到真實的使用者資訊,比如導致在網頁伺服器看到的 access.log 其中 $remote_addr 都是來自 cdn 廠商的 ip,例如:162.158.162.90 造成這個問題的原因,可以參考以下圖片的流程: 原來的使用者 IP 為: 1.1.1.1 / 2.2.2.2 由於經過 cloudflare 的 cdn 伺服器(4.4.4.4)存取後,導致 Logs 充斥 4.4.4.4 的 $remote_addr 為了解決這個問題 cloudflare 官方有提供在各網頁伺服器該如何設定正確的 mods 解決此問題 這邊以 ubuntu 的 nginx 設定為例 2. 重新讀取 nginx 設定 設定大功告成 ~ 重新檢查 access.log 的 $remote_addr 是否後就會正確抓到使用者 ip 了 […]
最近使用 rbenv 切換環境後,遇到執行 irb 發生以下錯誤的狀況 嘗試找了可能的解法後發現 這篇 執行以下指令重裝套件以後,即正常運作
常常在看機器目前負載狀態時,總是會先看 cpu / memory 的使用量,但在 cpu 上有些數字代表指標 記錄一下每個數字的意義 ~ 之後忘記可以查 XD 舉個例子: 以上這張圖透露了以下資訊: 此機器 cpu thread count 為 8若要查實體 cpu count 為多少可以使用 sysctl -a | grep machdep.cpu.core_count cpu 使用量, process 依照優先權重分別為 紅(kernel) > 黃(user) > 綠(user) process memory 使用量,綠色為 process, 藍/橘則為 buffer 或 disk cache 使用的 memory swap 使用量,通常在記憶體不夠用時會使用硬碟空間作為記憶體使用 目前機器上有 588 tasks, 2594 threads, 1 […]
在 Linux 常見的防火牆套件為 iptables,相信有當過網管或管理伺服器的管理人員都相當熟悉。 (曾經設定完 iptables 就再也連不進去遠端機器的經驗 這篇就不說明如何設定 iptables,這方面的說明在網路上有相當多教學,也可以參考 鳥哥私房菜-防火牆 紀錄一下時常設定完後,如何觀察有哪些嘗試連線而被阻擋的紀錄 首先舉個例子: 透過以下指令我們限制僅有 x.x.x.x ip 可以透過 ssh 連線進入主機 這時候除了 x.x.x.x ip ssh 連線至主機會顯示 這時候我們可以藉由以下指令新增 iptables rule,查看主機上是否有相關的阻擋紀錄 接下來在 /var/log/kern.log 就可以看到封包相關的阻擋紀錄 參考資料 https://www.thegeekstuff.com/2012/08/iptables-log-packets/
平常在用 git cli 時不免會想列出目前 remote / local 的所有 branch / tag,但預設排序會是依照字母顯示,導致不是很好找到最新更新的 branch / tag。 這裡記錄一下如何做對應的設定 依照 commit date 排序顯示 branch list 依照版本號順序顯示 tag list 以上兩個設定設定完後,會自動寫入至 /Users/user/.gitconfig,如下: 參考資料: https://github.com/git/git/blob/master/Documentation/RelNotes/2.19.0.txt https://stackoverflow.com/questions/5188320/how-can-i-get-a-list-of-git-branches-ordered-by-most-recent-commit
Mysql 5.7 有以下兩個設定可以協助你排查 SQL 執行的狀況以及相關指標,由於這類設定可能會影響效能上的表現,預設會是關閉的,以下簡介如何開啟設定以及相關的設定檔。 General Query Log:記錄下所有執行的 SQL query 供排查,開啟後通常會伴隨大量的寫入因此不建議在生產環境開啟設定,範例輸出像是以下: 開啟 general_log 我們可以透過以下 SQL 讀取/設定目前的 gerenal_logs 設定 要注意的有以下三個值 general_log:ON / OFF 開啟 general_logs 與否 general_log_file:寫入指定目的地路徑的檔案 log_output:FILE / TABLE 寫入目的地為檔案 或資料表( mysql.general_log) 透過 SQL 更改 runtime 設定設定會立即生效不需要重啟 mysql service,但重啟 mysql 後需要重新設定 透過 my.cnf 設定重啟後 mysql 預設會依照以下路徑的先後讀取設定檔(mysql -h 可以看到此提示) /etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf Slow Query Log:對比於 […]
當每次要編輯使用者底下的 crontab 時,我們會下 crontab -e 但可能初次設定時設定錯誤,發現開啟的是 vi / nano / vim 等不熟悉的編輯器。 在 ubuntu 上你可以直接下 系統會將你選擇的編輯器紀錄在 ~/.selected_editor 參考資料 https://www.howtogeek.com/410995/how-to-change-the-default-crontab-editor/