用于安装PostgreSQL的Bash脚本 - 失败

时间:2012-12-05 22:15:49

标签: sql bash postgresql shell debian

我构建了部署脚本,该脚本在部署debian 6.0服务器时运行。我之前已经在这里展示过(这是其他人想知道的linode stackscript):

#!/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是否正在运行时,它表示找不到命令。

我在哪里弄错了?由于它在服务器运行时部署,我无法看到它出错的地方。

1 个答案:

答案 0 :(得分:0)

正如人们所说,你的路径上看起来没有PostgreSQL bin目录。根据我从apt安装PostgreSQL 9.1 / 9.2的Ubuntu体验,创建了postgres用户,但是它没有正确设置你的环境,所以pg_ctlinitdb等不在你的{{{ 1}}。

我看不出你正在使用的PostgreSQL版本,但是我的9.1&amp; 9.2实例将二进制文件存储在PATH

检查该目录以查看它是否包含pg_ctl和其他二进制文件。如果是的话,

尝试跑步:

/usr/lib/postgresql/9.2/bin

并查看是否允许您运行export PATH=$PATH:/usr/lib/postgresql/9.2/bin 。如果是这样,您需要在登录时从pg_ctl或类似的

执行该操作