2

Debian 6.0 サーバーのデプロイ時に実行されるこのデプロイ スクリプトを作成しました。以前にここで示しました (これは、他の誰かが疑問に思っている場合に備えて、linode スタック スクリプトです)。

#!/bin/bash
#
# Install PostgreSQL
#
# Copyright (c) 2010 Filip Wasilewski <en@ig.ma>.
#
# 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)

Filip のバージョンの上に構築されたこのスクリプトを使用してサーバーをデプロイしましたが、pg_ctl と入力して postgresql が実行されているかどうかを確認しようとすると、コマンドが見つかりませんと表示されます。

私はこれでどこで間違ったのですか?サーバーの実行時に展開されるため、どこで問題が発生しているのかわかりません。

4

1 に答える 1

0

人々が言うように、パスに PostgreSQL の bin ディレクトリがないようです。aptからのインストールでPostgreSQL 9.1/9.2を使用したUbuntuでの私の経験では、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その場合は、ログイン時にそれを実行する必要があります。

于 2012-12-14T15:13:23.627 に答える