PIXNET Logo登入

zer931的部落格

跳到主文

歡迎光臨zer931在痞客邦的小天地

部落格全站分類:不設分類

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 8月 10 週五 201210:12
  • Git Server on Windows 安裝手記

Git Server on Windows 安裝手記
from http://huan-lin.blogspot.tw/2011/05/install-git-server-and-apache-on.html
這篇主要是記錄我在 Windows 平台安裝 Git 的過程。先描述一下作業需求:

  • 用戶端和伺服器端的作業系統都是 Windows。

  • 用戶端要能透過 HTTP 的方式存取版本庫。

  • 無論是取出檔案還是送交檔案,都需要驗證身分(輸入帳號密碼)。


  • 底下是安裝步驟:

    更新

  • 2012-04-04 :安裝畫面使用 v1.7.9 Preview 的畫面截圖,此版本仍然無法處理中文檔名。



  • Step 1: 安裝 Git for Windows
    在 Windows 環境使用 Git,可以用 msysgit (Git for Windows),我安裝的版本是 v1.7.9 Preview 的版本(Git-1.7.9-preview20120201.exe)。下面幾張圖片是安裝過程的畫面截圖。






    裝好之後,程式集裡面會多出一個選單:Git,裡面有兩個程式:Git GUI 和 Git Bash。前者是圖形操作介面,後者是命令列視窗。Git 的預設安裝目錄是 c:\Program Files\Git(64 位元作業系統則是 c:\Program Files (x86)\)。
    HTTP 存取
    由於我要讓用戶端可透過 HTTP 協定來存取版本庫,因此還要把 Git 安裝目錄下的 bin\libiconv2.dll 複製到安裝目錄下的 libexec\git-core\ 底下。少了這個動作,將來透過 HTTP 存取版本庫時,就會出現 HTTP 500 Internal Server Error 的訊息(這是安裝 v1.7.4 時碰到的情形,我不確定之後的版本是否還會如此)。如下圖所示:


    安裝完成後,為了讓 git 可以正確處理中文,還得設定一下 git 的全域參數。做法是開啟 Git Bash 命令列視窗:開始 > 程式集 > Git > Git Bash,然後輸入以下命令:
    $ git config --global gui.encoding utf-8
    Git 的全域組態檔的完整路徑檔名是 C:/Users/使用者帳戶名稱/.gitconfig。
    Step 2: 安裝 Apache HTTP Server
    欲提供 HTTP 的存取方式,可以利用 Apache HTTP Sever。我安裝的版本是 Apache 2.2.19(包含 OpenSSL)。
    安裝好 Apache 之後,修改組態檔 httpd.conf,令它使用 8080 port,以免和 IIS 搶 80 port。
    接下來,一樣是修改 httpd.conf。找到 <directory> 標籤,確認其設定如下:
    <directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Allow from all
    </directory>


    接著在 httpd.conf 的最後面加入以下文字:
    #Set this to the root folder containing your Git repositories.
    SetEnv GIT_PROJECT_ROOT D:/GitRepos

    # Set this to export all projects by default (by default,
    # git will only publish those repositories that contain a
    # file named “git-daemon-export-ok”
    SetEnv GIT_HTTP_EXPORT_ALL

    # Route specific URLS matching this regular expression to the git http server.
    ScriptAliasMatch \
    "(?x)^/(.*/(HEAD | \
    info/refs | \
    objects/(info/[^/]+ | \
    [0-9a-f]{2}/[0-9a-f]{38} | \
    pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
    git-(upload|receive)-pack))$" \
    "C:/Program Files/git/libexec/git-core/git-http-backend.exe/$1"

    <Location />
    AuthType Basic
    AuthName "GIT Repository"
    AuthUserFile "D:/GitRepos/htpasswd"
    Require valid-user
    </Location>

    其中第一道指令是告訴 Git 你的版本庫放在哪裡,第二道指令表示該目錄下的所有版本庫都可以透過 http(s) 的方式存取。第三道指令則是令 Apache 把 Git 相關 URL 導向給 Git 的 http 處理程式。注意:如果你的 Windows 作業系統是 64 位元,裡面的 C:/Program Files/.... 就要改一下。最後的 <Location> 區段設定了虛擬根路徑 "/" 的驗證規則,D:/GitRepos/htpassword 是帳號密碼檔。
     
    完成上述修改之後,重啟 Apache HTTP 服務。
    Note: 如果你希望將來透過遠端存取版本庫時,一律使用 http://my-server/git/* 開頭的 URL,則可將 ScriptAliasMatch 指令改為 "(?x)^/git/(.*/(HEAD | \ ......."
     
    Step 3: 建立版本儲存庫
     
    這裡先建立一個測試用的版本庫,以確認用戶端可以透過 HTTP 協定取出檔案。步驟如下:

    1. 開啟 Git Bash 命令列視窗:開始 > 程式集 > Git > Git Bash。

    2. 輸入以下命令,以建立一個空的版本庫('$' 符號是提示字元,不用輸入):
      $ cd D:/GitRepos
      $ git init MyProject

    參考下圖:
     

     


     

    此範例的 git init 命令會在 MyProject 目錄下建立一個名為「.git」的隱藏目錄,Git 用來管理版本所需的控制檔案全都放在這裡。MyProject 這個目錄本身則是工作目錄,你可以在此目錄下加入檔案或子目錄。

     

    Note: 在初次建立一個可讓多人共享的版本庫時,應該要使用 git init --bare 命令。加上 --bare 的參數,表示要建立「單純的」版本庫,也就是不含任何工作複本(working copy)檔案,而只包含版本控制相關的檔案。


    Note: 版本庫的根目錄(這裡是 D:\GitRepos)之下的第一層子目錄不必一定要建立成版本庫。我們也可以在其下建立單純的子目錄,然後在各個子目錄底下建立版本庫。例如: 


    D:\GitRepos

     +-- Projects

      +-- PrjA (版本庫)

      +-- PrjB (版本庫)

     +-- Notes

      +-- DotNet (版本庫)


    這樣的話,以後我們就可以用類似「http://my-server/Projects/PrjA」的網址來存取版本庫。


    Step 4: 取出版本庫
     
    比較正確的說法,是把版本庫複製(clone)一份回自己家裡(本機)。一樣開啟 Git Bash 視窗,切換到你打算存放本機版本庫的目錄,然後使用 git clone 把檔案庫拉回來。指令如下:
     
    $ cd d:/Work
    $ git clone http://localhost:8080/MyProject
     
    接著應該會要求你輸入帳號和密碼,若輸入正確,便可將本庫取回。參考下圖:
     

     
    使用 git clone 命令時,網址也可以包含使用者帳戶名稱,例如:
     
    $ git clone http://michael@localhost:8080/MyProject

    如果欲複製的遠端版本庫不是空的,Git 會先壓縮檔案再傳送,而且在螢幕上顯示壓縮的進度,如下圖:

     


    下一步
     
    後續的作業,就是在本機的工作目錄下進行日常的檔案修改與版本提交程序了。這部分的操作程序和指令,網路上已經可以找到很多參考資料,就不在此贅述。
    後記:我後來又整理了一篇<Git over HTTPS on Windows>,可以讓 Git(其實主要是 Apache)支援 HTTPS 協定。
     
    參考資料


    • Hosting a Git server under Apache on Windows by Jeremy Skinner

    • Git over http(s) (SSL and WebDAV) with Apache on Windows by Jürgen Bouché



    (繼續閱讀...)
    文章標籤

    zer931 發表在 痞客邦 留言(0) 人氣(269)

    • 個人分類:GIT Win
    ▲top
    • 8月 04 週六 201216:30
    • NO-IP 使用教學



    [分享] NO-IP 使用教學 


    from http://winter770531.pixnet.net/blog/post/9836356



    分享: MURMUR facebook PLURK twitter   


    架站前有些概念還是要先知道 不想知道的可以直接往下拉從 "本文開始" 開始看


    no-ip 使用時機大致上有以下兩點


    1.要架站(網頁主機 遊戲主機),沒有固定IP 每次都要給人家IP 很麻煩


    2.遠端遙控,遠地遙控家裡電腦,但是IP一直變,常常過一段時間就找不到了


    no-ip 是什麼?


    他提供免費的DNS服務


    DNS 是什麼?


    Domain Name System 領域名稱系統,簡單來說就是地址


    把IP想成GPS的經緯度,DNS就是地址 兩個代表的是同一個地方


    經緯度是一串數字不好記憶 地址是方便你記憶的文字


    DNS也是如此 IP不好記憶 DNS像是 im.nuk.edu.tw 比較好記憶!


    為什麼浮動IP要使用no-ip才能架站


    因為IP一直變動 使用者不方便找到正確的IP 正常來說 輸入網址找網站是這樣


    輸入DNS 然後 DNS server會告訴你真實的IP


    01.png 


    但是IP會變 每天都不一樣 就會變成這樣 找不到了....


    02.png 


    所以no-ip是透過這樣的架構來讓使用者可以藉由浮動IP架站 使用者也都找的到 不用擔心IP浮動變換


     03.png 




    本文開始


    1. no-ip 官方網站 http://www.no-ip.com/




    2.先辦新帳號 點選右邊 CreateAccount


    1.png 




    3.填妥基本資料 我只填以下的 就可以了


    4.png 




    4. 然後你的信箱會收到認證信 點紅框內網址開通你的帳號


    6.png  




    5.然後點選你所使用的系統 需要下載並安裝no-ip的程式 才能順利運作


    5.png 




    6. 在首頁 http://www.no-ip.com/ 登入你的帳戶 並選擇 Add a Host


    8.png 


    7. 輸入你想要的名子 然後後面綠框框選一個你看得順眼的 我是選 no-ip.org 


        這樣選好 以後你的網址就是 WinterWind.no-ip.org


    10.png 




    8. 然後你就會看到設定成功了


    11.png 




    9. 再來安裝剛剛5步驟下載的程式 安裝完後輸入帳號密碼 剛剛申請的那組


    13.png 




    10. 等他變成笑臉 然後按 Option


    14.png  




    11. 把這個打勾 用意在 " 每次變換位置的時候 告訴主機你真實位置在哪裡 " 


     16.png 




    12. 完成了 :D 


    以後你只要輸入 xxxxx.no-ip.org 就會找的到你的主機了


    但是!!


    你家裡有用分享器的話那還沒結束 還要設定一個東西 叫做 DMZ


    為什麼有用分享器就要設定DMZ?


    因為人家找到的是你的分享器 而不知道是分享器裡面的 "哪一台電腦" !


    使用者A找到了你的IP 叫做111.254.111.111


    但是 分享器上面並沒有任何服務 所以使用者A找不到網站


    即使分享器內的使用者B已經把網站架好了!


    04.png 


    設定過後變成


    使用者A 找到了111.254.111.111 再連去 使用者B 192.168.0.113


    然後就成功建立連線了!


     05.png




    如何設定DMZ?


    先進去你家的分享器 通常是 192.168.0.1 或是 192.168.10.1 看各廠牌


    然後找到這個 上面IP位址要填甚麼呢?


    開始 > 執行 輸入 cmd 再輸入 ipconfig 然後就會出現以下黑色那個視窗


    上面ipv4就是我現在電腦被分享器分配的位址


    請記得 按 啟動! 然後 執行 


    這樣就設定完了 :D


    17.png


     


    有錯請指正 或是有問題的可以提出來討論 :D


    最近剛好有研究到這個問題 所以覺得DMZ還挺重要的


    當然還有防火牆 要去調整 不然有時後會被防火牆濾掉!!






    您可能會有興趣的文章



    • 動態 IP 如何架站

    • 動態 IP 如何架站

    • DrayTek Vigor2104 IP分享器

    • 3.5G 寬頻完全分享:四 、分享器選購





    Winter770531 發表在 痞客邦 PIXNET 留言(12) 引用(0) 人氣(12093)


    E-mail轉寄 轉寄至留言板




     

    需要多少英雄才夠拯救世界? 雪紡X冰沙穿搭元素正夯





    • 全站分類:數位生活

    • 個人分類:分享

    • 此分類上一篇: [分享] 筆電透過藍芽連線iPhone使用3G上網

    • 上一篇: [高雄] 自然之島 下午茶 鬆餅套餐

    • 下一篇: [高雄] 老宋牛肉麵


    ▲top



    (繼續閱讀...)
    文章標籤

    zer931 發表在 痞客邦 留言(1) 人氣(4,493)

    • 個人分類:Winodws
    ▲top
    • 8月 04 週六 201216:27
    • [Win7]WIN7讀不到XP 分享的檔案 該如何設定呢???

    [Win7]WIN7讀不到XP 分享的檔案 該如何設定呢???
    xp的guest沒有開放出來
    只要開放就可以讀取了
    資源分享GUEST權限的帳號(WIN XP→WIN XP)
    1. 在「我的電腦」上按滑鼠右鍵,顯示功能表 → 「管理」對話框。
    2. 進入「電腦管理」 → 「本機使用者和群組」 → 「使用者」 → 右邊視窗的「Guest」帳戶按滑鼠右鍵 → 「內容」對話框。
    3. 點選【一般】標籤 → 開啟Guest帳號,將「帳戶已停用」設為「不勾選」狀態 → 按「確定」...
    (繼續閱讀...)
    文章標籤

    zer931 發表在 痞客邦 留言(0) 人氣(356)

    • 個人分類:Winodws
    ▲top
    • 8月 04 週六 201216:25
    • VMware 的 Bridged, Host-only 和 NAT 網路型態

    VMware 的 Bridged, Host-only 和 NAT 網路型態
     from http://softsmith.blogspot.tw/2008/02/vmware-bridgedhost-only-nat.html
    VMware Player 的 host OS 和 guest OS 之間有三種網路型態:
    Bridged Networking
    在這種網路型態之下,guest OS 是透過一個 virtual bridge 和 host OS 所在的 Ethernet 相連,請參考 VMware 的官方 示意圖。
    對 於與 host OS 同在一個 Ethernet 上的機器來說,guest OS 和 host OS 是兩台獨立的電腦,都可以透過同一個 Ethernet 介面連接,並無法分辨出這兩個 OS 其實是在同一台機器上執行。甚至當 Ethernet 連線出問題時,guest OS 和 host OS 也不能互通 (即使是在同一台機器之內)。
    換句話說,當你把接到 host OS 的網路線拔掉時,這兩個 OS 就無法溝通。因此,想把 VMware Player 灌在 notebook 上帶著跑的人,這種網路型態是不太合適的。
    Host-Only Networking
    在 這種網路型態之下,guest OS 和 host OS 是在一個與世隔絕的虛擬網路上。此虛擬網路有一個 DHCP server,可以分配 IP address 給 guest OS 和 host OS (分配給一個虛擬的介面)。因此,guest OS 和 host OS 可以互通。請參考 VMware 的官方 示意圖。
    對 於與 host OS 同在一個 Ethernet 上的機器來說,guest OS 是看不見的。guest OS 對外聯繫的唯一管道就是 host OS。因此,guest OS 若想連上外部網路或 Internet,就必須在 host OS 安裝 routing 或 NAT 的服務。
    這種架構不會受到實體網路的影響,即使把網路線拔掉,host OS 和 guest OS 還是可以互通。
    Network Address Translation (NAT)
    此種網路型態與 host-only networking 的架構很像,但是在虛擬網路上多了一台 NAT router。請參考 VMware 的官方 示意圖。
    因為有了這台虛擬的 NAT router,guest 雖然與外界隔離,但仍然可以很方便地透過連接在 host OS 的網路連接 Internet。
    這種架構也不會受到實體網路的影響,即使把網路線拔掉,host OS 和 guest OS 還是可以互通。若連接到 host OS 的 Internet 連線沒有問題,guest OS 也一樣可以連接到 Internet。
    (繼續閱讀...)
    文章標籤

    zer931 發表在 痞客邦 留言(0) 人氣(3,979)

    • 個人分類:VMWare
    ▲top
    • 8月 04 週六 201216:23
    • [經驗分享] 你用 VMware Workstation + Ubuntu + Bridged Mode,無法連上網路嗎

    VMware-Ubuntu Disconnected
     
    [經驗分享] 你用 VMware Workstation + Ubuntu + Bridged Mode,無法連上網路嗎?
     from http://teacherchi.blogspot.tw/2012/02/vmware-workstation-ubuntu-bridged-mode.html
    (繼續閱讀...)
    文章標籤

    zer931 發表在 痞客邦 留言(0) 人氣(971)

    • 個人分類:VMWare
    ▲top
    • 8月 04 週六 201216:21
    • VMWare Workstation 安裝介紹

    SETP 1
     
    from http://lancer2001.myweb.hinet.net/Skill/Skill-2.html
    VMWare Workstation是非常好用的虛擬作業系統軟體,可在主要平台上安裝不同的作業系統並隨時切換,
    (繼續閱讀...)
    文章標籤

    zer931 發表在 痞客邦 留言(0) 人氣(442)

    • 個人分類:VMWare
    ▲top
    • 7月 25 週三 201210:35
    • C/C++之指標 (pointer),參考 (reference) 觀念整理與常見問題


    C/C++之指標 (pointer),參考 (reference) 觀念整理與常見問題
    from http://sandwichc-life.blogspot.tw/2007/10/cc-pointer-reference.html
     
    (繼續閱讀...)
    文章標籤

    zer931 發表在 痞客邦 留言(1) 人氣(3,647)

    • 個人分類:C++
    ▲top
    • 7月 25 週三 201209:14
    • Accelerometer / 加速器 / 重力控制器 / 水平儀的基本使用方法


    Accelerometer / 加速器 / 重力控制器 / 水平儀的基本使用方法
    From: http://furnacedigital.blogspot.tw/2010/11/accelerometer.html
     

     

     

    Accelerometer Sensor 感應器的基本使用方法,首先必須先在 ViewCotroller.h 中設定代理。設定代理之後才能正常使設定與取得 Accelerometer Sensor 的相關參數,其程式碼如下所示。(View-based Template)












    1



    @interfaceAccelerometerViewController :UIViewController<UIAccelerometerDelegate> {






    首先設定 Accelerometer Sensor 的偵測頻率。










    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11



    - (void)viewDidLoad {

        [superviewDidLoad];

     

        UIAccelerometer*theAccel = [UIAccelerometersharedAccelerometer];

     

        //設定偵測頻率每秒10次

        theAccel.updateInterval =1.0f/10.0f;

     

        //設定委派對象給自己(ViewController)

        theAccel.delegate =self;

    }






    接下來從 Accelerometer Sensor 中取得相關參數。













    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12



    //啟用Accelerometer Sensor

    - (void) accelerometer:(UIAccelerometer*) meter didAccelerate: (UIAcceleration*) accel {

     

        //將Accelerometer Sensor XYZ軸的數值正規化之後傳至的Label上

        xLabel.text = [NSStringstringWithFormat:@"%8f", accel.x];

        yLabel.text = [NSStringstringWithFormat:@"%8f", accel.y];

        zLabel.text = [NSStringstringWithFormat:@"%8f", accel.z];

     

        //將Accelerometer Sensor XYZ軸的數值正規化後傳至Progress View上

        xAxis.progress =ABS(accel.x);

        yAxis.progress =ABS(accel.y);

        zAxis.progress =ABS(accel.z);






    程式碼到這裡已經可以取得 Accelerometer Sensor X、Y、Z 軸的數值。下列程式碼將利用 iOS SDK 內建的功能取得 Device 目前的擺設狀況。












    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40



        //宣告一個UIDevice指標,並取得目前Device的狀況

        UIDevice*device = [UIDevicecurrentDevice] ;

     

        //取得當前Device的方向,來當作判斷敘述。(Device的方向型態為Integer)

        switch(device.orientation) {

            caseUIDeviceOrientationFaceUp:

                orientationLabel.text =@"螢幕朝上平躺";

                break;

     

            caseUIDeviceOrientationFaceDown:

                orientationLabel.text =@"螢幕朝下平躺";

                break;

     

            //系統無法判斷目前Device的方向,有可能是斜置

            caseUIDeviceOrientationUnknown:

                orientationLabel.text =@"未知方向";

                break;

     

            caseUIDeviceOrientationLandscapeLeft:

                orientationLabel.text =@"螢幕向左橫置";

                break;

     

            caseUIDeviceOrientationLandscapeRight:

                orientationLabel.text =@"螢幕向右橫置";

                break;

     

            caseUIDeviceOrientationPortrait:

                orientationLabel.text =@"螢幕直立";

                break;

     

            caseUIDeviceOrientationPortraitUpsideDown:

                orientationLabel.text =@"螢幕直立,上下顛倒";

                break;

     

            default:

                orientationLabel.text =@"無法辨識";

                break;

        }

     

    }








     

     


    (繼續閱讀...)
    文章標籤

    zer931 發表在 痞客邦 留言(0) 人氣(265)

    • 個人分類:技巧篇
    ▲top
    • 7月 21 週六 201215:38
    • CCSpeed in cocos2D

    The CCSpeed action modifies the duration of the inner action.










    1 id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];










    2 id action = [CCSpeed actionWithAction: move speed:1.0f];   // no speed modification










    3  










    4 // but you can modify the speed later










    5 [action setSpeed: 2.5f]; // speed is 2.5 faster










    6  










    7 [action setSpeed: 0.5f]; // speed is 0.5 faster (it means 2 times slower)



    (繼續閱讀...)
    文章標籤

    zer931 發表在 痞客邦 留言(0) 人氣(24)

    • 個人分類:基本概念
    ▲top
    • 7月 13 週五 201212:46
    • ios delegate你必須知道的事情


    ios delegate你必須知道的事情
    From http://popcornylu.blogspot.tw/2011/07/delegate.html
     
    (繼續閱讀...)
    文章標籤

    zer931 發表在 痞客邦 留言(0) 人氣(60)

    • 個人分類:基本概念
    ▲top
    «1...78910»

    個人資訊

    zer931
    暱稱:
    zer931
    分類:
    不設分類
    好友:
    累積中
    地區:

    熱門文章

    • (4,556)[Oracle] Cursor 與 Cursor Variable 的使用
    • (263)取得指南針 / 羅盤 / Magnetometer 數值的方法
    • (3,979)VMware 的 Bridged, Host-only 和 NAT 網路型態
    • (4,493) NO-IP 使用教學
    • (247)搭建 Windows 上 Apache + Git 服务器
    • (141)NSArray與NSMutableArray與NSMutableDictionary
    • (7,042)C/C++ 箭頭(->) 、點(.)、雙冒號(::) 用法
    • (314)iOS 開發筆記 - 國曆轉農曆計算

    文章分類

    toggle GIT (3)
    • GIT MAC (1)
    • GIT Linux (2)
    • GIT Win (9)
    toggle PHP (3)
    • Server 設定 (4)
    • 程式技巧篇 (4)
    • PDO (1)
    toggle COCOS2D (2)
    • BOX2D (2)
    • 基本概念 (21)
    toggle IOS (4)
    • PUSH SERVER (2)
    • 基本概念 (21)
    • DataBase (3)
    • 技巧篇 (20)
    • VMWare (3)
    • Winodws (2)
    • C++ (2)
    • ORACLE (2)
    • 未分類文章 (1)

    最新文章

    • PHP.INI 打開DeBug模式
    • [JavaScript]null & undefined
    • 使用PDO時 產生 Zend Debugger Socket link error
    • phpMyAdmin sql query that uses parameters
    • PDO 介紹範例網址
    • genstrings across 多元路徑 Localizable
    • 實作 TableView Section 展開/收合
    • 分享一个搭建php版push服务器的流程
    • Push pem文件生成步骤
    • mac eclipse 設定php debugger

    動態訂閱

    文章精選

    文章搜尋

    誰來我家

    參觀人氣

    • 本日人氣:
    • 累積人氣: