2012-12-05 150 views
2

我構建了這個部署腳本,該腳本在部署了我的debian 6.0服務器時運行。我在這裏顯示它之前(這是一個的Linode stackscript櫃面任何人想知道):安裝PostgreSQL的Bash腳本 - 失敗

#!/bin/bash 
# 
# Install PostgreSQL 
# 
# Copyright (c) 2010 Filip Wasilewski <[email protected]>. 
# 
# My ref: http://www.linode.com/?r=aadfce9845055011e00f0c6c9a5c01158c452deb 

function postgresql_install { 
    aptitude -y install postgresql postgresql-contrib postgresql-dev libpq-dev 
} 

function postgresql_create_user { 
    # postgresql_create_user(username, password) 
    if [ -z "$1" ]; then 
     echo "postgresql_create_user() requires username as the first argument" 
     return 1; 
    fi 
    if [ -z "$2" ]; then 
     echo "postgresql_create_user() requires a password as the second argument" 
     return 1; 
    fi 

    echo "CREATE ROLE $1 WITH LOGIN ENCRYPTED PASSWORD '$2';" | sudo -i -u postgres psql 
} 

function postgresql_create_database { 
    # postgresql_create_database(dbname, owner) 
    if [ -z "$1" ]; then 
     echo "postgresql_create_database() requires database name as the first argument" 
     return 1; 
    fi 
    if [ -z "$2" ]; then 
     echo "postgresql_create_database() requires an owner username as the second argument" 
     return 1; 
    fi 

    sudo -i -u postgres createdb --owner=$2 $1 
} 

postgresql_install 
postgresql_create_user(username, password) 
postgresql_create_database(dbname, username) 

我部署我的服務器使用此腳本,這是建立在菲利普的版本之上,但後來當我嘗試看看如果postgresql通過鍵入pg_ctl運行,它說沒有找到命令。

我在哪裏弄錯了?由於它在服務器運行時部署,我無法看到它出錯的地方。

+1

執行,在登錄你確定你有'在'PATH' psql'和'createdb'?你真的應該在這種腳本中使用完整路徑。 –

+0

我實際上並不知道「路徑」。什麼是我的完整路徑,指向我的postgresql安裝? – Jimmy

+0

我不確定他們會在哪裏,試着說一下機器上的哪個psql,它已經正確安裝並可以訪問。 –

回答

0

正如人們所說,它看起來像你的路徑上沒有PostgreSQL bin目錄。在從易安裝我在Ubuntu經驗的PostgreSQL 9.1/9.2,創建postgres用戶,但它並沒有正確設置你的環境,讓pg_ctlinitdb等不在你PATH

我不能看到你使用的是什麼版本的PostgreSQL,但我的9.1 & 9.2實例存儲在/usr/lib/postgresql/9.2/bin

檢查二進制文件,看目錄,如果它包含pg_ctl和其他二進制文件。如果是這樣,

試運行:

export PATH=$PATH:/usr/lib/postgresql/9.2/bin 

,看看是否允許您運行pg_ctl。如果是這樣,你需要從.bashrc或類似