2020年10月29日 星期四

記錄 - 將UU卡寫入小米手環 4 / 5 NFC(PN532+PL2303使用教學)

*** 請注意,本文只是為了記錄 PN532  使用方法*** 

工具

1. PN532 + PL2303
2.卡號小於 514 的UU卡
3. cuid 白卡

軟體

1. Mifareone tool (M1T)
2.WinHEX
3. NFC上位機  <== 不用上位機了

步驟

1. 接上 PN532(win 10 直接插上就好,不要用附上的驅動,會破解失敗)並運行 M1T
2. 按"檢測連接",確認PN532有正確連接



3. 放上UU卡,並按"掃描卡片",記錄卡片的UID


4. 到"高級操作模式" > "手動CLI"


5. 輸入以下(讀取時間約為 30 ~ 120 分鐘)

start mfcuk.exe -C -R 1:A -s 100 -S 80 -v 3 -o key.dump

-s -S 值 0 ~ 255 皆可,若上面的讀不到,再自行改變一下。

6. 會得到一個 key.dump,用 winHEX 打開會看到紅框處的12碼即為密碼


7. 得到密碼後用知一密碼破解, 破解完會生成 .dump 檔(檔名可存 xxx-crack.dump) <== 破解時間會比較久,約1.5~2小時左右。

8. 到"高級操作模式" > "HEX編輯器">"工具">"修改UID", 輸入剛剛掃描的UID,然後點"文件",另存為一個 xxx.mfd 文件.


9. 然後"高級操作模式">"CUID寫",把剛剛的 xxx.mfd 文件寫到 CUID 卡裡,如果沒寫滿64個區塊就再寫一次,必須顯示 64 / 64 才成功。




10. 小米手環開虛擬門卡,把剛寫入了 xxx.mfd 的 CUID 卡模擬到小米手環上。

11. 再把小米手環放到 PN532上,再"高級操作模式">"CUID寫",把 xxx-crack.dump 寫入小米手環。




12. 拿去超商,捷運或ubike 讀一下,有消費記錄就是成功了!

PS:若有移植到手環上,舊卡千萬不能再使用哦!!


若小米手環裡的資料要移到另一隻手環,就用"高級操作模式">"普通卡操作">"讀M1"把資料讀出來,再用

2020年4月26日 星期日

用 systemctl 永久設定 Systemd 管理的服務

systemctl status ServiceName

sudo systemctl stop ServiceName

sudo systemctl start ServiceName

sudo systemctl restart ServiceName

sudo systemctl reload ServiceName

sudo systemctl enable ServiceName

sudo systemctl disable ServiceName

systemctl is-enabled ServiceName

systemctl is-active ServiceName

systemctl show ServiceName

sudo systemctl mask ServiceName

sudo systemctl unmask ServiceName

2020年2月10日 星期一

在 Proxmox VE 上安裝 rclone 並掛載 google drive

1. 安裝 rclone
在 pve node
將 rclone copy 到 /usr/bin
chown root:root /usr/bin/rclone
chmod 755 /usr/bin/rclone
mkdir -p /usr/local/share/man/man1
把 rclone.1 copy 到 /usr/local/share/man/man1/
cp rclone.1 /usr/local/share/man/man1/
mandb
2. 執行 rclone config,設定 google drive 相關設定

掛載 rclone,有以下兩種方式
1. 開機自動掛載
新增 systemd 服務
mkdir /home/gd
nano /etc/systemd/system/rclone-gd.service

[Unit]
Description=rclone-gd
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/rclone mount gd:/ /home/gd --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000
ExecStop=/bin/fusermount -qzu /home/gd
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
mkdir /home/cam
nano /etc/systemd/system/rclone-cam.service

[Unit]
Description=rclone-cam
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/rclone mount cam:/ /home/cam --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000
ExecStop=/bin/fusermount -qzu /home/cam
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
變更權限
chmod 644 /etc/systemd/system/rclone-gd.service
chmod 644 /etc/systemd/system/rclone-cam.service
重新載入 systemd
systemctl daemon-reload
啟動 rclone 掛載
systemctl start rclone-gd
systemctl start rclone-cam
設定開機時啟動 rclone
systemctl enable rclone-gd
systemctl enable rclone-cam
2. 手動掛載
先安裝 screen
apt-get install screen
掛載的命令格式如下:
screen -S rclone-gd; #新建一個會話

