PostgresQL启动脚本

Debina 7.5 / Ubuntu 14.04 Lts 测试通过

建议使用systemd进行管理,不要再使用init脚本了

#名字自己取
vim /etc/init.d/pgsql

写入如下内容:

#! /bin/sh

# chkconfig: 2345 98 02
# description: PostgreSQL RDBMS

# 安装路径
prefix=/usr/local/postgres
# 数据路径
PGDATA="/data/pgsql"
# 启动用户
PGUSER=pgsql
# log路径 一般不用改
PGLOG="$PGDATA/pgsql.log"

#OOM_SCORE_ADJ=-1000
#OOM_ADJ=-17


PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

DAEMON="$prefix/bin/postmaster"

PGCTL="$prefix/bin/pg_ctl"

set -e

test -x $DAEMON ||
{
    echo "$DAEMON not found"
    if [ "$1" = "stop" ]
    then exit 0
    else exit 5
    fi
}


case $1 in
  start)
    echo -n "Starting PostgreSQL: "
    test x"$OOM_SCORE_ADJ" != x && echo "$OOM_SCORE_ADJ" > /proc/self/oom_score_adj
    test x"$OOM_ADJ" != x && echo "$OOM_ADJ" > /proc/self/oom_adj
    su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
    echo "ok"
    ;;
  stop)
    echo -n "Stopping PostgreSQL: "
    su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast"
    echo "ok"
    ;;
  restart)
    echo -n "Restarting PostgreSQL: "
    su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast -w"
    test x"$OOM_SCORE_ADJ" != x && echo "$OOM_SCORE_ADJ" > /proc/self/oom_score_adj
    test x"$OOM_ADJ" != x && echo "$OOM_ADJ" > /proc/self/oom_adj
    su - $PGUSER -c "$DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1
    echo "ok"
    ;;
  reload)
        echo -n "Reload PostgreSQL: "
        su - $PGUSER -c "$PGCTL reload -D '$PGDATA' -s"
        echo "ok"
        ;;
  status)
    su - $PGUSER -c "$PGCTL status -D '$PGDATA'"
    ;;
  *)
    # Print help
    echo "Usage: $0 {start|stop|restart|reload|status}" 1>&2
    exit 1
    ;;
esac

exit 0
# 设置自启动
update-rc.d -f pgsql defaults

完成

编译安装PostgreSQL

以下操作以Ubuntu 14.04 Lts,PostgrSQL 9.3.4为准

第一步:获取postgresql安装文件 安装依赖包

wget http://ftp.postgresql.org/pub/source/v9.3.4/postgresql-9.3.4.tar.bz2
tar xvf postgresql-9.3.4.tar.bz2

aptitude install libreadline-dev -y

第二步:指定编译参数并安装

cd postgresql-9.3.4
./configure --prefix=/usr/local/pgsql
make && make install

第三步:创建相关用户及目录

groupadd pgsql
useradd pgsql -g pgsql -s /bin/bash

mkdir -p /opt/pgsqldata

chown -R pgsql:pgsql /opt/pgsqldata
chown -R pgsql:pgsql /usr/local/pgsql

第四步:初始化数据库并启动

su pgsql

/usr/local/pgsql/bin/initdb -D /opt/pgsqldata

/usr/local/pgsql/bin/pg_ctl -D /opt/pgsqldata -l /opt/pgsqldata/pgsql.log start

或者进行如下操作:

su - pgsql -c "/usr/local/pgsql/bin/pg_ctl -D /opt/pgsqldata > /opt/pgsqldata/pg.log 2>&1 &"

完成

花了点时间折腾了一下七牛云存储的一个基本上传逻辑,先放一下过些日子整理一个sdk出来

不得不再吐槽一下七牛,你真的是太可以了- -# 云存储做成你这样,也怪不容易的,好变态的接口啊

// CLI 模式下执行
<?php

error_reporting(E_ALL);


$localfile = __DIR__.'/do.png';

$access_key = 'n9fxNfp2oiHQJBR-kBJljkmNat9kAYO-Dg-oKgMP';
$secret_key = 'aaaaaaaa';

$token = Array();

// 定义参数
$bucket = 'cevin';

$filename = 'do.png';
$deadline = time()+3600;



// 组成Policy
$param = array(
    'scope' => "{$bucket}:{$filename}",
    'deadline' => $deadline
);
$param = json_encode($param);
$policy = safeEncode($param);

// 生成签名
$sign = hash_hmac('sha1',$policy,$secret_key,true);
$sign = safeEncode($sign);


// 生成上传凭证
$token['access_key'] = $access_key;
$token['sign'] = $sign;
$token['policy'] = $policy;
$token = implode(':',$token);


// 上传
$ch = curl_init();
curl_setopt_array($ch,array(
    CURLOPT_URL => 'http://up.qiniu.com',
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_POST => 1,
    CURLOPT_HTTPHEADER => array('Content-type: multipart/form-data'),
    CURLOPT_POSTFIELDS => array('token'=>$token,'file' => new CURLFile($localfile),'key' => $filename ),
));
$ret = curl_exec($ch);$info=curl_getinfo($ch);curl_close($ch);

echo $ret;


function safeEncode($str) {
    return str_replace(array('+','/'),array('-','_'),base64_encode($str));
}

补充一下,CURLFile在PHP5.5.x之后才提供的,之前的版本请使用 ‘file’ => ‘@filepath’