【工作手記】Directadmin PHP Selector 相關 + custombuild 502 問題解決方式

Directadmin PHP Selector 相關

PHP版本更替,舊版本最好從可選項目中除去。但DA的設計只是標識當前使用的PHP_Selector序號(1~4),沒使用名稱,所以一旦修改可支援版本和序號,很可能會直接造成某個舊版本的網頁停止運作。解決方式:

  1. 確認PHP_Selector的排列,1~4分別是哪個版本。記錄下要替換的版本。
    例如 PHP_Selector1 是 php74-pfm 版本,PHP_Selector2 則是 php80-pfm 版本。
  2. 用CLI查找哪個網站使用著哪個PHP_Selector序號。
    查找指令:
    grep -P 'php[\d]' /usr/local/directadmin/data/users/*/domains/*.conf

    返回例子:
    /usr/local/directadmin/data/users/nap/domains/abc.com.conf:php1_select=1
    /usr/local/directadmin/data/users/nap/domains/abc.com.conf:php2_select=0
    /usr/local/directadmin/data/users/tzv/domains/dom.org.conf:php1_select=2
    /usr/local/directadmin/data/users/tzv/domains/dom.org.conf:php2_select=0

  3. 調整 php1_select 的指向數字就行了。
    這裏第一行標識這個 abc.com 網站使用 PHP_Selector1 的設置版本,這例子就是 php74-pfm了。另一個 dom.org 則是用著 php80-pfm。

custombuild 502 問題

作 ./build update 時,跳出 curl 502 錯誤。

花了超過一小時查找,最後獲得的原因是 DirectAdmin 預設更新網址 files-ca.directadmin.com的 SSL 證書竟然過期了。。。(無言 + 狂翻白眼)

解決方式:

  1. 找出 custombuild 的設置檔。我這的位置是
    /usr/local/directadmin/custombuild/options.conf
  2. 找到 files-ca.directadmin.com 的設置位置,用符號 # remark 掉。
    # downloadserver=files-ca.directadmin.com
  3. 把原來的設置行複製,替換掉 files.directadmin.com 。
    downloadserver=files.directadmin.com
  4. 重做一次 ./build update 即可。

【工作記錄】Linux Command Line 界面的顔色設置

工作緣由,必須常常需要在Linux CLI中操作,有的系統色系沒設置好,操作時只有一色就顯得很難辨識到底所看到的是文件夾還是文件。。。

通過設置界面顔色,可以更好的分辨個別的項目,而且還可以客制化想要的界面。

相關的設置文件

~/.bashrc~/.bash_aliases

設置代碼例子 (不斷行)

export PS1="\[\e[31m\]\u\[\e[m\]@\[\e[32m\]\h\[\e[m\]:\[\e[36m\]\W\[\e[m\]\\$ "
設置后的效果(root用戶)

設置完成后,需要執行指令 source ~/.bashrc ,讓新設置生效。


網上其實有不錯的工具可以用於創建代碼,然後直接抄寫進入設置文件即可。下面介紹的這個網頁,挺實用的。唯一的缺陷就只是所能使用的顔色有限,其餘的將近完美了。其實它也是被開源的網頁,有興趣的可以調整成自己要的形式,顔色方面也可以自己增設。

網址: https://ezprompt.net/

GitHub: https://github.com/jmatth/ezprompt

Linux内部無法解析域名

Linux cannot resolve domain name, public DNS resolvation failed.

網絡服務器,無論是用 ping 還是什麽工具,只要是域名就無法解析,會在久等后跳出超時錯誤。由於是遠端登錄,所以不必查網路是肯定不是問題源頭。

檢查了 /etc/resolv.conf ,裏面的 nameserver 設置沒錯誤。檢查了 /etc/nsswitch.conf, 解析的次序也沒問題。檢查了 route -n 結果也是沒問題。

最後發現,原來是防火墻把解析域名時,所需要的 udp 53 端口擋掉了。補上后就沒問題了。。。下面是 iptables 的相關指令記錄。

iptables -A INPUT -s 8.8.4.4 -p udp --sport 53 -j ACCEPT

指令解釋:

-A INPUT 針對防火墻入口規則
-p udp –sports 53流通 53 端口的 UDP 類數據包
-s 8.8.4.4 數據來源 IP 為 8.8.4.4
-j ACCEPT 允許運行
最後得到的會是這樣

重設MySQL root密碼

好久沒碰過更換root密碼的這爛事了,今天重溫了一遍。。。

一般上,伺服器一旦運行了,最好的情況是永遠無需碰它的設置。但有時候真的無可避免。這回,在使用了往常用的修復手法后,卻被系統直接KO,被系統提醒我 “請仔細詳讀用戶手冊中,Security這欄目。。。”

找了來看,一頭霧水。最後去問神了,結果還是一直被KO。直到最後在Stack Overflow的這篇文章内,才找到真正的答案。。。

是的,系統升級了,往常用的mysqld_safe已經不存在了。現在更方便的衹需設置好伺服器的運作環境常量,重啓即可。長話短說,流程轉載在下方:

1. Stop mysql:

> systemctl stop mysqld

2. Set the mySQL environment option

> systemctl set-environment MYSQLD_OPTS=”–skip-grant-tables”

3. Start mysql usig the options you just set

> systemctl start mysqld

4. Login as root

> mysql -u root

5. Update the root user password with these mysql commands:

mysql> UPDATE mysql.user SET authentication_string = PASSWORD(‘MyNewPassword’) -> WHERE User = ‘root’ AND Host = ‘localhost’;

mysql> FLUSH PRIVILEGES;

mysql> quit

(for 5.7.6 and later, you should use mysql> ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘MyNewPass’;)

6. Stop mysql

> systemctl stop mysqld

7. Unset the mySQL envitroment option so it starts normally next time

> systemctl unset-environment MYSQLD_OPTS

8. Start mysql normally:

> systemctl start mysqld

9. Try to login using your new password:

> mysql -u root -p

[Linux] logrotate — 日志文件的自動分頁備份工具

在Linux上,最重要的文件之一就是其日志文件,我想Linuxer都應該會同意這個説法。原因衹有一個:系統出現任何問題,都可以在這找到其出事原因!說實在,這比微軟的系統日志來得好多了。。。(至少看得懂啊!!!😅)

而管理好日志,就是一項非常沉悶,但又重要的工作。logrotate 就是用來解決這一切煩惱的好工具。

Continue reading “[Linux] logrotate — 日志文件的自動分頁備份工具”