想說是不是自己發燒還是怎樣,覺得辦公室超級冷。
今天順手拿了一個溫度計放在桌上,沒想到才吃完早餐就看到不可思議的數字:
不適說好節約用電嗎?我乾脆冬眠好了 …. _Drz
軟體開發、伺服器和生活瑣事
第一個要求 Laravel 要使用 HTTP or HTTPS (以下簡稱 protocol … 因為字太多了 .._Drz) 的方法,其實就是在「.env」做設定,例如:
APP_URL=http://zeroplex.tw
再來網路上應該會找到,要開發者在 AppServiceProvider 中加入設定:
URL::forceScheme('https');
這邊的 URL facade,可以從 config/app.php 中追蹤到,是 IlluminateRoutingUrlGenerator::class 的 alias,設定了 forceSheme() 以後,未來透過 UrlGenerator 建立的 link 都會是設定好的 protocol。
BUT …. 就是這個 BUT,若是遇到另一個其他的 method 來產生 URL (例如 IlluminateRoutingRedirector::route() …),這樣就可能吃到開發者設定的 protocol ,則由 Laravel 會自動抓進來的 request 來判斷該用什麼 protocol,若 application 剛好是靠 Nginx 在 handle HTTP SSL 的話,request 到 Laravel 這端時 HTTPS 就已經轉成 HTTP,導致 Laravel 以為 application 沒有上 HTTPS。
若要讓 reverse proxy 後面的 Laravel application 都固定用 HTTPS 的話,可以再到 app/Http/Middleware/TrustedProxy.php 去修改設定,讓 Laravel 識別 proxy 做出對應的動作 (給正確的 protocol)。
應該不少人有經驗,在使用 grep 時,要搜尋的關鍵字會用顏色 highlight 方便閱讀,例如:
$ ls -lh | grep php
-rw-rw-r-- 1 zero zero 178 Aug 22 19:15 autoload.php
drwxrwxr-x 3 zero zero 4.0K Aug 22 19:01 cakephp
drwxrwxr-x 5 zero zero 4.0K Aug 22 19:01 phpdocumentor
drwxrwxr-x 3 zero zero 4.0K Aug 22 19:01 phpoffice
drwxrwxr-x 3 zero zero 4.0K Aug 22 19:01 phpoption
drwxrwxr-x 3 zero zero 4.0K Aug 22 19:01 phpseclib
drwxrwxr-x 3 zero zero 4.0K Aug 22 19:01 phpspec
drwxrwxr-x 8 zero zero 4.0K Aug 22 19:01 phpunit
不過如果因為列表很長,在把搜尋結果 pipe 給 less 以後,顏色就消失了。
這其實是 grep 這邊會判斷 output 到哪一種型態的 I/O,像是後面接的是 bash pipe,grep 就會自動移除 ANSI color 的 syntax,畢竟不知道 pipe 資料給誰,如果後者不支援 ANSI color 就會變成亂碼。
如果很確定 pipe 後面的指令、工具支援 ANSI color 的指令,就可以下參數要求 grep 輸出顏色。例如:
$ ls -lh | grep php --color=always | less
-rw-rw-r-- 1 zero zero 178 Aug 22 19:15 autoload.php
drwxrwxr-x 3 zero zero 4.0K Aug 22 19:01 cakephp
drwxrwxr-x 5 zero zero 4.0K Aug 22 19:01 phpdocumentor
drwxrwxr-x 3 zero zero 4.0K Aug 22 19:01 phpoffice
drwxrwxr-x 3 zero zero 4.0K Aug 22 19:01 phpoption
drwxrwxr-x 3 zero zero 4.0K Aug 22 19:01 phpseclib
drwxrwxr-x 3 zero zero 4.0K Aug 22 19:01 phpspec
drwxrwxr-x 8 zero zero 4.0K Aug 22 19:01 phpunit
登入 Ubuntu 時,常會看到最底下會有一行字,提醒你主機是否需要重新開機:
Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-142-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
0 packages can be updated.
0 updates are security updates.
*** System restart required ***
追了一陣子,才知道判斷的方法非常簡單,只要到 /var/run 目錄下檢查是否有「reboot-required」的檔案即可。
例如:
$ ls /var/run
acpid.pid crond.reboot initctl log motd.dynamic resolvconf snapd.socket udev
acpid.socket dbus initramfs lvm mount rsyslogd.pid sshd unattended-upgrades.lock
agetty.reload dhclient.enp0s3.pid init.upgraded lvmetad.pid mysqld screen sshd.pid user
atd.pid dmeventd-client irqbalance.pid lxcfs network sendsigs.omit.d sudo utmp
blkid dmeventd-server iscsid.pid lxcfs.pid reboot-required shm systemd uuidd
crond.pid grub lock mdadm reboot-required.pkgs snapd-snap.socket tmpfiles.d xtables.lock
就這樣,沒了。
今天很難得打開 phpMyAdmin 來看一下有什麼改變,但發現一直無法登入,顯示錯誤訊息「」。
查了一下才發現 MySQL 8 預設的密碼有多種格式,預設的格式 PHP 還不支援,所以會登入失敗 (但用 console 會成功)。
解決方法是暫時改為舊版本的密碼儲存方式:
alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your-password';
flush privileges;
然後在設定檔裡面多新增一條規則,把預設的密碼儲存方式改回舊版的:
[mysqld]
default-authentication-plugin = mysql_native_password