星期五, 七月 13, 2007

Debian Linux 架設 PostgreSQL + PhpPgAdmin

紀錄在 Debian Linux 上安裝 PostgreSQL 和 phppgadmin 的設定和過程~ :)

安裝 postgresql 

  • apt-get install postgresql # 照理說這樣子 Postgre SQL 就已經裝好了.

測試看看 PosrgreSQL 基本操作:

  1. sudo -u postgres psql template1 # 要用 postgres 的身份執行才可以
  2. template1=# create user PG_USER with password 'PASSWORD' createdb createuser; # 建立新帳號/密碼
  3. template1=# alter user postgres with password 'PASSWORD'; # 修改postgres的密碼
  4. template1=# \q # 離開
  5. PS: 於此處下的指令, 都會存在 /var/lib/postgresql/.psql_history 這個檔案裡.

再來來架設 phppgadmin:

  1. 安裝 phppgadmin
  2. apt-get install phppgadmin libapache2-mod-php5 
  3. 將 /phppgadmin 指到 phppgadmin 預設安裝路徑(/usr/share/phppgadmin), 採用 package 寫好的 conf 檔
  4. ln -s /etc/phppgadmin/apache.conf /etc/apache2/sites-enabled/001-phppgadmin
  5. 修改權限設定, 預設只讓本機自己存取, 改成都先不限.
  6. vim /etc/phppgadmin/apache.conf
  7. 將下述
    allow from 127.0.0.0/255.0.0.0
    # allow from all
  8. 改成
    #allow from 127.0.0.0/255.0.0.0
    allow from all
  9. /etc/init.d/apache2 reload
  10. 這樣子就完工囉!!

phppgadmin 預設是不讓 postgres 登入, 所以最好要先 create 一個 user 再登入使用.

  1. 如果想要讓 postgres 登入, 一定要先修改 postgres 的密碼(postgres 的密碼不能為空)
  2. vim /etc/phppgadmin/config.inc.php
  3. 修改 $conf['extra_login_security'] = true;
  4. 變成 $conf['extra_login_security'] = false;
  5. 這樣子就可以用 postgres 登入.

 預設 PostgreSQL data 儲存路徑: /var/lib/postgresql/8.2/main, 修改成自定的路徑:

  1. mkdir -p /var/postgresql/data
  2. chown -R postgres:postgres /var/postgresql/
  3. sudo su - postgres # 轉換成 postgres 的身份
  4. vim ~/.bashrc # 設定環境參數, 將下述寫入 .bashrc 檔最下面即可
  5. export POSTGRE_HOME=/usr/lib/postgresql/8.2
  6. export PGLIB=$POSTGRE_HOME/lib
  7. export PGDATA=/var/postgresql/data
  8. export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":"$PGLIB"
  9. export PATH=$PATH:$POSTGRE_HOME/bin
  10. source ~/.bashrc
  11. initdb --pgdata=/var/postgresql/data
  12. 啟動 DB:(下述二者挑其一即可)
  13. pg_ctl -D /var/postgresql/data -l logfile start
  14. postgres -D /var/postgresql/data

參考:

«上一篇   1 2

相關標籤

this is comment icon 回 KitshiNg [回覆]

厄... 從另一個觀點看, 這也是好事嘛~ DB 本來就不該停掉的... XDDDDDD

這... 就先這樣子吧. XDDD

我手邊現在也沒有 postgresql 的機器可以測~ 反正能跑最重要 :P

Comment by Tsung (09/14/2007 09:35)

this is comment icon 問Tsung - 有關 PostgreSQL 支援中文問題 [回覆]

今天我想寫一個 php page 是把 .csv import 寫入 Postgresql 8.1.9 ( on Debian 4.0) ( 用的是 Apache2 PHP 5 ) 在 windows 寫好了 php page 後,放去 Apache 執行 開了 Firefox on windows,匯入一個 .csv 這個.csv 是包含 英文,中文,數字 例: kitshing,香港,24680 但看看 PostgreSQL 的時候,中文亂了 試過用建立 EUC_TW, UTF8 的 database 都不行, 會不會是我的 php 寫錯了呢 ? //----- PHP Code 的寫入 Database 部份 ------------------------- @ $db = pg_connect("host=localhost port=5432 dbname=testdb user=pg_admin password=123456") or die("Could not connect to database."); pg_client_encoding($db); //insert into table "index",get data with array data[] from CSV file $sql = "insert into index values ('".$data[0]."','".$data[1]."','".$data[2]."')"; $result = pg_query($db, $sql); //------------------------------------------------
Comment by KitshiNg (10/02/2007 14:13)

