QNap不正常關機, 造成vm開機失敗的修復小心得

一直以來QNap 純粹用來當作儲存設備, 花俏功能我都直接關掉, 只開放iSCSI , NFS 與CIFS , 而且限定內部ip才能連線(Qlocker遠離我).
但是最近公司停電,開機後, 我發現有一個插槽壞了, 換硬碟也顯示無硬碟狀態, 有夠麻煩的, 手忙腳亂了一番, 不小心造成QNap不正常關機(不要笑我啊).

悲劇來了, windows 的主要網域主控站, 與Sharepoint Server直接GG 慘, 而Linux也有狀況例如這個網站也GG, 好險Linux自帶工具, 告訴我可以執行xfs修復, 至少可以開機成功, windows就不多說了, 直接拿備份重建, 但是一波好幾折, 辛酸阿.

先說 linux 的docker server中 mariadb server container也再起不能了, 哭,
於是我另開一個可啟動的 mariadb container , 把有問題的volume中的額外table放到乾淨的mysql目錄中, 想像這樣或許可以救起來其他資料庫, 一開始啟動成功, show database, show tables也看到, 真是高興, 但是要select tables時候, 出現錯誤訊息

mysql error unknown table engine

又哭… 找了好久終於找到可以在my.cnf中加上以下參數, 但是我的container沒有mapping到/etc中的my.cnf , 於是又搞了一次, 才可以進行修復.

innodb_force_recovery = 1 
or 
innodb_force_recovery = 4

終於完成了, 我的網站修復完成.

— added 2021/5/10 —-

後來發現以上innodb_force_recovery參數只能暫時使用, 需要趕緊使用mysqldump把資料備份下來,

mysqldump --user=root -h 127.0.0.1 --password --lock-tables --databases 資料庫名稱 > xxx.sqlmysqldump --user=root -h 127.0.0.1 --password  --databases 資料庫名稱 > xxx.sql

然後再重新跑一個全新 server 把相關資料倒回去, 才能真正高枕無憂

安裝wordpress權當公司內部訊息公告網站

以前安裝wordpress(包括目前這個網站)都只用陽春功能, 沒遇到什麼問題,也可以一直更新到最新版.

直到最近想要幫公司裝一個簡單的內部訊息公告網站, 需要安裝兩個插件, 但其中一個插件需要額外安裝php 7.x extension ,
安裝extension這倒是沒什麼問題, 問題是官方的wordpress居然安裝失敗, 要用很多方法才能解決, 實在有夠麻煩.

這個插件就是用來新訊息公告的時候, 可以自動發信給相關的人 , 請參考 mailpoet , 這個插件乾脆就自己弄一個wordpress, 直接將相關的插件都裝起來
雖然mailpoet對於安裝沒有過多的著墨, 其實就跟自己手動安裝一樣簡單, 交由wordrepss wizard就可以了

貼上自己簡單的安裝方式

1. 安裝mariadb container(name:mariadb)
   安裝完畢記得新增一個database名稱叫做wordpress    
   create database wordperss character set utf8mb4 collate utf8mb4_unicode_ci
2. 安裝mailpoet/wordpress
   docker volume create wp-content
   docker run --name mywordpress -v wp-content:/var/www/html/wp-content -p 8080:80 \\
   -d --restart always  mailpoet/wordpress:wp-5.4_php7.4_20200617.1
3. 停用mywordpress , mariadb
   docker stop mywordperss
4. 讓mywordpress與mariadb成為羈絆
   docker network connect myNetwork mariadb
   docker network connect myNetwork mywordpress
5. 啟用mywordpress, mariadb , 進入網頁的wizard , 就可以輸入mariadb的名字進行安裝了
   docker start mariadb
   docker start mywordpress
   

單一docker server,多個Container如何互相認識

安裝非官方的wordpress(mailpoet/wordpress) , 發現指定mysql的ip失敗(一樣是docker) , 原來是忘了將mysql與wordpress這兩個container 綁定相同網路, 這樣兩個container可以互相ping對方的名字, 也可以互相認識了

docker network connect myNetwork <container name>

myNetwork 可修改

mysql(mariadb) java 連線設定(connection string)

每次都會忘記, 因此寫下來

 
jdbc:mysql://localhost:3306/database?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8

有時候透過別人寫好的web設定界面, 會造成寫入xml錯誤 , 因此要注意所搭配系統是否使用xml當作設定檔.

例如&useUnicode=true ,寫到xml會出現  &amp;amp;useUnicode=true

請將多餘的amp;移除,只要留下 &amp;useUnicode=true 即可

mysql(mariadb)新增資料庫(UTF-8)與使用者權限

每次都會忘記, 而且之前一點都不在意把使用者與root權限分開,但資安還是要顧著.

MariaDB>CREATE DATABASE 資料庫名稱 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

新增使用者,密碼與權限

MariaDB> create database 資料庫名稱;
MariaDB> create user 使用者帳號@localhost identified by '使用者登入密碼';
MariaDB> grant all privileges on 資料庫名稱.* to 使用者帳號@localhost;
MariaDB> flush privileges;
MariaDB> quit

安裝owncloud-使用docker

owncloud 是個很方便的雲端檔案管理系統, 安裝簡便, 功能強大,最重要的是免費, 開放原始碼!

安裝的方式很多, 咖啡偶建議使用最夯的docker方式安裝, 方便以後升級, 備份與還原.

安裝前, 需要確保基本環境已經建置, 因此請參考本站docker建置基礎文章-“docker環境建立須知“,

再安裝owncloud方為適當

 10011_(Docker)如何安裝owncloud.txt

docker環境建立須知

本篇文章提供建立docker環境時, 所需要的步驟以及注意事項!

往後本站使用docker安裝之相關教學文件, 亦以本篇為基礎建設文章.

安裝docke所建議之母體作業系統為 CentOS 7.x , 以及 apache httpd 2.4.x 網站反向代理伺服器!

(1) 10002_(CentOS)如何安裝docker套件.txt

(2) 10007_(CentOS)如何取得LetsEncrypt加密證書.txt

(3) 10004_(CentOS)apache httpd代理內部伺服器(proxy).txt

(4) 10012_(Docker)如何安裝mariadb資料庫.txt

1 2