遠端開發 MT7688 上的 Node.js 專案

一、前言


我在 MT7688 Linkit Smart 主要都是開發 node.js 的東西,但是咧,我真的覺得老是用 scp 在 host 與 target 之間丟檔案真的超麻煩的~~  以前上課時,老師都用 WinScp 在那 copy 來 copy 去,雖然是視窗化了沒錯~~  我覺得好像也是有點....  麻煩阿!! 然後,我實在是很不會用 vim 在 target 上寫程式碼,我太笨啦,只會 esc, i, :wq (無限循環)~~ 哈哈哈!我知道 vim 很強,但我就是不會阿(完全很懶得學一下....)。總之,一言以蔽之,我是個沒有 sublime text 就無法做開發的人~ 塊陶阿~~
 
好啦~ 為了方便工作,我就想說,那把 target 上的工作目錄掛到 host 上好了~  其實一般 IDE (Eclipse) 大多有支援 (s)ftp 網路掛載工作目錄,但是我只是要用個(陽春的) sublime text 而已阿! 立馬想到,那來找個 plugin 好了,google 一下,馬上發現 Sublime SFTP 這個外掛。很好,其實我試了一下,發現我好像看不懂它的說明在寫什麼....  \__/  放棄~~~
 
於是,不管了,我打算用自己的方式做了啦!用 sshfs (ssh filesystem) 來把 MT7688 上的目錄掛過來 host 啦!! 將遠端目錄掛載到 host 上之後,看你想幹嘛就幹麻,這跟開不開發 node.js 的程式倒是沒有關係~ 你要寫 c、寫 python 都是可以的.... 或是怎樣搞,都是看你自己啦~ 因為遠端掛載工作目錄其實蠻常用到的,我就想說雞婆一下,跟大家分享,或許可以讓一些還不知道的人,可以寫code寫得舒服一點點~~~~  (vim???  殺了我吧~~~ 我是連 nano 都會用到有點發瘋的人啊~~~~)
 

二、步驟


1. Host 端,安裝 sshfs   (我的 host 是 Ubuntu 14.04 LTS x86_64)

    host:~$ sudo apt-get install sshfs

2. Host 端,開個目錄當 mountpoint

    host:~$ mkdir remote7688
    host:~$ ls 
remote7688/

3. Target 端,安裝 openssh-sftp-server

    target:~# opkg update
    target:~# opkg install openssh-sftp-server


4. Host 端,使用 sshfs 掛載遠端目錄

    host:~$ sshfs root@192.168.0.106:/ /home/simen/remote7688/

    以上指令會將整個遠端根目錄 / 掛到 host 的 ~/remote7688
     ls 一下,可以看到遠端根目錄下的內容都進來囉



    像我只需要把遠端某個工作目錄 (/root/app) 掛到  host,可以這樣做

    host:~$ sshfs root@192.168.0.106:/root/app /home/simen/remote7688/


5. 將工作目錄拉進 sublime text 吧!

試著修改一下檔案,然後在 target 上 cat 看看
檔案的修改立馬同步過去啦~


現在還有個問題,就是 sftp server 並不會在開機時啟動,所以當你重開機之後,每次都要重啟服務,這樣 host 才有辦法將遠端的目錄掛載過來哦!! 以下說明如何使 MT7688 每次開機自動啟動 sftp 服務。如果你覺得沒有需要,下一小節可以跳過不用看~


三、讓 MT7688 開機之後,自動啟動 sftp 服務

[2016/2/18 補充] 以下準備 sftpd 檔案的部分請參考另一篇「使用 MT7688 上 SysV 風格的開機啟動服務

OpenWrt 的 ssh 是由 dropbear 所提供,你可以把它換成 openssh-server,官網 WiKi 有說明要怎麼做。然後你就可以靠 sshd 來啟用 openssh-sftp-server。但是~ 我不打算這麼做啦!我只是要單純啟用  openssh-sftp-server 而已,所以接下來,單純在 init.d 增加一支啟動程序。 我們在 /etc/init.d 中加入啟用程式的指令稿,然後在 /etc/rc.d 加入規則檔 (檔名S開頭代表啟動,各檔名數字代表載入順序),ㄟ~我就不多說了,請大家自己參考 System V 的 init 規則吧~

    target:~# touch /etc/init.d/sftpd
    target:~# echo -e '#!/bin/sh /etc/rc.common\n\n./usr/libexec/sftp-server -d /' > /etc/init.d/sftpd
    target:~# chmod a+x /etc/init.d/sftpd
    target:~# ln -s /etc/init.d/sftpd /etc/rc.d/S99sftpd

重開機試試看吧! (我沒寫 Kill 規則檔, 加 -f force reboot)

    target:~# reboot -f

在 host 端將遠端目錄掛載過來 (記得先卸載再掛載)

    host:~$ sshfs root@192.168.0.106:/root/app /home/simen/remote7688/

四、結語

將遠端目錄掛載到 host 上之後,看你想幹嘛就幹麻,這跟開不開發 node.js 的程式倒是沒有關係~ 你要寫 c、寫 python 都是可以的.... 或是整個根目錄掛載回來,在裡面修修改改的也是可以的~ 還有,遠端掛載其實跟 MT7688 也沒什麼關係,科科~ 單純就是我自己正在 MT7688 上面寫 node.js 的 program,就直接下這樣的標題,感覺比較乾脆一點啦~
 
遠端掛載的方法不只一種,歡迎大家提供更簡便的方法給我~ 我要分享給大家!!!!
 
 
 
 

simen

An enthusiastic engineer with a passion for learning. After completing my academic journey, I worked as an engineer in Hsinchu Science Park. Later, I ventured into academia to teach at a university. However, I have now returned to the industry as an engineer, again.

Post a Comment (0)
Previous Post Next Post