教學系列
- Install PostgreSQL 7.3.3 on Windows XP (Ⅰ)
- Install PostgreSQL 7.3.3 on Windows XP (Ⅱ)
- Install PostgreSQL 7.3.3 on Windows XP (Ⅲ)
- Install PostgreSQL 7.3.3 on Windows XP (Ⅳ)
- Install PostgreSQL 7.3.3 on Windows XP (Ⅴ)(本篇)
正文
之前要使用 PostgreSQL 的話必須要開啟 cygwin 的視窗來執行,但現在我們可以把它設成 Windows XP 的服務,一開機時就啟動,這樣一來除了不用開視窗外,我們也無須手動來啟動服務。
在 cygwin 執行下列指令:
$ ipc-daemon --install-as-service
$ cygrunsrv --install Postmaster --path /usr/local/pgsql/bin/postmaster
--args "-D /usr/local/pgsql/data -i" --dep ipc-daemon --termsig INT
--user "your_name" --shutdown
其中的 --user
後面填的是你安裝 cygwin 時的帳號名字,也就是具有系統管理者權限的帳號。輸入完後鍵入兩次密碼:
設定完成後你可以在「控制台->系統管理工具->服務」中看到兩個新增的服務:Cygwin IPC Daemon 和 Postmaster,其中後者需要前者已啟動後才能啟動,也就是說它們有相依性。雖然已經新增好了,但這不代表高枕無憂了。事實上我們還需要做一些事情才算真正完成,如果不做下列步驟的話,這兩個服務永遠不會啟動。
首先在 cygwin 的視窗中執行:
$ cp /usr/bin/cygwin1.dll /usr/local/bin
當然你也可以直接在 windows 檔案總管中來複製。這樣的目的是為了 Cygwin IPC Daemon 服務能夠順利啟動。
第二步,把 C:\cygwin\usr\local\pgsql\lib\pq.dll
複製到 C:\windows
系統目錄下。如果你要複製到 C:\windows\system32
底下的話我想應該也可以,不過我並沒有實地測試過這樣是否可行。這個步驟是要讓 Postmaster 服務找得到 dll 檔來啟動,但是即使啟動了也會在中途結束掉,因為檔案存取權限的問題,導致服務無法順利開啟。所以第三步就是要更改檔案權限,在 cygwin 中執行:
$ chown "your_name" /var/log/postmaster.log
把 log 檔的 owner 改成 cygwin 的 root,也就是之前所說的具有系統管理者權限的帳號。
做完以上步驟,那麼以後開機時 PostgreSQL 將會自動執行為 Windows XP 的服務,我們也就不用每次都要開啟 cygwin 來手工操作。我之前是在「開始->所有程式->啟動」中加入 cygwin 的捷徑,並且在 ~/.bashrc
下寫一個簡單的 shell script 來自動設定和執行 PostgreSQL。這樣雖然我不用在開機完後點選 cygwin 來啟動,但是仍然會多一個視窗在那裡礙眼。現在,我們可以不用忍受多出來的視窗了。
另外,如果你的電腦當機或重開機之後,你發現 Postmaster 服務並沒有順利啟動的話,找看看 C:\cygwin\usr\local\pgsql\data\postmaster.pid
是否存在。如果是,那麼就將它刪除,然後再啟動 Postmaster 一次,這樣應該就沒問題了。如果不是的話,那麼你可以看一下 /var/log/postmaster.log
中說了些什麼,也許可以找到問題的源頭。
想知道有多少資料庫連線正在使用中,或者是想知道服務是否已經啟動,但又不想從控制台的系統管理工具來點選服務的話,你可以在 cygwin 視窗中輸入:
$ ps
這樣會顯示出目前 cygwin 中使用的工作排程。若是你發現資料庫存取或寫入資料的部份突然有了問題,也可以來這樣看看是否已有過多的連線在使用中而沒有釋放,使得連線數用完而導致存取資料庫錯誤的問題。