更改phpMyAdmin在Apache託管的預設port

Linux、Mac應用程式

有時為了安全起見,我們希望將phpMyAdmin這種存取資料庫的窗口不要使用網頁伺服器常用的port 80

這樣有個好處,就是能在server前面的防火牆建立filter rule讓該port只有特定ip能存取

 

為了達成目的,我們修改ports.conf讓Apache除了監聽port 80,也監聽準備拿來放phpMyAdmin的port 81

用自己熟悉的編輯器打開/etc/apache2/ports.conf,在Listen 80下面再加一行

Listen 81

 

存檔,切換目錄到/etc/apache2/sites-available/下新增phpmyadmin.conf

把連到port 81時要對應到哪個資料夾的規則寫在裡面

<VirtualHost *:81>
    DocumentRoot /usr/share/phpmyadmin/
</VirtualHost>

建立以太坊私有鏈(三) 執行投票合約

區塊鏈

上一篇我們已經將合約部署至區塊鏈上了,在這篇執行合約前

我想要先講一下如果往後把terminal關掉了,要怎麼把合約的實例(instance)從區塊鏈上設回變數

 

取回部署在區塊鏈上的合約實例

如果你是接續上一篇做到這裡的,也就是在geth中輸入vote.address有反應的,可以跳過這部份

 
在取回合約實例之前,我們必須要有ABI及合約地址這兩樣才能把合約實例找回來

ABI類似合約的描述檔,記錄這個合約有哪些function,function有哪些input、回傳、範圍...等

建立以太坊私有鏈(二) 編寫投票合約

區塊鏈

經過上一篇建立以太坊私有鏈(一) 節點部署,目前已經建立創世區塊並且成功讓兩個節點相識了

(在terminal鍵入net.peerCount應該會顯示1,如果還是0的檢查看看是不是前面漏了什麼步驟)

接下來要讓兩個節點開始挖礦,一起維護這條私有鏈

 

解鎖帳戶

挖礦之前先調用personal.unlockAccount()解鎖帳戶

參數的eth.coinbase會refer到剛剛創的帳戶

terminal1 $> personal.unlockAccount(eth.coinbase)
terminal2 $> personal.unlockAccount(eth.coinbase)

建立以太坊私有鏈(一) 節點部署

區塊鏈

本篇會需要一些區塊鏈的background knowledge

起碼要知道什麼是

  • 區塊鏈
  • 比特幣
  • 以太坊
  • 比特幣與以太坊的差別
  • 以太坊的智能合約

在操作上比較能catch到每一步的意義

 

前置工作

我們等等會使用到gethpuppeth這兩個工具,介紹一下它們的用途

gethGo語言的產物,能讓電腦在terminal下運行以太坊節點,geth是由Go-Ethereum縮寫來的

puppeth能幫助我們快速寫好私有鏈的創世區塊配置(運行配置)的工具

如果不用puppeth也是可以,但就是要自己寫JSON

網路上很多範例的JSON檔都out of date,在初始化時就一直報錯,光debug就澆滅了學下去的熱情

所以還是推薦用puppeth,反正自geth1.6版本後,安裝時就已經標配puppeth

 

在有NAT的網路中如何實現P2P通訊(UDP打洞)

網路概論

網路上大多數的服務都是主從式架構

顧名思義就是會有台server一直listen著某個port

隨時準備好有client連進該ip該port來request他所要資源

 

可是萬一我今天想要的資源(e.g. 今天的課堂筆記)並不是在一台隨時待命的server上

而是我朋友的電腦裡,我想要與他通訊交換檔案呢(醒醒吧,我沒有朋友)

於是最簡單的peer-to-peer模型出現了

 

兩端直接在Public Network中

朋友跟我說他的ip以及socket監聽的port,等待我與他建立了一條socket連線

接著就可以把今天的課堂筆記拷貝回家了

        +------>>------------------------+
        |                                |
        |                                |
     我的電腦                          朋友的電腦
75.129.48.33:50001                75.129.48.50:50001

於是本文寫到這邊就可以結束了XDD