跳到主要內容

發表文章

修改 MariaDB 預設儲存目錄.md

修改 MariaDB 預設儲存目錄三年前寫了關於修改 MySQL 預設存放資料夾的記錄「在 uBuntu 中移動 MySQL 的資料存放位置」,經過這幾年的改變和 Oracle 買下昇陽後 MySQL 的轉變,目前已經習慣使用 MariaDB(原 MySQL 創辦人)作為 LAMP 中的 M。再記錄 MariaDB 中預設儲存目錄如何修改。OS: UBuntu 16.04.3 Server x64
DB: MariaDB 10.2.12方法上和先前 MySQL 設定大同小異停止 MariaDB 服務$ sudo systemctl stop mariadb 建立新的存放目錄位置(如:/db/mariadb)$ sudo madir /db/mariadb $ sudochown mysql.mysql /db/mariadb 複製目前目錄下的內容至新的存放目錄位置$ sudocp -rp /var/lib/mysql/* /db/mariadb 修改 MariaDB 設定檔,Ubuntu 位置為 /etc/mysql/my.cnf$ sudo vim /etc/mysql/my.cnf 將 [mysqld] 下的 datadir 修改為新的位置[mysqld] ... datadir = /db/mariadb ... 重新啟動 MariaDB$ sudo systemctl start mariadb
最近的文章

如何更改 Docker image 預設安裝資料夾

如何更改 Docker image 預設安裝資料夾一開始規劃 ubuntu partition 的時候,/var 雖然有獨立成一個新的 partition,但因為有特別安排了一個 partition 專門給 MariaDB(MySQL)使用,所以 /var 也就沒有給的特別大。這一陣子開始使用 docker 作為開發環境,docker 的 image 預設是儲存於 /var/lib/docker 路徑下,會佔用 /var 很多空間,希望能將預設的路徑移到別的 partition。在不同版本的 Linux 下設定方式會有些不同,在 Stackoverflow 有許多討論,另外在 Travis 這篇文章 中也有直接提供一個 shell script 可以修改 ubuntu 16.04 下的預設路徑。在 Docker doc 中發現官方的設定,相對簡單,在自己嘗試後可以適用,分享我在 ubuntu 16.04 下的設定方式,設定後不用重新開機即可套用。OS:Ubuntu 16.04.3 LTS (Xenial Xerus) Docker Version:17.09.0-ceDocker daemon 設定檔Docker 官方建議的方式為在 daemon.json 檔案中設定 daemon flags,daemon.json 在 Linux 中預設位置在 /etc/docker/。在 ubuntu 16.04 中預設這個檔案不存在,可以手動新增這個檔案。$ sudo vim /etc/docker/daemon.json在檔案中加上下面的內容,graph 為執行與存放的路徑位置:{ "graph": "/mnt/docker-data", "storage-driver": "overlay"}更新修改內容與重新啟動 Docker更新套用修改內容:$ sudo systemctl daemon-reload重新啟動 Docker:$ sudo systemctl restart docker重新啟動後,在 graph 指定的資料夾下(/mnt/docker-data)就會出現相關的資料夾。資料參考連結:
1.https://stackoverflow.com/question…

SSH tunnel 方式連結限制區域的伺服器

SSH tunnel 方式連結限制區域的伺服器自從進了前公司,好久沒有時間好好的更新部落格內容了。近期離開待了將近兩年的公司,和好朋友一起創立了新的新創公司,一起在農業上用技術來幫助返鄉的青小農,希望讓用更有溫度的數據來降低青農們的門檻。新的開始新的期待,希望自己能繼續保持赤子熱忱,把研究過的方法記錄下來分享。在這個資安即國安的時代(嗯…那是政府的口號),大部分的伺服器都會有許多的安全設定,無論是更新的規則或是防火牆的限制等等。會限制在某個網段甚至是某個 IP 才能進行連線某些服務,對於常常喜歡加入文青到咖啡廳 Out coding 的宅宅,還是要想辦法鑽回去連線伺服器。如果在限制區域中有一臺能對外開放連線的 SSH 機器,我們便能夠使用 SSH Tunnel 的方式橋接回去,透過通道連結到目標伺服器。說穿了其實這臺對外的機器就是跳板,我們可以利用這個跳板以類似 Port forwarding 的方式,將遠端伺服器的 IP 與 Port 對應至本機的一組位址與 Port。Linux 下的連接方式大部分的 Unix-Like 系統都有內建 SSH 的 Client 指令,我們只需要在 terminal 下指令就可以達到目的。指令如下:$ ssh -N -f -LLOCAL_PORT:DEST_HOST:DEST_HOST_PORTSSH_USER@SSH_SERVER_IPSSH 參數說明
-N: 連接後不執行任何的遠端指令
-f: 連線後在背景執行
-L port:host:hostport: 在 Client 與 Server 建立一組 secure tunnelingLOCAL_PORT:本機連接埠
DEST_HOST:目標連線伺服器位址
DEST_HOST_PORT:目標連線伺服器埠號
SSH_USER@SSH_SERVER_IP:做爲跳板的機器連線Example:$ ssh-N-f-L 33890:192.168.1.100:5022username@168.95.1.1上述的例子,會透過 168.95.1.1 這臺跳板機器,將限制區域內 192.168.1.100,Port
為 5022 建立通道至本機的 33890 Port。可以透過 netstat 指令來觀察是否有建立成功。$ netstat -ntulp | grep 33890 (Notall …

使用者只能 SFTP 登入自己的家目錄

使用者只能 SFTP 登入自己的家目錄老師的電腦動畫課堂的期末作品,是開放讓學生透過 FTP 上傳自己的作品及網頁至實驗室的伺服器,由於 FTP 是明碼的封包傳輸於最近升級系統後,便考慮改用 SFTP(SSH File Transfer Protocol)來提供上傳的服務。提供 SFTP 上傳的同時,希望使用者和以前一樣只能使用 SFTP 無法使用 SSH 登入伺服器。SFTP 為 SSH 的檔案傳輸服務,預設建立帳號的時候使用者同時可以使用這兩種服務。透過 SFTP only + Chroot 設定我們能限制使用者僅能 SFTP 並且無法離開自己的家目錄去到處閒晃。安裝 OpenSSH
如果安裝的是 Ubuntu Server 應該在安裝過程會安裝 openssh-server 套件,沒有的話可以利用下面的指令安裝。$ sudo apt-get install openssh-server新增一個給 SFTP 使用的群組 sftpaccess$ sudo groupadd sftpaccess 修改 OpenSSH 設定檔
編輯 /etc/ssh/sshd_config 設定檔,在約 77 行的地方找到 Subsystem sftp /usr/lib/openssh/sftp-server 註解此行並修改為 Subsystem sftp internal-sftp。$ sudo vim /etc/ssh/sshd_config #Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp在檔案的尾端加上下面的片段Match group sftpaccess ChrootDirectory /home/%u X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp建立新的使用者並加入 sftpaccess 群組
在設定檔中,我們設置了 sftpaccess 這個群組套用要做 ChrootDirectory 的設定,所以我們將要限制的使用者,加入這個群組中。$ sudo useradd -G sftpaccess -m <<username>>…

雙系統升級 Windows 10 後造成 ubuntu 開機進入 grub rescue

雙系統升級 Windows 10 後造成 ubuntu 開機進入 grub rescue7/29 是免費升級 Windows 10 的最後期限,雖然現在幾乎都使用 ubuntu 做為平時工作或一般使用的環境,鮮少使用 Windows 了,但是現在使用雙系統的方式,仍保有原本購買筆電附送的 Windows 8.1 。微軟這免費的升級的活動還是很吸引人,經過將近一年時間的改善,現在的 Windows 10 好像也沒有什麼災情,決定在這個截止日前升級。升級完 Windows 10 重新開機後,系統就直接進入 grub rescue 模式,估計是原來磁區的位置號碼改變所致。只要找回之前開機的磁區修改正確就好了。查詢原本的開機磁區以 ls 指令查詢磁區情形grub rescue> ls (hd0,gpt1) (hd0,gpt2) (hd0,gpt3) (hd0,gpt4) (hd0,gpt5) (hd0,gpt6)逐步以 ls 看能不能查詢目錄情形,找出開機磁區grub rescue> ls (hd0,gpt1)/ grub rescue> ls (hd0,gpt1)/boot grub rescue> ls (hd0,gpt2)/ grub rescue> ls (hd0,gpt2)/boot ...以此類推。記錄下查詢到的磁區位置(我的是(hd0,gpt6)),後面會使用上。離開 rescue 進入 normal 模式在 rescue 提示符號(grub rescue>)輸入 set 查詢現在的 prefix 和 root 設定值。grub rescue> set prefix=(hd0,gpt5)/boot/grub root=hd0,gpt5使用 set 指令將 prefix 和 root 更換成正確的磁區號碼,我的是將 (hd0,gpt5) 更改為 (hd0,gpt6)。grub rescue> set prefix=(hd0,gpt6)/boot/grub grub rescue> set root=(hd0,gpt6)再次檢查 prefix 和 rootgrub rescue> set prefix=(hd0,gpt6)/boot/grub root=hd0,gpt6切換至 normal 模式g…

StackEdit 自定 CSS 匯出 HTML Template

StackEdit 自定 CSS 匯出 HTML TemplateStackEdit 是一個所見即所得的線上 Markdown 編輯器,在先前的文章已有許多的介紹。身為程式設計在寫筆記的時候更是需要像這樣的工具,讓我們更能聚焦在內容上並且能運用 highlight.js 來標註程式碼。檔案分享的方法Google 雲端硬碟、Dropbox我們更可以將筆記透過 StackEdit 直接發佈至 Google Blogger 上,或是儲存在自己的 Google 雲端硬碟、Dropbox 等等的位置。Gist、StackEdit Viewer如果需要將資料分享給其他沒有安裝 Markdown Viewer 的人,除了使用上述的方法,我們也可以將檔案發佈至 Gist ,或是將我們的 Markdown 檔案放至網路,透過 StackEdit 的 Viewer 將網址引入直接使用瀏覽器觀看。Ex:Here 。https://stackedit.io/viewer#!url=[放置 Markdown 檔案的 URL 位址]PDFStackEdit 的 PDF 功能是需要透過雲端的轉換(透過 Pondoc + LaTex 實踐),對於這個部分的功能是贊助者項目,如果覺得 StackEdit 好用,很建議大家贊助讓他們可以更長久的經營。另外一個方式,是利用 StackEdit Viewer + Chrome Browser 來實踐。開啓 Chrome Browser開啓 StackEdit Viewer:Menu –> StackEdit Viewer在 Viewer 模式下開啓列印選擇 「Save as PDF」HTML另外一種跨平臺支援的方式是使用 HTML,只要是有瀏覽器都可以觀看,而且透過 CSS 可以改變成我們自己想要變化的風格。也是今天主要想和大家分享的方法。使用自定的 CSS 匯出 HTML 檔案StackEdit 匯出 HTML 的方式所匯出的檔案是很陽春白白靜靜的檔案,無論字型還是區塊安排都會有一點點的悲劇。還好,它還提供了一個以自定 Template 來匯出 HTML 的方式,讓我們有機會透過自定的 CSS 檔來完整個 HTML 檔的佈局。自定的方式需要準備兩個主要的內容,HTML TemplateMarkdown CSS。HTML Template我的…

uBuntu /boot 空間 100% 滿載問題

uBuntu /boot 空間 100% 滿載問題在先前的文章「uBuntu 更新時 /boot 空間不足」中,有針對如果 boot 空間不足的時候該如何以 apt-get purge 的方式移除舊的 kernel-package。現在可以使用 apt-get autoremove old-kernel-package 的方式移除,如果不指定 kernel-package 的版本,則會移除現在所有的舊版本。sudo apt-get autoremove linux-image-3.13.0-51-generic linux-image-3.13.0-51-generic這個方式也會一併的移除相依套件,相當的安全又乾淨(愈來愈無腦操作了 =,.=)。先前 purge 方式是在 /boot 還有空間的時候移除舊版,最近碰上的問題則是 /boot 空間已經 100% 滿載,新的 kernel 又只有裝一半(相依套件未完成安裝),導致任何的 apt-get 方式都無法使用,系統提示要以 apt-get -f install 方式強制解決新 kernel 的相依問題,而 /boot 又沒有任何空間,進入 Deadlock 狀況…對於這種狀況的解法,我們先清理出一些 /boot 的空間# 切換至 /boot 目錄下 $ cd /boot # 確認目前運行的 kernel 版本 $ uname -r # 備份舊的 kernel 版本 $ sudo tar -cvf ~/boot.tar *3.13.0-36-generic *3.13.0-37-generic # 刪除已經備份的內容 $ sudo rm -f *3.13.0-36-generic *3.13.0-37-genericNote
完成後面的相依性安裝需要一些空間,請試需要移出足夠的空間。解決套件相依性問題 $ sudo apt-get -f install使用 autoremove 方法清除舊版本 $ sudo apt-get autoremove重新開機就會套用新的 kernel 版本。參考連結:My /boot partition hit 100% and now I can’t upgrade. Can’t remove old kernels to make room