this is comment icon 回 KitshiNg [回覆]

jon

pg_client_encoding($db);

Comment by Tsung (10/02/2007 16:06)

this is comment icon 回 Tsung [回覆]

http://hk.php.net/manual/hk/function.pg-client-encoding.php

望真一點...好像解釋是只回饋出一個 Client 用的 encoding, 用錯了=.=..Sorry

但我想問問,是否用 array 儲存中文會發生問題的呢
我用 fgetcsv() 拿 csv 的資料出來時,出來的 array 甚麼都沒找到
但我用 fgets() 拿 csv 的資料出來時,出來的中文字是沒問題的
但如果再放把這些出來沒問題的中文字,分段放進去 array 中,
最後再將這個 array output 出來,但又是沒有東西在裡面。

(因為我需要把一些 csv 檔,用 php 把它全部寫入到 PostgreSQL 中 ,途中需要做一些加減的計算才寫到 postgreSQL )

發生甚麼是呢 ?
(( 請原諒我的打擾 ))

Comment by KitshiNg (10/02/2007 17:54)

this is comment icon 回 KitshiNg [回覆]

所以你主要是要處理 csv 檔, 並不需要 PostgreSQL 吧?

處理 csv 檔, 我沒用過 fgetcsv 耶, 我都是 fgets, 再用 split 去切.

php array 存 array 是不會有問題的, 我想是不是你寫法上有問題呢?

還是你要把程式放在某個地方, 讓我看一下? 或寄給我看看?

Comment by Tsung (10/02/2007 18:06)

this is comment icon 回 Tsung [回覆]

我是用 fgets ,再用 strtok 去切開的

對。主要只是要處理 csv 檔, 然後要儲存到 PostgreSQL 裡。

好吧,我隔幾日把這個檔案寄給你吧。
( 因為這個檔案遺留了別處 :p )

Comment by KitshiNg (10/02/2007 23:11)

this is comment icon 回 KitshiNg [回覆]

我猜 csv 檔應該是 big5, 你有沒有先轉成 UTF-8 再存進 PostgreSQL 呢?

Comment by Tsung (10/03/2007 09:31)

this is comment icon 回 Tsung [回覆]

我記憶中...
我建立了 utf8 的 PostgreSQL database 後
用 phppgadmin 進入,編輯一個記錄,把記錄改成中文字體。
儲存後,發現亂碼了
但用 EUC_TW 的 database 就沒有亂碼了。

但無論是哪個,我用 csv 檔存進去都是亂碼

* 如何把 csv 轉成 utf-8 再存進去呢..@@?
* 遲幾天寄個處理 csv 的檔給你看看有沒有問題 :)

Comment by Kitshing (10/05/2007 02:47)

this is comment icon 回Kitshing [回覆]

mb_convert_encoding($var, 'UTF-8', 'cp950');
用這個就可以了 :)

Comment by Tsung (10/05/2007 09:36)

this is comment icon 為什麼我的postgresql.conf沒有tcpip.socket選項? [回覆]

hi,dear:
為什麼我的postgresql.conf沒有tcpip.socket選項?
無法開啟tcpip訪問?

Comment by 果冻 (09/11/2008 21:29)

this is comment icon 回 果冻 [回覆]

我有寫到這個嗎? @.@a..
通常如果沒有選項, 那自己加進去應該還是可以動的, 試試看?

Comment by Tsung (09/11/2008 21:38)
«上一篇   1 2
Add this page to del.icio.us

發表迴響

標題

內容 (限制 1000 字)

暱稱

電子郵件

個人網頁


 authimage


PS: 若無法留言, 請先確認是否有打開 JavaScript, 造成您的困擾, 實在萬分對不起 Orz...(如果無法留言, 勞煩可以發信給我好嗎? 謝謝.)
PS2: 若您的留言被誤判, 我都會再自行看過, 不需要一直重覆張貼~