rclone mount gd:/ /home/gd --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000

Ctrl+A+D #退出會話
screen -S rclone-cam #新建一個會話

rclone mount cam:/ /home/cam --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000

Ctrl+A+D #退出會話

screen -S rclone-media #新建一個會話

rclone mount media:/ /home/media --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000

Ctrl+A+D& #退出會話


停止掛載
一般情况下使用Ctrl+C便可停止掛載,如果停止失败,使用如下命令停止掛載

查詢有那些會話
screen -ls
screen -r rclone-gd #恢复會話

screen -r rclone-cam #恢复會話

fusermount -qzu /home/gd #停止掛載

fusermount -qzu /home/cam

PROXMOX VE 出現錯誤訊息 proxmox unable to open file '/etc/pve/firewall/201.fw.tmp.2099' - Permission denied (500)


今早停電,復電後主機出現錯誤
PVE1, PVE2 和 Qdevice 連線
proxmox unable to open file '/etc/pve/firewall/201.fw.tmp.2099' - Permission denied (500)
解決方式
在每台PVE 打
pvecm expected 1
然後都重開機, 若碰到無法連入的就打
pve firewall stop
完工, 查狀態
pvecm status
參考資料
https://forum.proxmox.com/threads/problem-permission-etc-pve-nodes.26999/
http://blog.pulipuli.info/2014/03/proxmox-ve-cluster-repair-proxmox-ve.html

2020年2月7日 星期五

剛灌好的 windows 10 出現惱人的 NVIDIA Control Panel is not found 解決辦法及移除方式

若顯示卡是 NVIDIA 的,剛灌好的 windows 10 在右下角會出現


重點是關也關不掉也無法移除,又醜又惱人。
以下是解決方式:
1. WIN + R 執行 services.msc

2. 找到 NVIDIA Display Container LS

3. 左鍵點兩下,開啟內容,啟用類型選"已停用",服務狀態選"停止"

4. 就會發現醜醜的 NVIDIA 提示不見了,打完收工。

2020年2月6日 星期四

Ubuntu DHCP Server

sudo apt install isc-dhcp-server
修改 DHCP 設定檔
nano /etc/dhcp/dhcpd.conf
default-lease-time 3600;
max-lease-time 28800;

subnet 192.168.1.0 netmask 255.255.255.0 {
 range 192.168.1.121 192.168.1.220;
 option subnet-mask 255.255.255.0;
 option routers          192.168.1.254;
}
重啟 DHCP SERVER
sudo systemctl restart isc-dhcp-server isc-dhcp-server6
檢查是否有啟動成功
sudo systemctl status isc-dhcp-server isc-dhcp-server6
sudo netstat -tulnp | grep dhcp

2020年2月1日 星期六

Proxmox VE two nodes + qdevice HA Cluster 雙節點叢集

在GUI 的資料中心介,有 pve1 , pve2 和 qdevice (ip : 192.168.1.30)
一般都是用 Raspberry Pi 做 qdevice,但因為剛好有台 windows 10 常開,所以我就用 windows 10 裡的 hyper-V 灌 Ubuntu 18.043 LTS Server 來當 qdevice

在  hyper-V 上安裝好 Ubuntu 後記得要為固定 IP 以及讓 SSH 允許 root 登入
nano /etc/ssh/sshd_config
修改以下內容
PermitRootLogin yes
再來安裝 corosync-qnetd
apt install -y corosync-qnetd
接著在 PVE1 和 PVE2 上安裝 corosync-qdevice
apt install -y corosync-qdevice
PVE1 及 PVE2 都裝好之後,找一台下指令
pvecm qdevice setup 192.168.1.30
執行後會發現跳出錯誤
...
..
.
INFO: start and enable corosync qdevice daemon on node 'pve1'...
Synchronizing state of corosync-qdevice.service with SysV service script with /l                                                                                                                                                             ib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable corosync-qdevice
update-rc.d: error: corosync-qdevice Default-Start contains no runlevels, aborti                                                                                                                                                             ng.
command 'ssh -o 'BatchMode=yes' -lroot 192.168.1.90 systemctl enable corosync-qd
evice' failed: exit code 1
查了許久,原來是bug!!
所以要到 PVE1 及 PVE2 修正,在 /etc/init.d/corosync-qdevice 裡找到 Default-Start 加入 2 3 4 5
### BEGIN INIT INFO
# Provides:  corosync-qdevice
# Required-Start: $remote_fs $syslog corosync
# Required-Stop: $remote_fs $syslog corosync
# Default-Start: 2 3 4 5
# Default-Stop:  0 1 6
# Short-Description: Corosync Qdevice daemon
# Description:  Starts and stops Corosync Qdevice daemon.
### END INIT INFO
然後分別在 PVE1 及 PVE2 上執行
update-rc.d -f corosync-qdevice remove
update-rc.d -f corosync-qdevice defaults
重新載入 corosync-qdevice,
載入完後, PVE1 及 PVE2 上執行 (注意!兩台 PVE HOST 都要執行)
systemctl enable corosync-qdevice.service
然後查詢狀態
pvecm status
看到有三台 vote,就設定完成
Cluster information
-------------------
Name:             LAB
Config Version:   3
Transport:        knet
Secure auth:      on

Quorum information
------------------
Date:             Sun Feb  2 01:38:55 2020
Quorum provider:  corosync_votequorum
Nodes:            2
Node ID:          0x00000001
Ring ID:          1.150
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   3
Highest expected: 3
Total votes:      3
Quorum:           2
Flags:            Quorate Qdevice

Membership information
----------------------
    Nodeid      Votes    Qdevice Name
0x00000001          1    A,V,NMW 192.168.1.90 (local)
0x00000002          1         NR 192.168.1.20
0x00000000          1            Qdevice

參考資料
Proxmox 6.1 Cluster Manager
Bug #1809682 "systemctl enable corosync-qdevice.service" fails

Proxmox VE 若不小心被防火牆擋在外面怎辦

到 command line
pve-firewall stop

2020年1月31日 星期五

Proxmox VE登入web GUI時,移除 “No Valid Subscription”的提示


Proxmox VE是個很不錯的開源虛擬化平台,每個人都可以免費地roxmox VE是個很不錯的開源虛擬化平台,每個人都可以免費地使用它,然而若沒有訂閱企業版,每次登錄 Web GUI 管理時都會出現一個“No Valid Subscription(無有效訂閱)”的提示:“You do not have a valid subscription for this server. Please visit  www.proxmox.com  to get a list of available options.”。要點“確定”或關閉它才能繼續訪問。

You do not have a valid subscription for this server. Please visit www.proxmox.com to get a list of available options.

移除方法很簡單,修改一個文件就可以取消掉這個提示。

目前在 Proxmox VE 5.1 以上都有效(包括 Proxmox VE 6.1.5 )

其中,5.1版的文件為“/usr/share/pve-manager/js/pvemanagerlib.js”,5.3以上的版本,文件換成了“ / usr / share / javascript / proxmox – widget – toolkit / proxmoxlib . js”。把其中的認購狀態檢查的判斷代碼修改一下即可,修改方法如下:

找到“if (data.status !== 'Active') {”,將其修改為“if (false) {”,建議在修改前應該備份好原本的文件。

然後存檔,再重啟 Proxmox VE 網頁服務
systemctl restart pveproxy
然後再登出 GUI 管理介面, CTRL+F5重新登入即可。

變更 mysql 資料庫數據的路徑

在 mysql 裡,查看當前的儲存路徑:
mysql> show variables like 'datadir';
停止 mysql 服務
service mysql stop
建立新的儲存路徑:
mkdir -p /data/mysql
複製 mysql 原來的資料
cp -rp /var/lib/mysql/* /data/mysql
chown -R mysql.mysql /data/mysql
chmod -R 700 /data/mysql
修改 mysql 配置文件
nano /etc/mysql/mysql.conf.d/mysqld.cnf
修改
datadir = /var/lib/mysql
為
datadir = /data/mysql
啟動 mysql 服務
service mysql start

ubuntu 19.10 建立 Sftp Server 設定

記錄如何在 Ubuntu Linux 上建立一個 SFTP Server,需滿足以下幾點條件:

使用者不可經由 SSH 登入
使用者可經由 SFTP 登入
使用者只可在指定目錄活動
使用者可上傳下載指定目錄內的檔案

環境
Ubuntu 19.10
以下操作皆默認 root 操作,如果你不是使用 root 操作,請在前面加上 sudo。

ubuntu 19.10本身就內建了 Sftp Server,所以只要做一些設定即可。
sftp 群組:sftp-users
sftp 使用者:sftp_user_XXX

新增 SFTP 群組
addgroup sftp-users
確認 group 有正確被建立
grep 'sftp-users' /etc/group

建立 SFTP 使用者
useradd -g sftp-users -s /sbin/nologin sftp_user_XXX
-g: 預設 group
-s: 預設 shell, nologin shell 一般用於系統帳號, 表示不可經由 ssh 登入
確認使用者有正確被建立
grep sftp_user_XXX /etc/passwd
如果使用者早已建立, 可直接更改使用者設定即可
usermod -g sftp-users -d /upload -s /sbin/nologin sftp_user_XXX
建立使用者的目錄
install -d -o sftp_user_XXX -g sftp-users /home/sftp_user_XXX/www
變更使用者的密碼
passwd sftp_user_XXX

SSH 設定
nano /etc/ssh/sshd_config

註解並新增
#Subsystem sftp /usr/lib/openssh/sftp-server 《==加#
Subsystem sftp internal-sftp

PasswordAuthentication yes
PermitRootLogin no
Match Group sftp-users
 ChrootDirectory /home/%u
 X11Forwarding no
 AllowTcpForwarding no
 PermitTTY no
 ForceCommand internal-sftp

重新啟動 sss 服務
systemctl restart ssh

PS:如有建立 web 目錄,記得要變更 user 目錄底下的權限
chown -R sftp_user_XXX:sftp-users www
chmod -R 755 www

2020年1月20日 星期一

Proxmox 啟動後,出現 LXC CT 啟動錯誤的解決方式

重開 proxmox 之後,出現以下訊息



用 systemctl status pve-container@102.service service 查
root@pve1:~# systemctl status pve-container@102.service
● pve-container@102.service - PVE LXC Container: 102
   Loaded: loaded (/lib/systemd/system/pve-container@.service; static; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mon 2020-01-20 17:00:51 CST; 1min 27s ago
     Docs: man:lxc-start
           man:lxc
           man:pct
  Process: 3100 ExecStart=/usr/bin/lxc-start -n 102 (code=exited, status=1/FAILURE)

Jan 20 17:00:51 pve1 systemd[1]: Starting PVE LXC Container: 102...
Jan 20 17:00:51 pve1 lxc-start[3100]: lxc-start: 102: lxccontainer.c: wait_on_daemonized_start: 865 No such file or directory - Failed to receive the container state
Jan 20 17:00:51 pve1 lxc-start[3100]: lxc-start: 102: tools/lxc_start.c: main: 329 The container failed to start
Jan 20 17:00:51 pve1 lxc-start[3100]: lxc-start: 102: tools/lxc_start.c: main: 332 To get more details, run the container in foreground mode
Jan 20 17:00:51 pve1 lxc-start[3100]: lxc-start: 102: tools/lxc_start.c: main: 335 Additional information can be obtained by setting the --logfile and --logpriority options
Jan 20 17:00:51 pve1 systemd[1]: pve-container@102.service: Control process exited, code=exited, status=1/FAILURE
Jan 20 17:00:51 pve1 systemd[1]: pve-container@102.service: Failed with result 'exit-code'.
Jan 20 17:00:51 pve1 systemd[1]: Failed to start PVE LXC Container: 102.
Dec 3 15:57:40 sword systemd[1]: Starting PVE LXC Container: 102...
Dec 3 15:57:40 sword lxc-start[15552]: lxc-start: 102: lxccontainer.c: wait_on_daemonized_start: 865 No such file or directory - Failed to receive the container state
Dec 3 15:57:40 sword lxc-start[15552]: lxc-start: 102: tools/lxc_start.c: main: 329 The container failed to start
Dec 3 15:57:40 sword lxc-start[15552]: lxc-start: 102: tools/lxc_start.c: main: 332 To get more details, run the container in foreground mode
Dec 3 15:57:40 sword lxc-start[15552]: lxc-start: 102: tools/lxc_start.c: main: 335 Additional information can be obtained by setting the --logfile and --logpriority options
Dec 3 15:57:40 sword systemd[1]: pve-container@107.service: Control process exited, code=exited, status=1/FAILURE
Dec 3 15:57:40 sword systemd[1]: pve-container@107.service: Failed with result 'exit-code'.
Dec 3 15:57:40 sword systemd[1]: Failed to start PVE LXC Container: 102.
Dec 3 15:57:40 sword pvedaemon[15550]: command 'systemctl start pve-container@102' failed: exit code 1
Dec 3 15:57:40 sword kernel: [ 3234.588046] lxc-start[15562]: segfault at 50 ip 00007f7e8a656f8b sp 00007ffe43ae6f00 error 4 in liblxc.so.1.6.0[7f7e8a5fd000+8a000]
Dec 3 15:57:40 sword kernel: [ 3234.588073] Code: 9b c0 ff ff 4d 85 ff 0f 85 82 02 00 00 66 90 48 8b 73 50 48 8b bb f8 00 00 00 e8 8>0 78 fa ff 4c 8b 74 24 10 48 89 de 4c 89 f7 <41> ff 56 50 4c 89 f7 48 89 de 41 ff 56 58 48 8b 83 f8 00 00 00 8b
Dec 3 15:57:40 sword pvedaemon[1585]:  end task UPID:sword:00003CBE:0004EF8D:5DE6DA54:vzstart:107:kronvold@pam: comman>d 'systemctl start pve-container@107' failed: exit code 1

開機後 root zfs 正常啟動 但 ssd 的 zfs 沒有 mount 手動 zfs mount -a 就 okay

原因是
zpool.cache 髒了,zpool table 沒有建立。

解決方法
zpool set cachefile=/etc/zfs/zpool.cache <pool name>
例如:
zpool set cachefile=/etc/zfs/zpool.cache ssdpool1

2020年1月15日 星期三

KODI 在各種作業系統 設定檔存放位置

Android: /Android/data/org.xbmc.kodi/files/.kodi/

Linux: ~/.kodi/

iOS: /private/var/mobile/Library/Preferences/Kodi/

Mac: /Users/您的用戶名/Library/Application Support/Kodi/

LibreELEC/OpenELEC: /storage/.kodi/

Windows KODI官網下載的.exe: User\您的用戶名\AppData\Roaming\kodi\

Windows 8~10 App商店安裝的KODI: User\您的用戶名\AppData\Local\Packages\XBMCFoundation.Kodi_4n2hpmxwrvr6p\LocalCache\Roaming\Kodi\

2020年1月14日 星期二

Proxmox VE 的 LXC Bind Mounts

Proxmox VE filesystem的模式是透過 lxc 的 bind mount 來直接管理 filesystem 的 acl ... 更快速更有效能 (因為完全沒有 TCP IP layer)

Bind mounts 允許從 Proxmox VE host 的 container 裡 可以直接存取 Host實體主機的目錄(directory),或 storage volume.有多種不同的用途:

    LXC guest 可以存取 Host 的家目錄
    LXC guest 可以存取 USB 裝置目錄
    LXC guest 可以存取 NFS 的目錄

要注意的是,在 LXC 上要連接的分享目錄必需是在 Host 上已經掛載連接的才可以. 為了安全起見, PVE 不允許 LXC 直接掛載其它主機上的 NFS .

假設 編號為 206 的 LXC 容器   要存取 host 實體機裡的目錄:

    /target 是虛擬機中的目錄
    /mnt/pve/freenas 是已經掛載的 NFS 目錄.

現在需要把下列的參數加到   虛擬機 /etc/pve/lxc/206.conf 的設定檔裡:
mp0: /target/test,mp=/target
mp1: /mnt/pve/freenas,mp=/mnt/pve/freenas

mp -> LXC 虛擬機上要掛載的目錄 (不用手動建立,掛載後會自動建立. 若事先建立,系統會將原來的目錄遮蔽.)

自己實作記錄
nano /etc/pve/lxc/206.conf
arch: amd64
cores: 4
hostname: media21
memory: 1024
net0: name=eth0,bridge=vmbr0,firewall=1,gw=192.168.1.254,hwaddr=9E:24:37:4C:7A:$
net1: name=eth1,bridge=vmbr1,firewall=1,hwaddr=6A:8A:72:9C:6A:3F,ip=192.168.2.2$
ostype: ubuntu
parent: install_rclone
rootfs: ssdpool1:subvol-206-disk-0,size=8G
swap: 256
unprivileged: 1
# 要掛載的東東
mp0: /home/gd,mp=/home/gd
mp1: /home/media,mp=/home/media
再將 LXC ( container ) 虛擬機重新開機,檢查是否有正確掛載

Bind mounts and backup

Note that bind mounts are not going to be included when you backup the container by default. You need to set the backup flag to include them.
mp0: /target/test,mp=/target,backup=1

2020年1月7日 星期二

mysql 8 的 sql mode 查詢及設置

MYSQL 升級後, 出現了 Field 'XXX' doesn't have a default value。 是因為新版的 mysql 開啟了嚴格模式(STRICT_TRANS_TABLES),以下指令可以查詢並修改相關內容。

查詢 sql_mode
mysql> select @@GLOBAL.sql_mode;
+-------------------------------------------------------------------------------
| @@GLOBAL.sql_mode
+-------------------------------------------------------------------------------
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_
+-------------------------------------------------------------------------------
1 row in set (0.00 sec)
mysql> select @@SESSION.sql_mode;
+-----------------------------------------------------------------------------------------------------------------------+
| @@SESSION.sql_mode                                                                                                    |
+-----------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

設置 sql_mode
mysql> set GLOBAL sql_mode='';
Query OK, 0 rows affected (0.00 sec)
mysql> set SESSION sql_mode='';
Query OK, 0 rows affected (0.00 sec)
在 ubuntu 的 mysql 8 , 可直接修改 mysql 設定檔
nano /etc/mysql/mysql.conf.d/mysqld.cnf
最後一行加入
sql_mode = '' 
即可

sql_mode常用值: 

ONLY_FULL_GROUP_BY:對於GROUP BY聚合操作,如果在SELECT中的列,沒有在GROUP BY中出現,那麼這個SQL是不合法的,因為列不在GROUP BY從句中。

NO_AUTO_VALUE_ON_ZERO:該值影響自增長列的插入。插入設置下,插入0或NULL代表生成下一個自增長值。如果用戶希望插入的數值為0,而該列又是自增長的,那麼這個選項就有用了。

STRICT_TRANS_TABLES:在該模式下,如果一個值不能插入到一個事務表中,則中斷當前的操作,對非事務表不做限制

NO_ZERO_IN_DATE:在嚴格模式下,排除日期和月份為零

NO_ZERO_DATE:設置該值,mysql數據庫重複插入零日期,插入零日期會引發錯誤而不是警告。

ERROR_FOR_DIVISION_BY_ZERO:在INSERT或UPDATE過程中,如果數據被零除,則產生錯誤而不警告。如果未命名該模式,那麼數據被零除時MySQL返回NULL

NO_AUTO_CREATE_USER:禁止GRANT創建密碼為空的用戶

NO_ENGINE_SUBSTITUTION:如果需要的存儲引擎被替換或未編譯,則引發錯誤。不設置此值時,用替換的存儲引擎替代,並拋出一個異常

PIPES_AS_CONCAT:將“ ||”視為串行的連接操作符而非或運算符,這和Oracle數據庫是一樣的,也和串聯的拼接函數Concat相類似

ANSI_QUOTES:啟用ANSI_QUOTES後,不能用雙引號來引用字符串,因為它被解釋為識別符

2020年1月3日 星期五

Nginx 錯誤: 413 Request entity too large 的解決方式

Nginx 413 Request Entity Too Large 出現 Error 413 的原因是訪客瀏覽網頁時, 傳送過多的 HTTP 請求, 一般在上傳檔案時出現, 解決方法是修改 Nginx 的 上傳限制, 這個可以透過 Nginx 的 client_max_body_size 設定。 client_max_body_size 是用作設定訪客最多可以傳送多少資料, 如果訪客傳送到 Nginx 的資料超過這個限制, 便會出現 413 Request Entity Too Large 錯誤, 而這個參數的預設值是 1MB。要修改首先開啟 Nginx 的設定檔 nginx.conf:
nano /etc/nginx/nginx.conf
或單獨設定某個 site
nano /etc/nginx/sites-available/expamle.com
在 http, server 或 location 其中一個 block 加入 client_max_body_size 設定
client_max_body_size 100M;
fastcgi_read_timeout 600;
如果出現問題的地方, 是 PHP 上傳檔案的部份, 需要連同 PHP 的上載限制一同修改, 開啟 php.ini 檔案:
nano /etc/php.ini
找到以下參數並修改
upload_max_filesize = 100M;
post_max_size = 100M;
max_execution_time = 600;
max_input_time = 600;
memory_limit = 128M;
重新載入 nginx 以及 php
systemctl restart nginx
systemctl restart php7.3-fpm

修改phpmyadmin 默認超時,登錄超時(1440 秒未操作),請重新登錄

修改 phpmyadmin 設定檔 在 phpmyadmin的根目錄下有 config.inc.php 這個檔案,最上面加入一行,設定時間(秒數)即可。
$cfg['LoginCookieValidity'] = 86400;

2020年1月2日 星期四

WINDOWS 10 開啟網路芳鄰功能

WINDOWS 10 更新版後,會關閉 SMBv1,以下為開啟方法:

先使用管理者權限執行 CMD 輸入下方指令
SC.EXE config lanmanworkstation depend=bowser/mrxsmb10/nsi
若要關閉 SMBv2 (可以不用關)
SC.EXE config mrxsmb20 start=disabled
接下來,windows 系統管理工具\服務 開啟後\
DNS Client 確定開啟
Function Discovery Provider Host 請啟動並由手動改成自動
Function Discovery Resource Publication 請啟動並由手動改成自動
SSDP Discovery 請啟動並由手動改成自動
UPnP Device Host 請啟動並由手動改成自動
搜尋windows 找 "windows 功能" 點進 "開啟或關閉Windows 功能"
展開SMB 1.0/CIFS 檔案共用支援
勾選"SMB 1.0/CIFS 用戶端"
重開機後,網路芳鄰裡的裝置就會再次出現了!

nginx 建立 Virtual Host

在 /etc/nginx/sites-available 建立一個檔案
mkdir nginx_example.com
開啟剛建立的設定檔
nano nginx_example.com
編輯並修改設定檔的內容
# configuration - nginx_example.com
#
server {
 listen 80;
 listen [::]:80;
 
 root /var/www/nginx_example.com;

 # Add index.php to the list if you are using PHP
 index index.php index.html index.htm;

 server_name example.com;

 location / {
  try_files $uri $uri/ =404;
 }

 location ~ \.php$ {
  include snippets/fastcgi-php.conf;
  fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
 }

 location ~ /\.ht {
  deny all;
 }
}
存檔後退出,建立一個軟連接
ln -s /etc/nginx/sites-available/nginx_example.com /etc/nginx/sites-enabled/nginx_example.com
重新載入 nginx
systemctl reload nginx
完成!!

2020年1月1日 星期三

Proxmox CT 出現 TASK ERROR: CT is locked (snapshot-delete) 的解決方式

可以在 PVE 主機端透過以下語法解開 lock 狀態: Exp. CT id=101
pct unlock 101
完成後 CT 101 便可正常動作

如果 unlock 之後, 還是因為 snapshot 持續造成異常 lock 且 snapshot-delete 也無法刪除
可以手動修改 /etc/pve/qemu-server/ or /etc/pve/lxc 內的 <vm_id>.conf 內, 移除 [snapshot] 段落
然後需要關閉 CT (或vm) , 在透過 pve 啟動 CT (或vm) 就可解決這問題